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

Slightly of topic rant here on the topic of learning to program:

The first language I programmed in was Pascal (Turbo Pascal 5 and 7 to be precise), at the age of twelve. It was a great language for several reasons: it was mostly imperative (meaning I didn't have to try to gasp objects right away; there were OO extensions, but I didn't have to use them initially), statically typed (meaning I did have to learn about interfaces and implementations), allowed for raw memory access (so you could learn about pointers and memory management) while having "real" arrays and strings (so you could learn these concepts and write basic programs before learning pointers).

Going from Pascal to C (at the age of 14) was easy for me, including dealing with the fact arrays and strings (as my handle suggests) are pointers (I know what pointers were and how to deal with them, while at the same time knowing what strings and arrays are for). Moving to C was a necessity, as I was finding myself writing far too much inline assembly without actually knowing assembly (Google "Why Pascal is not my favorite language" for the reason why), but it was much smoother than learning programming from scratch with C.

In college/university, the CS courses were all taught in C which, I think, gave me somewhat an unfair advantage over students who didn't program before coming to university (unfortunately, as a transfer student I was exempt from the "great equalizer" class which forced everyone to learn Haskell).

It's sad that schools these days face the choices of: teaching C which forces students to deal with issues tangential to what they're learning, teaching Java or Python which exclude very important aspects of programming and data structure implementation, or teaching a language which likely no longer even has a stable and widely available implementation but is more suited for the "pedagogic" role. Out of these choices, I believe C is the less wrong, but not the optimal choice.




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

Search: