Hacker News new | ask | show | jobs
by muuh-gnu 4762 days ago
You dont do SICP to "learn Lisp", you do SICP to learn fundamental programming principles. SICP just happens to use Scheme because one of the authors of SICP was also one of the authors of Scheme. The difference between Scheme and Lisp is big enough to justify them having different names and Scheme not being "just another dialect of Lisp".

The problem with Scheme is not the language, the problem is that the ecosystem is so hopelessly balkanized, that it is useless for practical purposes and nobody uses it for anything interesting except for teaching of SICP. You have tiny standards covering only base language constructs, and everything else is left to implementations of which 1001 different one exists and each implements the same stuff in a different, incompatible way, so there is no code portability. So an large number of Scheme users, instead of developing interesting and useful _new_ libraries, instead rewrite 1001 different implementations and 1001 different manuals covering the same area. If you write something and tell me you wrote it in Scheme, the first thing I'd have to ask is "Which one?" because your code will not run on the 1000 remaining ones. The scheme ecosystem is the prime example of code non-reuse, of the NIH syndrome and waste of man-decades of effort, so while the language itself is nice for teaching, the existing worst-practices are examples of what _not_ to do.

2 comments

SICP doesn't 'just happen' to use Scheme; the simple language from a well-chosen combination of powerful mechanisms is the kind of thing they're teaching you to design. The medium is part of the message. (Yes, you can solve the problems using another language; I used XLisp.)

On 'dialects of Lisp': it used to be standard for very different Lisp-family languages to be called that, while nowadays someone will always contradict you if you do. It seems more of a social change than a technical one to me. (I first noticed it among Common Lispers after the AI winter.)

I know someone impressive doing real work with Scheme (though I recommended they try Lua). I don't know whether you're right about the Scheme ecosystem, as I've been elsewhere the last 15 years.

Maybe Racket is closing this gap.