Fog Creek Software
Discussion Board




LISP - why?

If LISP is so great and LISP programmers are so productive, can you please name several major applications (or web sites) that were written in LISP, in a shorter time than they could be written in other languages?

Or, it could help if you at least named some modern applications that were written in LISP, so we can see what this language is capable of.


Hint: for Windows applications, you can use a window spy program to examine the window classes of the program's windows.

For example, using MS Spy++, you can press CTRL+F and select the window you want.

If you look at the windows classes, you can many times tell what language the application is written in.

If the window classes start with the letter T (as in TForm, TButton, TBitBtn, TToolbar, TTabSheet, etc), then the application is written in Delphi.

I have examined many applications I use, and many of them are written in Delphi. For example, The Bat! (my favorite e-mail client) and NetCaptor (my favorite web browser) are written in Delphi.

MX
Thursday, December 11, 2003

Another small list of apps that I use (because they are very good) and which are written in Delphi:

- Where Is It?, which is a brilliant CD catalog program with plugins, thumbnails and descriptions support

- Total Commander (formerly named Windows Commander), which is my favorite shell

- MP3 Surgeon, the app I use for processing and normalizing MP3s before uploading to my MP3 player

- The original Allaire Homesite and several later versions were written in Delphi

- LavaSoft AdAware (not much of an app)

MX
Thursday, December 11, 2003

Yahoo Store was written in Lisp http://www.paulgraham.com/paulgraham/avg.html

Orbitz uses a lisp engine http://www.paulgraham.com/carl.html

That's all I can think of right now.

Matthew Lock
Thursday, December 11, 2003

So, where are the LISP examples?

I'm sure that if LISP is as productive as some people claim, then there are several apps written in it.

They don't need to be in the same cathegory as the apps I mentioned - for example, if you written a geology application in LISP, and it's cool, and the fact that you used LISP accelerated development, please post it here!

MX
Thursday, December 11, 2003

There's a list of some here, although I think I remember hearing somewhere that the Yahoo store code has been ported away from Lisp now.

http://www.psg.com/~dlamkins/sl/appendix-a.html

r1ch
Thursday, December 11, 2003

Oh yeah, Emacs is written in Lisp http://plug.org.in/pipermail/plug-mail/2001-July/000402.html

And Autocad has Lisp as it's macro language

Matthew Lock
Thursday, December 11, 2003

A lot of the functionality users of emacs get is via lisp.


Thursday, December 11, 2003

Heaps of links to Commerical lisp applications here: http://www.paulgraham.com/apps.html

Matthew Lock
Thursday, December 11, 2003

http://www.schemers.org/Documents/FAQ/#N1007A

for some Scheme apps.


Thursday, December 11, 2003

If emacs is written in lisp, why do I need gcc to compile it? emacs is a lisp interpreter, but emacs is not written in lisp.

Yahoo store was originally written by that dude in lisp but yahoo could not find a single person that could maintain his outlandish spaghetti architecture and they had to spend a fortune reimplemetning the whole thing so mere mortals could maintain it.

If only the guy who wrote something can maintain it, it's usually not considered to be a great example of computer science.

Remember that example of the yahoo store. You'll hear about it over and over and over again whenever lisp is brought up. It's the only example lispers can come up with that any one can relate to and it is no longer relevant. I'd call it a good example of why you should not use lisp.

No Lisp
Thursday, December 11, 2003

Naughty Dog wrote their PS2 games using a  a custom language written in LISP

edd
Thursday, December 11, 2003

> Yahoo store was originally written by that dude in lisp but
> yahoo could not find a single person that could maintain his
> outlandish spaghetti architecture

Where did you find out that it was spaghetti architecture?

Matthew Lock
Thursday, December 11, 2003

"If emacs is written in lisp, why do I need gcc to compile it? emacs is a lisp interpreter, but emacs is not written in lisp."

Some of it is written in lisp. Some of it is written in C, and hence you need gcc to compile it. However, in terms of lines of code, there's plenty of lisp there. I'm not sure of the stats, but I'd be very surprised if there wasn't more lisp than C.

Anyway, Paul Graham answers the question "If lisp is so great ..." with his reasons at:
http://www.paulgraham.com/iflisp.html

He knows lisp a lot better than I do (I only know enough to be dangerous), so I'll let him speak for himself.

Sum Dum Gai
Thursday, December 11, 2003

"It's the only example lispers can come up with that any one can relate to"

Yeah. Nobody ever heard of emacs or The GIMP for example.

Go away, troll
Thursday, December 11, 2003

