I have a handful of favorite programming languages that I’ll never ship a product in. For one reason or another, perfectly good programming languages — or ones that are nearly perfect, except for a single tragically fatal flaw — will have to remain on the bleachers while the old standbys like C and C++ trudge up and down the field. It may not be a glorious way to win games, but the old guard works pretty well, most of the time. Still, it’s nice to dream about not having to worry about the usual set of bugs.
Scheme is probably #1 on my list of languages that I’ll never do anything real in. It’s a great little language, well-described, easy to understand, relatively easy to implement, and great for writing abstractions. Modern implementations of it have pretty reasonable performance. But not many people like it, which makes using it on teams difficult, and the I/O system is non-standard enough that portability is a lost cause. Mistrust of garbage collection is fairly uncommon these days, thanks to the popularity of Java. [Though full-tilt blind faith in GC is disturbing for other reasons]. The most common reason why people dislike it? “All those parenthesis.” I think they’re glorious and (with a decent editor) quite liberating, but your average unenlightened programmer doesn’t. Lexical reasons like that are a crazy reason not to use a really neat, simple set of tools. Once you’ve really worked with programs-as-data, you don’t want to go back, especially after you’ve contemplated getting that 500+ term C++ grammer working again (kind of) on your source tree, after you’ve noodled it to work with your compiler’s non-standard extensions….
[It’s certainly possible for lexical messiness to cripple a language. Compare C++ and Perl — complete train wrecks of punctuation, with Pascal or Lisp. Unbelievable.]
SmallTalk is another great system that is going to have to remain on the shelf. First and foremost, noone uses it for serious work. Then, what’s a Smalltalk application? Is it the whole image? Is it just the deltas that you typed? Figuring out the boundary of the app -vs- the rest of the system can be tricky. (It’s possible that it doesn’t matter, that most Smalltalk apps are just an image, and that it’s okay. It’s also possible that the extractors do work well these days — that’s not my understanding of a decade ago).
People that I respect keep telling me to look at the latest version of Python. I’ll do that someday soon (though the idea of indentation-as-scope still gives me the heebee jeebees; chalk it up to emotional scarring caused by Occam).
I don’t know what else; maybe O’Caml would be good to play with. And I’ve got this BCPL compiler hanging around somewhere; it’s nice to know that everything really is an integer underneath it all… 🙂