In association with
This page was last updated September 1999
If you don't know how to program, you might start with some of
these fine books:
- Structure and Interpretation of Computer Programs (buy
from Amazon) is the classic introduction to computer science,
based on an MIT course. It teaches via the Scheme programming
language, but the subject matter is not Scheme; it teaches
you how to program, which is an entirely different thing.
(The negative reader reviews on Amazon are misguided IMHO; I think
they are mostly from kids who have to read this for their CS classes and think it isn't practical. It is practical if you want to be a good programmer. Yes, you can write "code" without knowing how to program... but you can also cook "food" without knowing how to cook...)
- The Craft of Functional Programming (buy
from Amazon) describes the Haskell programming language. This book
is meant to be an introductory CS text - it doesn't have as many concepts as
SICP, but it has the basics, and learning Haskell will teach you a lot more about
programming than learning C. Haskell is neat. I wish it had a few more
practical-minded people making the implementation usable on free UNIX
clones (though the main Haskell compiler and interpreter (ghc and
Hugs) are now under free licenses, which is encouraging). You can
learn about Haskell here. Haskell
is the least-broken programming language available today. C, C++,
Perl, Python, Java, and all the other languages you've heard of are
all much more broken, so debating their merits is pointless. :-)
Unfortunately Real Life involves dealing with brokenness.
- The C Programming Language (buy
from Amazon) is a reference for C syntax and semantics. You should
own this book to write C code, but you should also know how to
program. This book will not teach you how to program. It
will teach you C, though somewhat tersely.
- The C++ Programming Language (buy
from Amazon) is completely unreadable; it's hard to put
a finger on exactly why, but it is definitely unreadable. Still, it is
the definitive C++ reference, and it's extremely useful if you're
writing C++ and need to look things up. You must have it to write
C++. Just don't try to read it straight through.
- Learning Python (buy
from Amazon) is a nice little book for learning the Python
programming language. Python is very simple and very easy to learn; it
also has nice GTK+ and Gnome bindings. If C/C++ isn't your cup of tea, try
Python for writing Gnome apps.
- Effective C++ (buy
from Amazon) is the best guide to what you should write in
C++ (as opposed to the rather disturbing things that you can
write).
You don't necessarily have to know about GNU/Linux or UNIX
programming to read my book, but you do need to know it to write an
application that does anything useful (I teach you to make a GUI, but
normally your app will also have a functional, non-GUI component which
will require you to use the UNIX API.)
- Beginning Linux Programming (buy
from Amazon) is a pretty good book about the UNIX API in a
GNU/Linux context. It also has information about shell scripting and
the like. It looks like a second edition is coming out next month, as
well (buy
second edition from Amazon).
- Advanced Programming in the UNIX Environment (buy
from Amazon) is the canonical guide to programming UNIX and just
about everything it has to say will apply to Linux as well. If you
want to write Linux applications, you must have this book, as
well as the next one...
- Linux Application Development (buy
from Amazon) is the best book to learn about Linux-specific
interfaces, and also introduces the general UNIX APIs. It assumes more
knowledge than Beginning Linux Programming but is a lot more
useful as a reference. It's worth owning both this book and
Advanced Programming in the UNIX Environment. You almost have
to own them, really.
Some assorted stuff you might be interested in...
- Advanced CORBA Programming with C++ (buy
from Amazon) is the CORBA book to get, according to Gnome's
CORBA experts. Use this book in conjunction with the CORBA
specification, in particular the chapter on the C language bindings.
- Developing Linux Applications with GTK+ and GDK (buy
from Amazon) is a more introductory guide to GTK+ programming than
my book. It has lots of useful examples.