First, no, it was not a troll, just an (if I may be so alliterative) earnest expression of exasperation.
Syntax pertain to readbility, which is an important factor from a SE perspective if not from a
PL theory perspective - so I wouldn't dismiss it altogether.
Scheme syntax is an acquired taste, but so is Algol-like syntax. Both kinds of syntaxes take a few weeks to get used to for a newcomer. After that, I don't think there is a huge difference. Obviously, Algol-like syntaxes have more internal cues, and perhaps on that score they are more readable, but less writeable (you have to learn more syntax productions). Personally, I think everyone has a brain big enough to accomodate both without noticeable cognitive burden. There are thousands of active Scheme programmers; they seem to manage just fine.
BTW, I don't like Scheme for its syntax. In fact, I don't think there is much value in the so-called syntactic incidence of Scheme programs and Scheme data, because programs are not simply lists (i.e., trees); they have a great deal more structure, such as the binding, and functions on lists do not preserve that structure as they should. So the programs-as-data approach in Scheme only goes part of the way, and that can be misleading.
And even though everyone can use Scheme to build OOP features, they are not going to be
compatible with each other. Same goes to other features, like a module system.
I'm not saying that "because you can build it Scheme, it's good enough." Indeed, the design decisions involved in building module systems and OOP extensions are best left to language designers, not language users.
What I'm saying is that if you have a module system or an OOP feature which is so great that you think everyone should use it, but the rest of your dynamically typed language is no better than Scheme, then why not add it to Scheme and see if people agree with you? If they do, then it ought to eventually become a de facto standard.
Now you might say, "But people have tried that before, and we now have tens of module systems, etc. for Scheme and no clear winner." I think there are three reasons for that.
First, maybe there is no clear winner in popularity because there is no clear winner in functionality. So maybe none of the extensions are adequate and we need to go back to the drawing board.
Second, lots of people release extensions but only write a few programs with them. People seem to like scripting languages because they have big libraries, so the best way to make an extension popular is to take a big part in writing programs for it.
Third (and most tentative), though have we many extensions, hardly any of them are specified with the same rigor as Scheme itself. If they were, it would be easy to write translations between them, and that would reduce the compatibility problems.
Anyway, you complain about lack of compatibility among Scheme extensions, yet look at the situation in the world of scripting languages: Perl, Python, Ruby, Pike, Lua, Javascript, Nickle, Rexx, TOM, etc., etc. It's even worse. At least Scheme extensions can share Scheme code! And can you imagine trying to write a translator from one language to another? None of them is defined in a rigorous implementation-independent manner, except Scheme.
|