Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Or they remember all too well. Another way of looking at it is that people who have gotten good at something can look back and see the things that hindered their progress. Like many here, my first exposure to programming languages was BASIC and 6502 assembly language. In retrospect, I can see that they were horrible languages to start with because they taught me some very bad habits that I had to unlearn.

It is possible to teach someone Lisp, or something like it, without teaching them all of it at once... if ever. There are lots of people who use CAD systems like AutoCAD, or Emacs, or the various Lisp based/inspired Expert Systems shells, etc. who wouldn't consider themselves 'Lisp programmers' who learned just what they needed to be productive. If people were exposed to it a bit at a time, rather than the fire hose with minimal direction, I suspect a lot of complaints could be addressed. For example, the reason people think all the parens are bad is because it's become a meme and it's different than what they're used to. If they had started with Lisp and never learned ALGOL-inspired syntax, semicolons would likely look very strange to them.



I credit my earlier exposure to BASIC as a very good introduction to programming, because of its bare-bones nature. Too much abstraction would have been overwhelming, to start with - I didn't even understand the purpose of GOSUB for a long while (I knew, mechanically, what it did, but I did not grasp why one would use such a construct instead of just putting all code inline). The simplicity made it an easy outlet for creativity, and pushing the language to its limits and finding the complexity more and more difficult to manage was key to my eventual enlightenment - advanced language constructs felt like gifts, rather than burdens.

Of course this process could be done in an advanced language that grows with the user, but most modern languages are not that - even Python expects the user to understand at least the rudiments of structured flow and objects almost immediately. Lisp (Common or Scheme) isn't it, either - lambda calculus is already far too abstracted from the "series of instructions" model which is a critical foundation for computing in the real world. C, my next step after BASIC, has quite a good balance of available abstraction and a tractable mental model; but the amount of boilerplate (the requirement for main() always seemed baroque to me) and hand holding of the computer (total lack of even trivial type inference) is not ideal for a beginner language.




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

Search: