Hacker News new | ask | show | jobs
by ur-whale 1032 days ago
> moving programs between implementations was a bit of a crapshoot.

You just summarized the historical reason why LISP and its various incarnations (Scheme among others) failed.

So many different patois, no way to move code from one to the other without giant headaches.

3 comments

Eh. Giant headaches is overstating it, I think, if we're talking Lisp post 2005 or 2010: Common Lisp implementations are largely compatible; Racket only has one implementation (and no spec); in Scheme you'll have to spend a bit of time porting between the three or four big implementations that can actually run your stuff, big whoop. (On this forum I probably have to mention Arc, but I don't believe it ever grew beyond a personal project.) I'd say that the main obstacle to adoption was rather the (apparent) absence of shinies (and boy were there a lot of competing shinies at the time).

Even if this were correct, though, my experience is that I find very little enjoyment in things that are targeted at what in your terms is success. For example, Go feels dreadfully unpleasant even though I can't deny the good—occasionally downright brilliant—engineering that went into it, kind of like a mass-produced concrete residential building. Let's be honest, I'm in this largely for the hackery, a little bit for the feeling of having solved somebody's problem, and not in the slightest for the social acceptance. You might not agree here (or you might!), but I hope that, if one day nobody does, I still have the self-awareness to step away from the computer and go do something else.

> For example, Go feels dreadfully unpleasant even though I can't deny the good

For me Go feels like Pascal cut off C's face and is wearing it Hannibal Lector style.

That said, it's an absolutely fabulous language, standard library included, for implementing a worldwide ads serving network. Gotta give them that. For other problems that are more or less technically similar it's also great.

That’s not quite so true. The Common Lisp standard actually works pretty well for having many conforming implementations. For example SBCL, which it’s fair to call a nontrivial program, is portable across itself, CMUCL, Clozure CL, CLISP, ABCL, and ECL.
On the other hand, a theorem prover written by John McCarthy in 1958 was trivially adaptable to both Common Lisp and Scheme. Not too many languages get to make that claim.