Linked by Thom Holwerda on Wed 11th Apr 2007 16:35 UTC, submitted by ShlomiFish
General Development "What makes programming languages are suitable or unsuitable as introductory languages? Which languages are better learnt first and at which order? And why what the masses think is the most suitable introductory programming language is not in fact that. This paper examines several approaches to which programming language is the best, and afterwards gives several useful relations for which languages should come first. Finally it gives a final verdict, defends it and then gives some other good food for thought."
Thread beginning with comment 229686
To read all comments associated with this story, please click here.
phoehne
Member since:
2006-08-26

I disagree with the fundamental thesis that a beginning programming language should allow you al lot of expressiveness. A good argument for a stripped down, safe language is that you are trying to teach basics. BASIC is an excellant teaching language (not Visual Basic, but a clean, simple BASIC.) Even things like object orientation can get in the way when trying to teach fundamentals. (I don't view OO as fundamental as I view analysis of algorithms). But let's start with what you're trying to teach:

1) Solving problems by developing algorithms.
2) Analyzing algorithms
3) Data structures
4) Abstraction

Every language mentioned does all the above. Some make one part easier than another or more conversational. Some make life easier or harder for beginners. I would say what's more important:

1) An editor that makes writing code easier.
2) Debugger that is easy to understand and use.
3) A conversational session

The first one can be satisfied by an IDE or even just a syntax highlighting editor such as emacs. The second allows people to examine a running program and error conditions. It would be nice if the language had primitives to enter the debugger (ie. an "assert" or "break" primitive that kicked open the debugger). Finally, being able to open a "session" with the system like a Ruby irb session, comand line BASIC, Python or a Scheme session.

I think I'm more partial to ruby because it has great support for all 3. I don't think you could go wrong with BASIC, Python or scheme, either. I'm a professional programmer with some perl experience and get lost in the syntax, so I wouldn't recommend it. As a contrast to perl's funk, I don't use Python but I find it easily readable. I'm writing all compiled langauges off. Java IDEs have excellant debuggers, if you learn to use them. I've seen to many people get hung up on compile/link (or library reference) problems with compiled languages to really feel comfortable telling them to start with a compiled language.

My pick? Probably ruby. But they'd be well served with scheme, BASIC or python. I love lisp, but it's too large a language for the beginner. I love objective C, but it really helps to know C first. Java is a great language for people who already know how to program. C/C++ cause students to get hung up on stupid pointer problems.

Reply Score: 5