Friday, May 17, 2013

It was a provocative and humorous talk. David showed all the powerful features of LISP and said that the reason why LISP is not more adapted is that it is too powerful. Everybody laughed but it made me think. LISP was decades ahead of other languages, why did it not become a mainstream language?

When I went to university my two favorite languages were LISP and Prolog. There was a big debate weather LISP or Prolog would win dominance. LISP and Prolog were miles ahead of everything else back then. To my surprise they were both surpassed by imperative and object oriented languages, like: Visual Basic, C, C++ and Java.

A few Haskell and LISP differences

Evolution and the Selfish Gene

In the book The Selfish Gene, evolutionary biologist Richard Dawkins makes an argument that genes are much more fundamental than humans. Humans have a short lifespan while genes live for 10,000s of years. Humans are vessels for powerful genes to propagate themselves, and combine with other powerful genes.

If you apply his ideas to computer science, languages, like humans, have a relatively short lifespan; ideas, on the other hand, live on and combine freely. LISP introduced more great ideas than any other language.

Open source software has sped up evolution in computer languages. Now languages can inherit from other languages at a much faster rate. A new language comes along and people start porting libraries.

The Sudden Rise of Clojure

A few years back I had finally written LISP off as dead. Then out of nowhere Rich Hickey single-handed wrote Clojure.

Features of Clojure

Run on the JVM

Run under JavaScript

Used in industry

Strong thriving community

Immutable data structures

Lock free concurrency

Clojure proves that it does not take an Google, Microsoft or Oracle to create a language. It just takes a good programmer with a good idea.

Typed LISP

I have done a lot of work in both strongly typed and dynamic languages.

Dynamic languages give you speed of development and are better suited for loosely structured data.

After working with Scala and Haskell I realized that you can have a less obtrusive type system. This gives stability for large applications.

There is no reason why you cannot combine strong types or optional types with LISP, in fact, there are already LISP dialects out there that did this. Let me briefly mention a few typed LISPs that I find interesting:

It might seem like a banality, but actually Lisp is written "Lisp", not all capital "LISP". Just saying, since I think some people who read this post never really heard of Lisp before and will then think it's written "LISP".

Also, little typo: "Partly by borrowing ideas from LIPS."

Other than that, great post. I often wonder why there aren't more people using Lisp.Funny is how people "decide" not to use Lisp because of it's syntax - whereas Lisp actually lacks syntax.

People should stop judging things by its cover, so they can clearly see its power.

Another reason might be that Haskell crystallized around 1998, and .... the Internet was well and thriving (what ever happened to the ML family???). Reminds me of FreeBSD fading into oblivion vs Linux.

Thanks for all the spelling tips. Of course the one post I rushed out the door is the one that gets picked up by Reddit while I am without internet connection for 3 days.I was horrified when I read my abysmal English, which of course is not my first language.

I think part of C/C++ success vs Lisp is that a lot of graduates students in the 70's and 80's were funded by ATT ( Berkeley Year on Campus program for example). So not to bight the hand the feeds a lot of them ended up using C and C++ at Berkeley and at other schools. Then they migrated in Silicon Valley and companies like Sun, Apple and HP.Also, the West coast C users had more successful companies than the ones back in Boston that favored Lisp, Scheme etc. Intel and Sun succeeded while Symbolics etc failed.

Hey very nice blog!!Hi there,I enjoy reading through your article post, I wanted to write a little comment to support you and wish you a good continuationAll the best for all your blogging efforts.Appreciate the recommendation! Let me try it out.Keep working ,great job!http://www.sqlservermasters.com/

In the early days, vastly more people were financially successful with Fortran and C than with Lisp.

Newcomers copied what others did successfully before, including the languages they used. Rince repeat, and you have exponential growth. Game Over for Lisp.

It has nothing to do with the language. Case in point: the sudden popularity of Objective-C because of early financial success with iPhone application. Before then close to nobody used Objective-C. Now it is in the top 5 according to some measures.

Again, it has nothing to do with the quality/features of the language.

Another example: the sudden popularity of Javascript the moment a few successful websites started using it for "desktop like" applications.

Not to mention PHP. Same thing.

What it takes Lisp/Clojure to "win": write financially successful software using those languages. Make it will known that those application were written in Lisp/Clojure. Do it a lot. Game Won.

@ Mg Zuil:Nope AutoCAD *used* Lisp as its macro language, it still does. Interpreted at first and later a compiler added. The built-in Lisp interpreted was actually stolen from XLisp 1.0 in the early 80's. Later a 3rd party created the VitalLisp extensions + compiler which AutoDesk then bought and renamed VisualLisp (which is the current built-in Lisp engine).

What makes you think Typed Racket's type system is not as powerful as Haskell's? How do you compare?

Before you respond, please consider that Typed Racket has (1) occurrence typing [completely novel] (2) subtyping and 'true' unions (3) first-class polymorphic functions. It lacks abstract types (by choice) but has opaque structures. It lacks type classes but has a rich numeric tower and overloading where programmers can prove as much or more than in Haskell about their functions.

C was promoted as the language for system programming, besides it was and still often is the intermediary language another higher language resolves to for portable cross compilation.

As states and the precise sequencing of operations are paramount for drivers, IO protocols and network programming it is all too normal C thrived.

On the other hand if one would have ported the cumbersome LISP machines programming model in a portable VM and successfully had run it over the Motorola 68000 and Intel 80386 architecture, history would have been different but maybe not so much as Smalltalk proved this model not so enduring, JMHO.

About Me

My interests are natural language processing, machine learning, programming language design, artificial intelligence and science didactic.
Author of open source software image processing project called ShapeLogic: https://github.com/sami-badawi/shapelogic-scala.
I have worked in NLP for several years, but spent many years working in the cubicles, at: Goldman Sachs with market risk, Fitch / Algorithmics with operational risk, BlackRock with mortgage backed securities, DoubleClick with Internet advertisement infrastructure, Zyrinx / Scavenger with game development. I have a master of science in mathematics and computer science from University of Copenhagen. For work I have been using these programming languages: Scala, Python, Java, C++, C, C#, F#, Mathematica, Haskell, JavaScript, TypeScript, Clojure, Perl, R, Ruby, Slang, Ab Initio (ETL), VBA. Plus many more programming languages for play.