Not spaghetti, elbow macaroni

) ) (( ) ( )() ()

Wow Crash Bandicoot and Jack & Daxter were written with Lisp? I've never played them, but that's pretty impressive.

http://www.franz.com/success/customer_apps/animation_graphics/naughtydog.lhtml

=====
Naughty Dog co-founder Andy Gavin, says the unique capabilities of Lisp enabled fast development and execution of character and object control – something that was needed to fully realize the numerous 3D creatures and devices which interact with the player in real-time (60 frames per second).

"Lisp was just the best solution for this job," comments Gavin. "With leading edge game systems like ours, you have to deal with complicated behaviors and real-time action. Languages like C are very poor with temporal constructs. C is just very awkward for a project like this. Lisp, on the other hand, is ideal."

As Gavin explains, "With Lisp, one can rapidly develop meta constructs for behaviors and combine them in new ways. In addition, Lisp allows the redefinition of the language to easily add new constructs; particularly those needed to deal with time-based behaviors and layering of actions. Contrary to popular belief, there is nothing inherently slow about Lisp. It is easy to construct a simple dialect which is just as efficient as C, but retains the dynamic and consistent qualities that make Lisp a much more effective expression of one’s programming intentions."
=====

www.MarkTAW.com
Thursday, December 11, 2003

Go away,

emacs is not written in lisp. Emacs is a lisp interpreter that is written in C. How do I know this? Because I have compiled emacs myself. If you knew so much about emacs you would know this to -- emacs is a lisp interpretor written in C. It comes with a library of lisp routines, certainly, just as any interpreter has source code available to be interpreted.

Emacs is not an example of an application that is written in lisp. Emacs is a lisp interpreter.

I fell like I am speaking to rela dullards. you guys sreally do not understand this do you? Emacs is NOT written in lisp. Emacs is a lisp interpretor. I could say it all day couldn't I and you still would not understand.

Lisp begone
Thursday, December 11, 2003

Crash Bandicoot and Jack & Daxter are not written in lisp. Crash Bandicoot and Jack & Daxter are written in C. Crash Bandicoot and Jack & Daxter include a lisp interpreter and the AI uses lisp as its scripting language.

Lisp begone
Thursday, December 11, 2003

Emacs consists of a part written in C and a part written
in Emacs Lisp. The part written in C includes an Emacs Lisp interpreter.

It is not true to say either "Emacs is written in C (and not in Lisp)" or "Emacs is written in Lisp (and not in C)". A considerable fraction of Emacs is in Lisp (about half, says my unreliable memory).

If Emacs is a success, I think it's reasonable to call it a Lisp success as well as a C success.

Of course, if all you're interested in is bashing one language or the other, you get to choose. Either "Emacs, the world's most powerful and configurable text editor, is written in {Lisp,C}. What need is there for {C,Lisp}?" or "Emacs, the world's slowest, most painful text editor, is written in {C,Lisp}. See how bad it is?".

Gareth McCaughan
Thursday, December 11, 2003

In order to grok lisp, you have to be a good programmer, and spend some effort in getting effective in it (even if it's all intuitive, as it is to some, there's still a lot of details to be learned - scheme makes that somewhat simpler, but there's still a lot to know).

Most software projects assume, upfront, that staffing will change frequently; So a good business decision is to use a low-enough common denominator, such as VB, Java, C or C++.

Even though many projects will benefit immensely from using Lisp, it is unrealistic for them to assume that Lisp talent will be available for hire when they need it. [And .. in the last 10 or so years, in which professional programming competence is breaking new lows every day, even the awareness that this is the case is gone].

And if you're looking for unsung heros, add K/J/APL to the list. These can increase productivity even more than lisp, and are even less known (for pretty much the same reasons, just with an effect that goes farther).

Ori Berger
Thursday, December 11, 2003

"emacs is not written in lisp"

I never said it was. What I said was "A lot of the functionality users of emacs get is via lisp". If you can't read or can't understand then that is your problem. Now go away, troll.


Thursday, December 11, 2003

EMACS is an ancient, horrible text editor.

I belive that the modern approach (Windows text editors such as EditPlus, or other scriptable alternatives) are much, much better.

Orson
Thursday, December 11, 2003

Guys,

Emacs, AutoCad, so on ARE NOT WRITTEN in Lisp. I love Lisp. but these programms are written in C and they have internal Lisp interpreters (written in C...) so the applications can be extended in various ways.
It is very similar to today's application that support add-ins/plug-ins (via COM). Because some of those plug-ins are written in VB one cannot say the host application itself is written in VB.
Got it?

danpop
Thursday, December 11, 2003

There was a joke back in the 80s when Reagan's SDI program was in full swing that someone stole the Lisp source code to the missile interceptor program and to prove it he showed the last page of code...

)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

old_timer
Thursday, December 11, 2003

People, c'mon,

Lisp was primarily used in AI problem solving / programming... so of course there aren't going to be any big name desktop applications written entirely in it. It's more likely to be found in custom developed software used by scientists and researchers.

For a good example of where its used, look here: http://www.red3d.com/cwr/boids

This basically boils down to a 'right tool for the job' question.

It was the wrong tool for the Yahoo Stores job not because of the language itself, but because of the (perceived?) lack of lisp knowledge required for maintaining and enhancing it once it was delivered.

And despite what Orson says, emacs is still my preferred editor because its the most extensible and scriptable editor out there _for my current needs at this point in time_
(e.g. works in Windows and FreeBSD, supporting C#, Ruby, ASP etc. etc.)

Your needs however, may be different.

Gordon Hartley
Thursday, December 11, 2003

Bah, all this Lisp talk.

APL is the true language of choice -- as proof that it was given to us by aliens, look at the character set it uses!

SG
Thursday, December 11, 2003

Gordon, I'm glad that somebody here still remembers boids. :)

You know, somebody made a cellular automaton that emulates a 2D boids simulation.  Craig Reynolds's page on the 'deconstruction' of boids functions is also a lot of fun (that is, other kinds of local rules from which flocking/fleeing etc emerge).

But is that such a great example of Lisp?  I would think that somebody would mention any Mathematica-like system, since (I think) McCarthy originally created Lisp to describe an algorithm for symbolic differentiation.  Incidentally, that's still a great example of where a language like C loses out to a language like Lisp.  The reason is just that they're based on two different models of computation (though obviously both can be expressed in terms of the other if necessary).  If you've got a problem that requires that kind of symbolic treatment (eg: parsing HTML, doing algebra/calculus, L-systems, etc) then you're going to do it in a Lisp-like language one way or another.

K
Thursday, December 11, 2003

Commercial app written in Lisp?  Uh... Microsoft Bob.

Ducking and running
Thursday, December 11, 2003

Maxima, which is a computer algebra system ( http://maxima.sourceforge.net/ ). I think that Mathematica was based on Macsyma, the precursor of Maxima.

uncronopio
Thursday, December 11, 2003

AutoCAD still supports Lisp, but all serious applications written on top of it are in C/C++. They've added a COM model and people are writing add ons in VB and Delphi too. Autodesk has added VBA support which many are using.

So, while Autocad still has a lisp interprester built in it's being phased out, for better or worse.

In my opinion, one of the problems with Lisp is the fractious debate amongst the lisp fanatics as to whose variant is the one true path.

pdq
Thursday, December 11, 2003

I think fragmentation is Lisps biggest problem.

Even Lisp's biggest advocate is busy writing Arc.

Ged Byrne
Thursday, December 11, 2003

>Gordon, I'm glad that somebody here still remembers
>boids. :)

>But is that such a great example of Lisp?....
>... If you've got a problem that requires that kind of >symbolic treatment (eg: parsing HTML, doing >algebra/calculus, L-systems, etc) then you're going to do >it in a Lisp-like language one way or another.

Yeah, managing to simulate flocking behaviour with such a simple ruleset was quite amazing, although to be honest, I don't really know if its a 'great' example of using Lisp. I originally came across boids in a few books (Kevin Kelly - Out of Control, Steven Levy - Artificial Life) and was just suggesting it was the sort of area people should be looking in where Lisp is productive (as per the original posters question).

Some of the other CA / GA applications were really cool as well (effectively leading to stuff like texture explorer plug ins for photoshop, or 'growing' trees / clouds etc. in stuff like Maya). No idea what these things have (or should have) been implemented in language-wise though.

As you mention in your symbolic processing comment, I'm sure there are much better 'natural' solutions out there in Lisp like parsing stuff, maybe like solving path finding or chess problems as well?.... which may well require very convoluted solutions using something more 'run of the mill' like C or C++ / Java etc. Not really my area of expertise though.

Given recent threads here, what people seem to fail to recognise is that Lisp programmers are only 'productive' in solving problems that Lisp can easily be applied to.

The same rule applies equally for every other language.

It's trying to find the balance between knowing enough languages which are useful often enough to get the productivity increase vs. losing productivity in a particular language because you're investing less time in learning the nitty-gritty details which also make you more productive.

People may be suprised to hear that there are some very large _new_systems still being developed using COBOL because its perceived as being most suitable for the situation (taking into account productivity, performance, ongoing maintenance and so on).

Unfortunately for me at the moment VBA / script is 'most productive' at the moment as its the right tool for the job in my current situation...  :-\

Gordon Hartley
Thursday, December 11, 2003

As has been noted, the Lisp environment in Emacs and XEmacs is written in C, but "Emacs is largely written in a dialect of Lisp" [Emacs FAQ].

"XEmacs also contains a great deal of Lisp code. This implements the operations that make XEmacs useful as an editor as well as just a Lisp environment, and also contains many add-on packages that allow XEmacs to browse directories, act as a mail and Usenet news reader, compile Lisp code, etc. There is actually more Lisp code than C code associated with XEmacs"  [XEmacs documentation, "Internals"].

A number of Emacs clones are written entirely in Lisp: e.g., EINE, ZMACS, Hemlock. And, as noted above, editing support and most of the common tools used in Emacs/XEmacs are written entirely in Emacs/XEmacs Lisp.


Franz has a list of CL "success stories": http://www.franz.com/success/

ME
Thursday, December 11, 2003

Bunch at http://alu.cliki.net/Success%20Stories

Also check out http://www.lemonodor.com/ for lots of case studies and videos.  Though note he also talks about robotics and the odd porn studio visit.

Offtopic, it drives me nuts that this Goedel,Escher,Bach-like music & lisp book was just taken offline because copyright was transferred to the publisher.  It doesn't seem to be on Amazon. :(
http://lemonodor.com/archives/000602.html#000602

Tayssir John Gabbour
Thursday, December 11, 2003

look fuckers, lisp is tight, and fun. most of you douchewads just want to sit around with your precious J2EE or .NET and write billing systems for general motors. ENJOY!  the badasses of the bunch still love life, and love programming, and will check out shit because it is cool. DONT BE A DICK.

traveler
Thursday, December 11, 2003

Lisp begone,

You are wrong when you say Jack & Daxter is not written in Lisp (GOAL) for the Playstation. In fact, most of the code was compiled directly from lisp to Playstation machine language using a proprietary compiler created for the purpose:

>Of the 1.2 million lines of code, roughly 900,000 lines are written in GOAL. GOAL is a programming language based on LISP or rather Scheme (which is a dialect of LISP). Very few studios in the video game industry will write their own compiler to produce a game, which is a feat in its own right. However, when we began developing for the Playstation 2, the choice was made to create new technology that would squeeze every ounce of performance out of the hardware. GOAL produces some of the most optimized code for the Playstation 2 platform to date.

Truely, Lisp begone you are an idiot and should stop spouting off your uninformed statements. Lisp has come of age and is being directly compiled into cutting edge and popular 3d action games.

Lisp Begone
Thursday, December 11, 2003

The problem with Lisp is there is no stardard binding to system libraries. No matter how "powerful" a language is, it's useless if you can't printf(), connect(), or CreateWindow(). (yes all these have been bound into Lisp, but there's no standard runtime)

It has been shown that the basic structure of XML is nearly isomorphic to Lisp S-expressions (strings and nested lists of strings). So in a very round-about way you could say that any XML application has a hint of Lisp in it.

Dan Maas
Friday, December 12, 2003

>> If the window classes start with the letter T (as in TForm, TButton, TBitBtn, TToolbar, TTabSheet, etc), then the application is written in Delphi. <<

This isn't related to the Lisp discussion but I thought it important to point out that this isn't true.  The "T" means the application was likely written with a Borland product but not necessarily Delphi.  C++ Builder also uses the "T" naming convention (and I think the same library?). 

SomeBody
Friday, December 12, 2003

I'm a Lisp programmer.  Why should I bother to convince others to use Lisp?  What's the point? If you don't have the imagination to visualize the utility of advanced language features, it's doubtful that you would write anything interesting anyway.

........................................................

I remember how last year we shipped a version of our software specific to a new country.  We just added a thin layer of code :around our general toolkit.  (In contrast, our competitor had country specific business rules embedded deeply into their code, and required a complete rewrite).  It's not that we guys rule and those guys suck: they were using the wrong tool.  Lisp is the right tool for large, ill-defined systems.

We were net profitable in under one month.


(Sorry about the anonymous, nothing personal).

Anonymous
Sunday, December 14, 2003

"Crash Bandicoot and Jack & Daxter are written in C."

True for Crash Bandicoot, false for Jak & Daxter."  The latter is written *entirely* in a custom language.  The compiler for that language is implemented in Lisp.

Regex Coach (http://www.weitz.de/regex-coach/) is written in Lisp.

x
Tuesday, December 16, 2003

*  Recent Topics

*  Fog Creek Home