Scheme Reports at Fifty: Where do we go from here?
26 points by amirouche
26 points by amirouche
As someone who has exactly zero horses in this race, I'd love to hear the perspective of someone from the opposing side, Racket, Guile, etc. i.e. the implementations which diverged from the report to an extent or outright don't follow it. Does it, in their opinion, stifle innovation? Is the spec too hard to implement? Is supporting multiple spec versions too much (the alternative being fragmenting the userbase)? Is there an ideological difference (not necessarily in the political sense, but more what the author talks about too pedagogy vs pragmatism)?
It is understandable that someone who's part of the standardization process would champion for it (this isn't meant as a snide remark, surely if the author didn't believe in the process, they wouldn't petition with so much heart) and the main assessments from the article do sound wise, namely that the world is a very different place and there are a lot more responsibilities a language needs to have to be considered "modern".
However—from my limited and ignorant perspective—I'm not really convinced "join or die" really is the logical conclusion when some of the most thriving Scheme(-like)s already don't conform fully or aren't based on the spec from the get-go (Clojure). Is an Algol situation really that bad?
I think the author exaggerates the situation somewhat (understandably) being part of the process itself). Scheme implementations have always diverged in wildly different directions and this created a lot of innovation in the spectrum of design and implementation, which was, IMHO, a good thing.
I think what gets lost when thinking about Scheme standards is the fact that it is intended to provide a core, a portable base on which implementations can (and should) build and extend the language in promising or just experimental ways. When seen that way the intentional vagueness and small size of earlier Scheme specifications make much more sense. For example: what is specified as "undefined" doesn't mean that it should not be handled but that it is open to the implementation to do something useful (or just signal an error). I think this understanding of the language's purpose got lost, starting with the R6RS standardization effort, and, alas, hasn't come back, it seems.
Scheme is just a concept, a core (a "diamond" if you will), and implementations like Racket, Guile and CHICKEN take it and make something useful and practical from that.