There are 28 jobs listed at DICE for LISP programmers.
There are 3821 for VB programmers.
There are 4581 for C# programmers.
Here's an analogy: is it more useful for your kids to study Spanish or Chinese or Japanese as a second language? Or Latin or Greek?
This is like people in the times when children where still working in coal mines, would have been saying children shouldn't get better education because everyone is working in coal mines.
Unfortunately, when it comes to programming languages, the vast majority of people actually *is* still working in coal mines.
You seem to imply that we should continue to teach children how to most efficiently work in coal mines instead of teaching them how to avoid this and be more productive by using more advanced tools.
LISP is older than C++, Java, or C# yet actually contains several concepts that are actually more "modern". C++ does not go far beyond the macro-assembler that C really is and its object system is a pathetic mess. ANSI Common LISP with CLOS goes way beyond
what any of these languages can do (I have programmed significant projects in C++, Java, and LISP and I know how easy, fast, robust, and readably things can be solved in either of them).
Still I am not advocating LISP here, because it is an anachronism too, in the meantime. However, many of the *concepts* present in LISP and not present in C++/Java are important.
I mentioned OCaml/F# because I think that it would deserve much broader use and because I *know* (from experience) how it can both increase productivity and dicrease error -- especially certain runtime errors that sometimes can even lead to security problems.
95% of the people are not using decent languages because they do not know there is anything beyond C++/C#/Java. The rest usually doesnt use decent languages because every one else doesn't, and hence the library they need isn't available.
Teaching childing decent programming language *concepts* would be the only way how this can change. KPL fails both in the pedagogic aproach and the design of what concepts are included in what way.
Why is it that in the year 2006 people not only still happily use programming languages that are totally anachronistic, but create NEW and educational ones that are anachronistic and prolonging the practice of using badly designed languages with all the
Is it because people at MS are totally untouched by any results of programming language research in the last 20 years? Even the dinosaurs Scheme or LISP are more modern than C++ or Java.
It is essential to teach students -- and also young children -- ways of how thing *should* be done. How they *could* be done better, instead of endlessly prolonging the old, messy ways. It would have been innovative to base this on F#/Ocaml or at least something
like Ruby or Scheme.
The tutorial is not really well done either. Not sure if this is a limitation of the language or just bad pedagogic choice, but the graphics example should use *relative* coordinates, not absolute ones. This would render itself nicely to the use of functions
within functions or even recursion.
Any old LOGO-tutorial did it better, really.
That portability is not at all an issue here is probably to be expected when it comes from MS.