Hacker News new | past | comments | ask | show | jobs | submit login

In regards to #5, I think a more apt comparison would be teaching music theory students some basic piano so that they can mash a few keys and experiment with the ideas presented in class. And the choice of piano as the learning instrument isn't arbitrary: it's trivial to make sensible noises just by pressing a button, whereas something like violin requires a decent amount of technique just to play a single note. Plus the layout of the keys is very intuitive, a student can play their first scale on day one, which is certainly not the case with violin.

If you follow the analogy, the best programming languages for CS101 will first, minimize the amount of technique required to accomplish simple tasks. Java is out, "hello world" already introduces the concept of classes, static methods and access specifiers. Ruby, python, and plenty of other dynamic languages look a lot better, "hello world" is a single statement/expression. Second, the layout of the keys should be intuitive, consistency and simplicity in syntax/semantics is often cited as one of lisp's strong points with regard to it's suitability as a teaching language. If you want to play a scale, you just need to hit the keys in order.

this reminds me, although tangentially, that i saw a chapter of a book once that was basically dedicated to dissecting all the boilerplate in a standard C "hello world" program. It would go over details about argv and so forth and then introduce wrinkles into the program and see if you caught what they were.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact