3 ms·
In addition to C, some Lisp, and Python, I'd say that a strictly typed language would also be good. Some ML derivative would probably be good. At that point,
by daeken 17y ago
In addition to C, some Lisp, and Python, I'd say that a strictly typed language would also be good. Some ML derivative would probably be good. At that point, you've at least touched the whole spectrum. (Well, outside of assembly, but as much as I love it, its usefulness is dropping every day...)
- rntz 17y ago"Touched the whole spectrum"? Hardly. What about logic programming languages (eg. Prolog), stack-based programming (eg. Forth), concurrent programming (eg. Erlang)? And that's leaving out more esoteric ideas like FRP (Functional Reactive Programming), the funky type systems needed for efficient purely functional languages, and the less-well-known OO constructs (multimethods, metaobject protocols, etc). No CS curriculum can ever both touch the whole spectrum of what there is to offer and be reasonable to mandate for all students. Inevitably, some students will want the minimum necessary for practical work and others will want to explore as many avenues as possible. The importance is in striking a good balance: exposing students to enough different paradigms to produce good computer scientists without requiring so much that they never get enough real experience with specific languages to be good programmers.
- Zak 17y agoand the less-well-known OO constructs (multimethods, metaobject protocols, etc) Using Common Lisp provides the option to do that, but there's still plenty from the realm of programming languages that would be left out. It might me a mistake to try to do too much at the high-school level though; C, Lisp and ML would allow access to a very broad range of programming concepts - far more than any three of the approved languages.
- stcredzero 17y agooutside of assembly, but as much as I love it, its usefulness is dropping every day... I don't think that it's an accident so many good programmers got started in BASIC then graduated to 6502 assembly. There's something powerful in that combination. We can go it one better with Python, followed by assembly on an emulated simple processor. Follow that with writing a simple compiler targeting the same processor. (In Python, perhaps.) C is nice, but I've seen too many C programmers who really just think of the compiler as magic and have no idea what is happening there. To produce top-notch CS people, you should get as close to the machine as assembly.
- MarkBook 17y agoMy tuppenceworth Some high level language VB, C# or Java then the first half of Code by Charles Petzold then The elements of computing systems by Schocken and Nisan followed by the rest of Petzold's book