Which Lisp to Learn?
xahlee at gmail.com
Sun Mar 8 06:23:26 CET 2009
For those of you imperative programers who kept on hearing about lisp
and is tempted to learn, then, of interest:
• What Is Your Favorite Lisp
plain text version follows.
What Is Your Favorite Lisp
Xah Lee, 2009-03-04
Javier wrote: “What open source implementation of Lisp do you prefer
My fav is Emacs Lisp.
Because it is practical. More or less the most widely used lisp today.
Considered as a tool, it has probably some 10 times more users than
either Common Lisp or Scheme Lisp.
For example, i consider emacs lisp, more powerful than Perl, as a text
processing language, for 2 major reasons: (1) It has buffer datatype
and associated datatypes such as point, marker, region, etc. Which is
more powerful than treating text as inert chars and lines, which Perl,
Python, Ruby, etc do. (2) elisp's integrated nature with emacs. This
means, for odd text manipulation jobs that happen daily in every
software coding, i can write text processing programs that interact
with me while i edit. (See also: Text Processing: Elisp vs Perl.)
The above paragraph, details why i love emacs lisp. However, it is not
so much caused by lisp language's nature. I find nothing in particular
of lisp lang's features of emacs lisp that made me love emacs lisp,
other than it being a functional language. It is not difficult to have
another language, or a new editor with a embedded lang that functions
similar to emacs. However, emacs just happens to be almost the only
one, or the most prominent one. (i am a expert in Microsoft Word in
early 1990s, and although i haven't ventured into its Visual Basic,
but i know it can do scripting. I'm sure, now after almost 20 years,
and with Microsoft's “.NET”, it possibly might compete with emacs with
its elisp, but i know nothing about it to comment further. (i'd very
much welcome any comment from someone who are a expert of scripting
Microsoft Word with Visual Basic; on how it compares to emacs, if at
all. (if you don't have say 1 year of full-time experience in this,
please spare me your drivel))) (also, numerous emacs-like editor with
embedded lang exist. See: Thoughts On Common And Scheme Lisp Based
As to the reason i am not a fan of the 2 other major lisps: Common
Lisp and Scheme Lisp. These 2, are little used in the industry. Common
Lisp is a moribund dinosaur. Scheme Lisp is little used and is
confined to academia. There is nothing in these 2 langs that i
consider elegant or powerful today. I would, in a blink of a eye,
consider Mathematica, OCaml, Haskell, more elegant or powerful.
I would like to see Common Lisp and or Scheme Lisp die a miserable,
horrid, deaths, due to fanaticism as exhibited by Common Lisp and
Scheme Lisp regulars in newsgroups. I consider these 2 langs not only
impractical and inelegant, but their people are the hog of any
possible progress of lisp in general. (See also: Language, Purity,
Cult, and Deception.)
I do consider lisp, or the lisp way, a lang with lisp characteristics,
can be the most beautiful, elegant language. (in fact, i consider
Mathematica being one such example) However, given the social milieu
of the 3 major lisp communities: Common Lisp, Scheme Lisp, Emacs Lisp,
it might happen when pigs fly.
Of the existing lisps, especially new ones, i support NewLisp, and i
also support Clojure. Personally, i'm not likely to invest time in
them in the next 5 years, if ever. Second to these, i mildly support
I am a avid fan of functional programing, and was a big fan of lisp
too. Lisp, even just 10 years ago, was still a great language, almost
the only one that are much better than all others, in both practical
industry use and also academic theoretical considerations. But due to
the rapid development of software technologies and vast number of lang
today that happened in the past decade, including a profusion of
quality functional langs, i see little point in lisp. (See also:
Proliferation of Computing Languages.)
Water Lin wrote:
I am really confused which kind of Lisp I should focus on...
Rainer Joswig wrote:
Common Lisp is fine. Get a copy of the book Practical Common
Emacs is a simple Lisp dialect for Emacs scripting. It is behind
the times in many ways.
Scheme: Typically one can start with DrScheme and one of the
Scheme books. But I would prefer Common Lisp .
Note that Rainer is a Common Lisp fanatic. He's been posting regularly
in comp.lang.lisp since at least 1999, and it seems to me he does not
know any other functional lang other than common lisp, but always
trumpet Common Lisp in every aspect, and is often aggressive in his
online behavior that you can often see he fight with other lispers
too. I think he's retired in his 50s or older. Much regular posters in
comp.lang.lisp are old. (majority would be above 40 i think. (I'm 40
If emacs lisp is behind the times in many ways, which is true, Common
Lisp is also behind the times in many ways.
If you really want to compare lisps in the context of computer langs,
Ruby, Ocaml, Mathematica, over any lisp. I think that each of the lang
above are superior with respect to the tech aspect. Also, each of the
lang mentioned above has perhaps 10 times more programers than all
You can start with some basic tutorial here:
* Emacs Lisp Basics
* OCaml Basics
* Will Lisp Ever Be Popular?
* Proliferation of Computing Languages
Xah Lee wrote:
If emacs lisp is behind the times in many ways, which is true,
Common Lisp is also behind the times in many ways.
Rainer Joswig wrote:
How would you know? You never have read a book or manual about
Common Lisp or one of its implementations.
* + dynamic scope
* + eval
* + simple compiler
* + simple data structures
* - no objects
* - no lexical binding
* - primitive compiler
* - mostly only available with Emacs
* - no threading
* - never modernized
* - no continuations
* + dynamic scope
* + lexical scope
* + eval
* + compile
* + objects (Common Lisp Object System)
* + sophisticated compilers available
* + threading with multicore-support available
* + can be used for scripting (CLISP)
* + can be used to write applications
* + several independent implementations
* - oldish standard
* - continuations only partially via libaries
If you look around all educational resources (books,
implementations) are around Scheme and Common Lisp. Emacs Lisp is
mostly NOT used in schools or universities. The universities and
schools that teach introductions to programming or computer science
using some Lisp dialect are using mostly Scheme (some are using Logo).
Universities are sometimes offering Common Lisp courses.
I fully agree with what you wrote above.
However, to put things in proper context, if the question we are
asking is which lang to choose among lisp for a imperative programer,
i think emacs lisp can easily be the right choice, for one simple
reason: pracitcal utility.
You see, to a professional programer, who is studying lisp to learn
some new language concept and aspects, elisp is of the most ulility
* A: it has immediate practical utility. Most lispers use emacs
and swear by emacs for its multitude of uses and extensibility, even
if they program only in Common Lisp or Scheme Lisp.
* B: emacs lisp, although technically is useful just within emacs
and text processing, however, contain almost all the essential
features and qualities of lisp that are not in imperative langs.
Namely, nested paren syntax, symbols, lisp macros, functional
Put in other words: if a industrial programer coming from C, Java,
Perl, etc imperative or static langs want to learn lisp's concepts, he
can learn basically all of it with the very simple and useful emacs
lisp. If he is so hooked, he can then trivially extend his knowledge
and start to learn one of Scheme lisp or Common lisp and start to
write whatever real software he had in mind in these langs.
This is why, i recommend emacs lisp, among the 3 major lisps, for
imperative programers who want to venture into lisp.
(for those unaware, there are also NewLisp, Clojure, Arc. Their number
of users, and age of the lang, are roughly in that order given too.)
Now, if a imperative coder is wondering which lang he should learn
outside of his meager C, C++, Java, Perl, type of imperative langs,
for the purpose of enriching his knowledge in comp langs in some
academic sense, then, i do not even recommend lisp in particular. I
would easily recommend: OCaml, Mathematica, over any lisp.
All of us are busy, and all of us geeks always have aspiration to
learn new langs, but not always follow thru. If a imperative programer
tried to learn lisp for half a year in his spare time, then, whatever
he has learned with emacs lisp remains quite useful in his programing
career. If he kept on using emacs, his lisp knowledge will simply
grow. But whatever he learned in Common or Scheme lisp would rather
find no where to go and be forgotten.
More information about the Python-list