[ale] starting programming

Joe jknapka at mindspring.com
Mon Dec 14 10:39:51 EST 1998


Hey Tri,

If you can handle setting up a Linux box, you can probably handle
learning to program on your own, without taking any classes. I've been
in the software development biz for a few years, and am completely
self-taught, so here are some reading recommendations:

In general:

Avoid the "Teach Yourself..." books. I've found them to be anywhere
from incomplete to criminally misleading.

O'Reilly and Addison-Wesley consistently produce well-written,
accurate software-development texts. IMO this is NOT true of
Que, Sams, and the idiots who put out the "Teach Yourself..." books
(I can't remember the publisher at the moment).

For C: "The C Programming Language" by Kernighan and Ritchie.
These are the guys that invented the language, and this book (popularly
known as "K&R") is the C bible. It's also pretty understandable.
Get the second edition (or a later one if available). It'll run
you about $35.

For C++: "The C++ Programming Language" by Bjarne Stroustrup.
Some people will tell you to learn C++, not C, or to learn C++
first. Those are reasonable suggestions, because a life of C hacking
can lead you into the Dark Side of software design and cause you
to develop unsavory personal habits. However, if your ultimate
goal is to become a Linux kernel hacker, C++ is not very relevant.
In any case, Bjarne tells you everything you will ever need to know
about object-oriented programming and design; the rest is just icing.
The third edition is about $40.

If you are a complete beginner, it might be a good idea to get
into programming by learning one of the interpreted languages
like Tcl, Python, or Perl. They will acquaint you with the principles
of programming without bogging you down with issues like the
linker, makefiles, and so forth. Nothing will put a damper on
your enthusiasm like spending twelve hours tracking down a
mysterious "unresolved external" error emitted by the linker. Also,
while C is great for low-level work, it doesn't do the programmer
any favors; it's a lot easier to point loaded C code at your
foot and pull the trigger than, say, Tcl. And finally, you can get
cooler results a lot quicker with the higher level languages. A
"Hello, world" X Window program in C that takes two hundred lines
of code can be written in two lines of Tcl.

John Ousterhout's "Tcl and the Tk Toolkit" is the canonical Tcl
book, and it is very good. It is a bit dated, but it will get you
started. IMO Tcl is a great first language. Not only does it
let you produce impressive results very quickly, but you will
almost certainly find that when you get around to writing C
code, you'll still want to use Tcl for the user interface, so you
aren't "wasting time" by learning Tcl first.

Perl is a lot harder to get a handle on than Tcl, but it is
definitely worth knowing, especially in the Unix world. I
learned it from "Programming Perl" by Larry Wall, Tom
Christiansen, and Randal Schwartz, but I don't recommend
that book as a tutorial. Maybe someone else can recommend
a good beginning Perl book?

I will happily attempt to answer any questions on the above topics;
you should probably send them directly to me rather than to the list.
I'm sending this message to the list because it may be of general
interest, and some people may disagree with my recommendations,
in which case I'd be interested in their alternate suggestions.

Good luck,

-- Joe Knapka

Tri wrote:

> I want to learn to program in C, but don't know where to get started. I
> know basically nothing about programming so I'm a newbie. I was
> wondering if anyone here could give me some pointers on what I should
> do. Like if there were any classes I can take (I'm a freshman in
> highschool) right now or if there you have any recommendations for books
> and other things. When I do learn to program linux, of course, would be
> my main programming, developing platform, so I don't think this e-mail
> is too off subject.
> Tri






More information about the Ale mailing list