Thursday, May 6, 2010

My Next Lisp

Unix won.

The next Lisp has to rename all occurrences of foreign (and even worse, alien) to native. This alone will be a major step forward for Lisp. And thus, humanity. The next Lisp should also use all abstractions directly as they appear in POSIX: file descriptors, sockets, etc.

Ruby won.

Of course, Ruby does it wrong, but at least it's trying hard. And I think Ruby's semi-stateful, semi-functional programming model is the right way forward. For most internet apps, that is. We'll be programming crash-only (err...), event-driven servers most of the time anyway. For that kind of programming, Lisp is just right.

The original "LISP genotype" is junk DNA.

McCarthy's original LISP, you know the one built from CONS, CAR, CDR, QUOTE, etc has nothing interesting to tell us today. Clinging to or idolizing this model is the sign of a misunderstanding. Modern Lisps have nothing to do with this (flawed) historical model.

The cons is a relic.

I repeat, relic.

Think of the experts.

Instead of accommodating n00bs, the next Lisp should follow CL's model and be a language for experts, one that you grow into over the years.

Objects won.

For the type of programming done usually in Lisp, Smalltalk-style object-orientation is the jolly good icing on the cake. While that programming is arguably stone-age compared to Haskell, there's no need for Haskell envy. Haskell hasn't yet developed to the point where Haskell is the world's finest Lisp.

More: Steps towards an Acceptable Lisp.

4 comments:

Anonymous said...

Reminds me of http://web.archive.org/web/20080219114001/e7code.org/doc/progress-report.html

I wish you the best of luck!

swannodette said...

Unix won:

I suppose you have nothing to say about the rise of small computers that don't present Unix in useful manner?

Ruby won:

On what metric? It's certainly good and popular, but according to most statistics Java, C, C++ are still king. And again with the rise of small computers, it probably will be for the forseeable future.

Lisp genotype:

And yet you choose to ignore Clojure?

cons:

See above.

Experts:

How about accommodating noobs and experts? Elitism to this day has gotten Lisp nowehere.

Objects:

It's just that few people realize that stateful objects are dead in the water right now. It's not about abandoning objects but decoupling state and identity and orienting things around values. There are plenty of good things to preserve about object oriented programming (interfaces, polymorphism, etc.)

Manuel Simoni said...

I suppose you have nothing to say about the rise of small computers that don't present Unix in useful manner?

No. I'm trying to build a language for what I care about, and atm, that's Unix scripting. And there's real leverage from a good language there. C is too lowlevel, and all the others suck. On small devices, you have to use the language/SDK dictated by the man, and I don't wanna go there. I'm doing this for pleasure, not business.

On what metric [did Ruby win]?

Of course on the arbitrary metric I chose when I wrote that sentence. ;P Somewhat more serious, I think Ruby took enough from Lisp to be interesting, and to show that its (semi-functional, semi-stateful) programming style works well enough for Unix scripting.

And yet you choose to ignore Clojure?

Yeah, I'm simply no longer interested in one-man languages. There's so much good stuff in the larger Lisp family, that isn't in Clojure, that I'd sure be annoyed as hell when using it.

Elitism to this day has gotten Lisp nowehere.

Well, for me popularity isn't required for or equal to success, otherwise I'd be listening to Britney Spears. I'd say that for the genre of object-oriented dynamic languages, Lisp hasn't found its match, and no one is even getting near it. Really.

It's just that few people realize that stateful objects are dead in the water right now.

Lovely quote, and good luck to these few! They can report back in a couple of years, and tell me whether their approach worked out. (I'll write about this in one of the next posts.)

swannodette said...

@Manuel

An interesting perspective. Though it seems silly to call Clojure a one-man show, it's anything but. While I don't disagree that the different Lisps have truly unique offerings, it would be silly to say that Clojure doesn't either. Certainly in the area concurrency Clojure is delivering a consistent experience that's fully baked into the language.