First programming language?

A reader (and friend) writes:

My nearly 17-year-old daughter is starting to be more and more curious about what it is that I
*DO*, and computers and stuff. Which leads us to the perennial question:

What programming language should beginners be exposed to first – this
year? Just to give them a basic notion about programming concepts – not
to get them a job.

I’m completely stumped. I live in a world of C and C++ and Java and
Perl and more recently Ada – yes, Ada – from which I am unlikely to

Is Python the answer? Or ??? I can’t imagine that any of the languages
I listed above is a candidate. Pascal is irrelevant these days. Logo
(“turtle graphics”) were cute 20 years ago. What is it now? Something
simple to grasp but that isn’t too limiting.

Curious what your ideas are.


My first programming language was Fortran on an IBM 1620; I decided that wasn’t a reasonable recommendation, despite the availablility of an 1620 emulator (I had to drive 5 miles each way uphill in the snow to get to the computer).

Instead, I answered thusly:

I, of course, am still partial to Rexx, but I don’t think it’s a good beginner’s language any more, because you can’t do “interesting” things in it (like make GUIs happen, or manipulate other programs, or do things on the web). And, to be honest, I haven’t written anything in Rexx in a few years and don’t even bother to install it any more.

So my suggestions would be Python or Ruby.

Python, because it’s got a very clean syntax (as long as you don’t mind that indentation is syntactically significant), because it is just object-oriented enough (and these days, I think starting with an OO language is the right answer), and because there are packages available that let you do damn near anything (though I still haven’t gotten around to writing anything GUI….). The documentation is pretty good, and there are at least two decent books to start with (Learning Python and Dive Into Python, which is also available free online).

Ruby, because all the Cool Kids are using it (especially with Rails). It has much too much syntax for my taste, and there’s often More Than One Way To Do It, which you may consider to be good or bad. I haven’t really gotten into Ruby or Rails yet, because I haven’t had a real good use case, though that may change.

Other languages to think about:

PHP, the language of WordPress and MediaWiki. There’s even a book, PHP For Teens, which might be interesting from a target audience perspective. OTOH, PHP’s natural habitat is in creating server-based apps, and that might not be ideal.

Java, just because. I’ve been able to avoid it so far, but the time has come for me to get my feet wet there, so I can vouch for Head First Java as a good introductory book.

And one of my colleagues here suggests JavaScript — you can write it and play with it right in your browser and get instant gratification.

Both S. and I are interested in your thoughts on this…comment away!


No, I’m not talking about bathtubs. I’m talking about the scum who have apparently decided that death threats are an acceptable way of expression, at least when it comes to Kathy Sierra.

I can’t imagine what it’s like to be on the receiving end of such threats and abuse; hell, I found it hard to get back to work after just reading what she was subjected to.

Kathy, I hope you’re able to return to blogging; your perspectives and good sense have helped me (as have your books). But first, take care of yourself.

Two weeks and counting….

I had thoughts of looking at colleges over Jeff’s spring break, but when it came time to make travel decisions, we realized that he wasn’t far enough in the process to have a shortlist of schools to check out, and none of us really wanted to go away and look at yet more randomly-chosen schools, especially during Passover. So instead, we’ll be spending the holiday in Manischewitzville.