[PLUG-TALK] Re: [PLUG] Any lispers out there? Newbie needs booster shot

M. Edward (Ed) Borasky znmeb at cesmail.net
Sun Aug 21 07:59:32 PDT 2005



Carlos Konstanski wrote:

> Isn't AutoCAD also written in lisp?

It was originally ... the absence of an army of inexpensive Lisp 
programmers might have forced them to rewrite it. :)

> I do make $$$ writing java struts apps.  I don't intend to quit my day
> job.  But I am of the opinion that java sucks.

Define "sucks".

>   I think lisp compares
> unfavorably to languages like java in today's business world for the
> same reason all other business decisions are made - marketing.

I'll let the good Doctor Shepard speak to the joys of small business 
decision making. Let me focus on how *large* businesses, like ADP, Sun, 
IBM and Intel, make decisions. It's a complicated process. A large 
corporation is what we refer to as a complex adaptive system. If you're 
looking for some theory, Nobel Laureate Herb Simon and, more recently, 
John Holland, are good places to start. Marketing is just one piece of 
the puzzle. Sales, engineering, finance, manufacturing, accounting, 
public relations, human resources and legal considerations all weigh in 
on most major decisions.

Now let's specifically talk about Lisp versus Java. As I noted above, 
there is not an army of inexpensive Lisp programmers. There is a (small) 
army of (relatively) inexpensive Java programmers. I say "small" and 
"relatively" because there is a huge army of very inexpensive 
(free/volunteer in some cases) C and C++ programmers out there. Just 
about every new language and operating system, even languages like Lisp 
that are written in themselves, have at their core at least a few dozen 
lines of C or C++.

There is not a "Lisp corporation". There used to be one, but they went 
out of business because they made bad business decisions. Actually, 
quite a few businesses sprung up around MIT/AI/Lisp/Scheme concepts, but 
those without military backing have all but disappeared from the face of 
the Earth. There *is* a Java corporation. It's called Sun Microsystems. 
Java and half a dozen other cutesy names are Sun trademarks. There isn't 
an ANSI standard for Java; there is a de facto standard and it belongs 
to Sun. Read the license agreements the next time you download the Sun 
JDK or JRE.

>  Java
> sounds cool, while lisp does not.  There is money behind java, pushing
> it into our workplace, while lisp is nothing more than a specification
> and a handful of kooks who keep it alive with their efforts in
> implementing the specification.  God, I love those kooks!

Well ... it's not as small as a handful and not as large as a small army 
:). There are four free/open source implementations of Lisp in wide use 
today, mostly adhering or trying to migrate towards the ANSI Common Lisp 
spec. They are Carnegie Mellon University Common Lisp, CMUCL, Steel Bank 
Common Lisp (SBCL), a descendant/rewrite of CMUCL, GNU Common Lisp 
(GCL), a descendant of Kyoto Common Lisp, and GNU Clisp, the history of 
which escapes me at the moment. There are also some commercial Lisp 
environments available for PCs and Macs, though I've only briefly (three 
weeks last year) dealt with one of them -- Macintosh Common Lisp.

All told, the number of people in the world who can and do program in or 
on Lisp on a "regular basis" -- more often than three weeks a year, 
let's say :) -- is probably somewhere between 1,000 and 10,000. Without 
a doubt most of them can and do program more often in some other 
language. Lisp, however, isn't just a theory and a programming language 
-- it's also a way of thinking about construction of programs that can 
carry over into other languages.

I personally think in all the history of programming languages, there 
are really only a small handful of innovative languages: **macro** 
assemblers, Lisp, Forth, APL and Smalltalk for sure, and maybe COMIT, 
SNOBOL, FORTRAN and Algol.

[snip]

> The main area where lisp reigns supremee is its avoidance of strings.
> The best example I can think of is the code I'm currently working on -
> HTML generation.  Instead of writing a 50 megabyte library to separate
> view and controller (I speak of struts/jsp here), a lisp library like
> araneida can allow the HTML and the controller code to be freely
> intermixed with no distincion between the two, and it requires only
> one small lisp function to implement it.  Araneida's implementation of
> an HTML library is very succinct; it does not actually implement
> functions for HTML, BODY, etc.  It merely rewrites the list you feed
> it as markup, and it doesn't care at all what the symbols mean.  A
> library that does implement every HTML tag as a lisp function would
> give the added advantage of telling you when you spell "html" wrong.
> I think portable aserve and lml do exactly that.  Compile-time
> checking of HTML - what a concept!  It is only possible when you don't
> treat data and functions as different animals.
>
> A fine example of string abuse is XML.  What is XML?  It is a bunch of
> strings with metadata included to help you find the strings.  Struts
> is built upon XML.  Can the compiler tell you when you made a typo in
> your struts-config.xml file?  I should say not.  So how do you find
> out you made a typo?  When you're starting at a blank white screen in
> a browser, with no error message of any kind, of course.  XML is
> derived from lisp s-expression syntax, but it took a seriously wrong
> turn when it stringified the data.
>
> A traditional java servlet puts all the HTML into strings.  Struts/jsp
> gets you away from that, but at the price of introducing more huge XML
> files into the equation, separation of the code into more files, and
> poorer debugging.  And is it really doing anything different than a
> lisp macro?  No - the jsp gets parsed and rewritten as a traditional
> servlet.  Ironically, that is the smartest thing about using java to
> write a webapp.  Of course, it's done in the usual, massively overbown
> java style.
>
> They say that the average programmer writes the same number of lines
> of code in a day of work, no matter what language they are writing in.
> Java, XML and XSL are highly verbose, while lisp is super compact.  I
> think I heard somewhere that lisp weighs in at 1/10 the verbosity of
> java.
>
> So does the discriminating developer need to use sucky languages like
> java 40 hours a week?  Because of human nature and marketing, the
> answer is a somber "yes".  But there's no way I'm going to write
> personal code in anything but common lisp from now on.

It's interesting that nowhere in this discussion have you mentioned the 
big new kid on the block -- Ruby on Rails. That's my current project -- 
learning Ruby, Ruby on Rails and web application development 
concurrently. Get out your favorite search engine and look for Ruby on 
Rails and enjoy ... you just might change your mind about Common Lisp. 
I'm a big Lisp fan, and I'm open to RoR as a result. Actually, it might 
be easier if you point your browser to

http://del.icio.us/znmeb

There's a lot of "stuff" there because I'm interested in a lot of 
"things", but a good chunk of it is Ruby/Rails related. I didn't make it 
to OSCON but the "buzz" is that RoR was the big hit!!



More information about the PLUG-talk mailing list