SG400 - Notes and Resources
Text: Writing Compilers and
Interpreters, 2nd Edition, Ronald Mak, Wiley, 1996, ISBN: 0-
471-11353-0
General Hacker
Stuff
The
Jargon File
This is the place to go to learn 'hacker-speak' if you're so
inclined. There's also a print version but the online one is
updated more frequently.
IBM
DeveloperWorks - A great resource for developers, with
articles, tutorials and links to software.
Object-Orientation
Tips - A neat page with a ton of information about OOP
Guru
of the Week - a
regular series of C++ programming problems created and written by Herb
Sutter.
O'Reilly.Net
- An excellent source of programming tips/tricks/articles for just
about every platform you can think of.
Dr. Dobbs -
If you're planning on being a professional software developer, this is
a magazine you need to know about - plenty of great articles and
tutorials. (I recommend subscribing, but you can get a lot of
the content from their Web site if you prefer.) In continuous
publication since 1976, this is possibly the most long-lived computer
publication ever.
Top-Coder.com
- If you're interested in showing your stuff, here's a
place where programmers get together and compete in coding contests
online.
Course-Related
Links
The Lex
and Yacc Page - A good overview of tools to create compilers.
Lex
and Yacc Primer - Just what it suggests, an introduction to
these
two powerful utilities.
Eli:
An Integrated Toolset for Compiler Construction - A
combination of
several powerful tools, Eli lets you concentrate of designing your
compiler or interpreter rather than get stuck grovelling through
low-level code.
Finite
State Machine - From the NIST, an overview of finite state
machines, used in many compilers.
Regular
Expressions - A Wikipedia article with good detail about
creating and parsing regular expressions.
Grail:
Finite Automata and Regular Expressions - a software tool for
manipulating you-know-what.
Lua - The
home page for the Lua embedded scripting language, a popular
choice for game scripting.
CPG - An IDE for creating parsers. It has both IDE and command line controls.
Yaccviso - A tool to visualize yacc and bison grammars. It generates a .dot or .vcg file you can use with GraphViz.
Regular Expression Graphing Program - Just what it says. Give it a regular expression and it will generate a
graph of the state machine representing that expression. (This is one of your project deliverables.)
Tools
CuteWriter
- A free PDF convertor for Windows. It lets
you create PDF files from any Windows application that can print.
Very useful for creating cross-platform documents.
Dia
- a free, cross-platform technical drawing tool. (This site
only supplies the Windows version.)
OpenOffice.org-
The OpenOffice.org project is producing a free, open-source competitor
to Microsoft Office. OpenOffice.org can read and write
Microsoft Office files and has database and drawing tools as well.
Bonus features: built-in export to PDF and the ability to
export presentation files to Flash format.
Essays on
Programming and the Profession
How
to Interview a Programmer - This is an discussion with
several industry veterans about techniques they use to find the best
qualified programmers for a project.
The
Lost Art of Computer Programming - An intriguing page of
essays by a professional programmer who became one "by accident".
How to
Think Like a Computer Scientist - A book that attempts to
live up to its title. The language used is Python but the lessons are
easily applied to other programming languages.
How
to Write Unmaintainable Code - This tongue-in-cheek essay is
a guide to writing maintainable code and is an amusing and informative
read.
Deleting
Code - A deceptively simple essay on what to do with code
you're no longer using. (It's more subtle than you may think. A
recommended read. )
The
Pragmatic Programmer - Homepage of the book of the same name,
this site also contains excerpts from the book as well as essays from
the authors on the profession. Highly recommended.
The
Tao of Programming - A well-done, tongue-in-cheek look at
computer programming in terms of Eastern mysticism.
Quotes
on Program Development - Like the title says....
Code
and Personality - How to tell what kind of person you are
from looking at your code.
Problem-Solving
Strategies - Not specifically about programming, but a good
set of rules-of-thumb for dealing with technical problems.
How
to Be a Programmer - This is a link to a 230 KB PDF file that
summarizes the technical and non-technical things that the author (a
Ph.D in Computer Science and professional programmer with 20 years of
experience) wishes someone had explained to him at the beginning of his
career. Good, clear writing with useful real-world tips.
Don't
Live with Broken Windows - An interview by a pair of
professional programmers (The authors of "The Pragmatic Programmer"
seen above) about "software craftsmanship and the importance of fixing
the small problems in your code, the 'broken windows,' so they don't
grow into large problems. " This is Part 1 of a ten part series.
Orthogonality
and the DRY Principle - Part 2 of the series - Andrew Hunt
and Dave Thomas continue with their thoughts on program design. (Note:
DRY stands for Don't Repeat Yourself)
Good
Enough Software - Part 3 in the series - This interview is
about "the myth of bug-free software".
Abstraction
and Detail - Part 4 in the series - This interview discusses
what the authors mean when they say "Put abstractions in code, details
in metadata."
Building
Adaptable Systems - Part 5 in the series - Reversible design
decisions, making systems configurable
Programming
Close to the Domain - Part 6 in the series - The benefits of
coding in a language related to the business domain.
Programming
is Gardening, Not Engineering - Part 7 in the series - The
reasons coding is not a purely mechanical process
Tracer
Bullets and Prototypes - Part 8 in the series - The
importance of getting feedback during the development process
Programming
Defensively - Part 9 in the series - Programming defensively
against your own and other's mistakes.
Organizations/Projects
Mozilla
- The Mozilla project is producing the next-generation Web platform.
Virtual Network
Computing - Remote desktop software similar to PC-Anywhere,
except it runs on every platform you can name and it's free.
General Resources
ComputerWorld
- If you want to see how computers are really used in real businesses,
this is a good source. Essentially an offshoot of Computerworld
magazine (available as a free subscription if you can convince them
that you influence buying decisions where you work) , this site is
pretty platform independent and has a decent career section, as well as
a 'gossip' column where actual IT folk write in anonymously and
describe the various ways that management can screw up the techies.
Advogato
- This is an interesting on-line discussion forum, mainly dealing with
software development.
SoftPro
Books - This is an excellent source for computer and
networking books. You can order online or go to one of their local
stores. (They have one at Yosemite and Arapahoe in Englewood and
another in Boulder.) You can usually get 10-20% off the list price and
if you join their 'frequent shoppers' club (it's free) you can get
additional savings.
Online References
Online
Computer Dictionary - Stuck trying to figure out an acronym
or computer term? This is a good site to look it up.
Google
- One of the best search engines out there for the technically
inclined.
igrep
- advertised as the first search engine for technical people.
Just for Fun
Ubersoft
- A funny comic strip about a mythical software/OS
vendor located somewhere in the Pacific Northwest....
User
Friendly - Yet another comic strip that looks at the funny
side of computing.
Computer
Stupidities - This site collects actual dialogues between
real users and real tech support folk. The range of misunderstandings
and confusion is frequently hilarious.
Peter's
Evil Overlord List - Thinking about a career as an Evil
Overlord? Think you have what it takes to be the next Darth Vader?
Check out this site for a collection of SuperVillain Do's and Don'ts
including 'My ventilation shafts will be too small to crawl through'.
The
Voice Actor Page - Want to know who does the voice of Larry
3000 on Time Squad? Find the answer to this and many more
questions about the men and women who do the talking for your favorite
cartoon characters. Search alphabetically by show title or
actor name. (By the way, Larry is voiced by none other than
Mark Hamill.)
Stupid
Plot Tricks - Expanding on the Evil Overlord lists, this
contains lists of rules for henchman, good guys/gals, bad guys/gals and
even sidekicks. Very funny read.
Insultingly
Stupid Movie Physics - This site examines many popular movies
to see if the action is in line with real physical laws. An
interesting, entertaining and even educational read.
The
Invisible Library - Dedicated to books that don't exist but
should.
|