4 ms·
While I agree with the general idea behind the article, there are lots of specific details I disagree with. For example: It is absolutely crucial to pick a fir
by CodeMage 16y ago
While I agree with the general idea behind the article, there are lots of specific details I disagree with. For example:
It is absolutely crucial to pick a first language with a deep, expressive vocabulary for this reason, and all programming languages are not created equal.
Not really. I started with BASIC, on ZX Spectrum 48, and I actually used it to write a real-world program which was used by real users; if you're curious, it was a pop quiz for biology classes. Yes, it's probably the worst code I've ever seen or written. Yes, it had all sorts of problems and bad practices you could readily think of and then some that would require you to be very imaginative. No, it didn't cripple my development as a programmer.
The problem is not in which language you pick as your first language. The problems start when you start believing that's all there is. Some of the most important things I've learned were things I encountered when learning a new, more powerful programming language, precisely because they were impossible (or extremely difficult, or too messy) to express using the old language. They challenged my understanding of programming and helped me develop even further as a programmer.
- johnaspden 16y agoStrong disagreement. My first language was also Spectrum BASIC (I'm not dissing it, by the way, a mighty engineering achievement and my life would have been much poorer without it), but it's not a language I'd expose a child to today, because you need to deal with all sorts of accidental complexity to see some of the deep ideas. On the other hand, the Spectrum environment was almost perfect considering the hardware available. In the same way, if you want to learn OO, learn Java rather than C++, where the same concepts seem very much more complex. And that's probably true even if you want to program in C++ eventually! Probably better to use python than either, because that's got the least accidental complexity of anything and can express a wide range of ideas, as far as I can tell. My favourite language at the moment is clojure, but actually some of its nice features like pervasive immutability would make things hard for a beginner. Better to learn how to do everything and then decide which powers you want to not use. So I guess my ideal beginner's computer today would be a modern ZX Spectrum running a version of python with a lisp syntax (for macros). pg's original vision for arc sounds like a good spec. And of course an essential requirement would be a printed user manual as friendly and straightforward as the ZX BASIC manual or the TRS80 one.