Software Development

Poll: Have you used Lisp?

Find out why Justin James calls Lisp the Mr. Bungle of programming languages, and then let us know your experience with Lisp.

Lisp never achieved widespread popularity, but it has found its way into interesting places (like the macro system for emacs), and its derivatives (such as Scheme) have popped up in interesting places as well. All the same, its influence has been on the upswing lately, as languages like C#, Ruby, and Python incorporate more and more ideas that Lisp pioneered (such as lambda calculus). Lisp is like that band that not so many people have listened to, but every band you like lists them as an influence -- the Mr. Bungle of programming languages, if you will.

I have not used Lisp, but I have used Scheme, and I enjoyed the experience quite a bit. What is your experience with Lisp?

J.Ja

Also read: Vale John McCarthy: Lisp creator and AI pioneer and Webcomic: The legacy of LISP

About

Justin James is the Lead Architect for Conigent.

31 comments
APBorsa
APBorsa

Around 1995, she was 12, had (still has) a 'Daddy enthusiastic programmer', a lot of school mates eager to 'have the miracle machines doing what THEY wanted, not what somebody else dictated', ... well, I started a mini programming course on Saturday mornings. Basic and Logo, of course. The kids were really bright (at that age!), I had been using Lisp since 1986 for cryptology applications (infinite integers handling, DB-nearly-embedded-into-it), I gave it a try using MuLisp, an outstanding product from The SoftWarehouse in Honolulu. No more of it: four out of five of them after two lessons only bluntly (you are blunt at that age!) stated that anybody using basic instead of Lisp must have 'a few wheels rotating in the wrong direction in his brain'. Two of them, under my diabolic influence, enrolled in C.S. Now I am 63, they are 30, all of us still use Lisp for real s/w development. P.S.1: often we deliver without saying the end user 'what is running under the hood': no complains from him, we are often ahead of schedule, but can you imagine the 'ohhhs and ahhhs' from people who somebody do not even back up data and run sensitive appls w/o a UPS? What comes out better in C/C++, C#, F#, Ruby, J2Me (we are in the embedded business), Forth and the like is of course developed that way. More on the subject of being 'snobbish dvelopers', and for the embedded aficionados: do not be fooled by too many IDEs, store a Forth metacompiler INTO THE VERY POWERFUL MCUs of today's and debug 2x faster than the competition! Bonus: nobody steals your firmware. Merry Christmas and a Happy New Year to everybody. (P.S.2: we are in Italy, not in the Silicon Valley or at Purdue or Carnegie-Mellon or MIT!)

dennis473
dennis473

I used to teach it in our Organization of Programming Languages course and for our AI course. I've actually never incorporated it into any of my application programs, though.

jose.montenegro
jose.montenegro

I was exposed to a Lisp porting on a full range of systems by 1990. I was the support engineer for the group porting Lisp into my operating system product line. Funny. It remembered me of HP pocket calculators HP35, HP45 and HP65 requiring Polish notation against the TI that used the more natural one. I made very basic things just looking for bugs or inadequation of the Lisp implementation on my OS. We had a major one that appeared to be at the end one of the classical Intel 'features' that "destroyed" stacks when calling pure protected mode ops without emptying the prefetch buffers. I recently installed Common Lisp in one of my Ubuntu desktops but still have not done any significant work. It was more to review functional language programming before trying to understand MS F#.

rossjrichardson
rossjrichardson

never used, never seen the syntax, not in my degree or job.

jackdelon
jackdelon

i have used it before when i am working for my colleague. Looking to use it again.

CFWhitman
CFWhitman

I've used Lisp fairly extensively for AutoCAD programming (and my programs still work in AutoCAD Mechanical 2011). I've also used it a little to customize Emacs. The way I always heard it, the joke acronym for Lisp was, "Let's Insert Some Parentheses." I found it rather ridiculous that the death of Steve Jobs garnered so much attention in the tech industry while the deaths of Dennis Ritchie and John McCarthy (the inventor of Lisp) at around the same time seemed to be barely noticed. From a business perspective, Steve Jobs' death may have been more momentous, but from a technical perspective, Dennis Ritchie and John McCarthy were each a bigger influence on the current status quo.

LadyReader
LadyReader

But we said it stood for List of Infinite Sequence of Parentheses

alessimarco
alessimarco

I'm using it with AutoCAD from about 20 years ago and I have done many interesting things, I hope still lives... Marc'Antonio

danielb34
danielb34

...to realize four things: 1) With the ability to have Lisp software write and execute new code on the fly based on in-software decision-making, it was inherently dangerous no matter how used. "Clever" software is not the developer's friend, particularly in environments where such behaviors could put people at risk; 2) It was optimized for a tagged run-time architecture that made it dependent on extremely expensive and otherwise useless specialty hardware. Non-specialty-platform implementations left much to be desired in terms of both capability and performance. That alone made Lisp impractical for anything beyond the most demanding and task-isolated large-scale Artificial Intelligence applications; 3) Its object-oriented approach was very powerful, but after the advent of C++, it was all too apparent that outside of large-scale cutting edge AI applications, there was little one could do with Lisp that could not also be done with C++ -- more securely, on commodity platforms, and with substantially faster software execution. 4) Lisp was a cult-worship object -- and its most ardent followers would go to great lengths to try to convince anyone who'd listen that developers who used Lisp, particularly for Artificial Intelligence applications, were a unique species of super-intellects dealing with matters that their intellectual inferiors (that's us, folks) could never ever understand. And that, boys and girls, was my experience with both Lisp and some of its most rabid practitioners.

Brian.Buydens
Brian.Buydens

My favourite lisp book was "Let's Talk Lisp" by Laurent Siklossy. He had a really twisted sense of humour.

orendon
orendon

I use it as a calculator, i have a library of functions made in lisp to calculate combinations, permutations, exponentials, conversions etc., but i also like perl for text processing, proccessing and povray for 3D animations and R for statistics

Hazydave
Hazydave

.. and the acronym, far as I learned back in the 80s at CMU, was "Lots of Ignorant, Stupid Parentheses".

Hazydave
Hazydave

I used it mostly in college.. it was the primary language for psychology and AI courses at CMU (I took five of these... I was working on a self-defined Psychology "minor" as well as an EE and Math/CS double-major). And Guy L. Steele, Jr. taught my "Comparative Languages" course, so naturally, more LISP there. We had the choice of MacLISP (based on LISP created under McCarthy and Project MAC at MIT) and InterLISP... I was a hardcore MacLISP guy. I wrote two LISP interpreters of my own. The first was a "spare time" project, when I was right out of school. This was originally written at General Electric in VAX Pascal, and for all I know lives on there somewhere. I ported a version of it to AmigaOS in the later 80s, but eventually got side-tracked on other projects, so it was never finished. A second one was done as part of a compiler project. The compiler itself needed a database language, so I wrote what eventually became a full LISP interpreter as part of the list-based database for this compiler. Not the best way to build a database, speed-wise, and certainly nothing I'd had done given today's tool sets. But it had the advantage of being crazy extensible... new stuff could be added to the database all the time without compromising the existing data in any way.

JavaJobber
JavaJobber

I used LISP heavily for AI in college. I even wrote software to control a Mars rover simulator for a class project! LISP wasn't so bad when it was precompiled, but I preferred having better debugging tools like the early C language GUI symbolic debuggers. In the world of commercial software, I saw a Scheme derivative called Monk used for scripting in SeeBeyond eBusiness Integration Suite. They replaced it with Java (which had decent debugger hooks) and then SeeBeyond got acquired by Sun Micro. The manual is still available on download.oracle.com so somebody's still using it!

Dethpod
Dethpod

But in jr high, I beat up a kid who had one.

phil.beach
phil.beach

I used LISP ever so breifly while doing DOD work back in the middle 80's. BUT what we did actually use on our Motorola Microprocessor control ssytems was a language similar called FORTH. Anyone ever use that? Or better yet -- On a microprocessor level platform? It sure beat the 6809 assumbly language which was out other option.

mikep
mikep

I used autoLISP with Autocad about 18 years ago. I just remember parenthesis hell, until I found a color coded editor. I forget all the reasons I used it, but I worked with in the Electrical department at an engineering firm procuding the electrical floor plans. LISP allowed me to automate a lot of the drawing processes within Autocad.

crichman1109
crichman1109

Was known as Loads of Silly Infuriating Parentheses - Enough said.

clearmiddle
clearmiddle

I worked with Cadence Skill about 14 years ago. I found it quite useful, but this variant of lisp also allowed a c-like syntax and my coworkers had no intention of learning to use the lisp syntax, limiting the degree to which I could use it myself. I first encountered lisp in college, 40 years ago. It didn't make a lot of sense to me at the time, but when I was teaching myself Skill I pulled out my college textbook (which I still had for some reason) and NOW it made sense. I guess it just takes a while for it to sink in. Of course it helps to have a reason to learn it.

Bizzo
Bizzo

I take it my comment was removed because it linked to my blog? Sorry, wasn't spamming. This is the content of what I linked to: Farewell to Professor John McCarthy, inventor of LISP and major contributor in the field of Artificial Intelligence. (From Wikipedia: "He was responsible for the coining of the term "Artificial Intelligence" in his 1955 proposal for the 1956 Dartmouth Conference and was the inventor of the Lisp programming language.") I remember years ago programming in LISP at University, it was amazing. Having been brought up with BASIC, COBOL and then Pascal, being introduced to LISP, Prolog and Artifical Intelligence in the late 1980's was simply awesome. Unfortunately I've forgotten most of what I've learnt with regard to AI programming, maybe it's time to revisit? Maybe it's also time to think about the computer scientists of the 50's, 60's and 70's. The ideas they had, the languages they created and the inspiration they instilled for generations of programmers. I'm sure that the developers of Siri, many moons ago, dabbled in LISP, maybe read a paper or two from Professor McCarthy, maybe that's where their interest in AI came from? When moving forward, it's always a good idea to look back once in a while, just to see whose footprints you've walked in.

public
public

Used it in college as part of my Computer Science degree. Never used it in the real world.

Mark Miller
Mark Miller

When I was first exposed to it 20 years ago I could not make head or tail of it. I promised I'd never look at it again. After reading "Beating the Averages," by Paul Graham, and several other articles that trashed Java and praised Lisp 5 years ago, I decided to give it another try. I was surprised that it wasn't as hard as I thought it would be. I've been studying "Structure and Interpretation of Computer Programs," by Abelson and Sussman, off and on, using Scheme, for the past couple years. I've done some work in it that's really interested me. I haven't found any practical use for it yet, but I don't know that "practical" is quite the point for me anymore. What's interesting to me now is finding out about the great things that have been done in computing, and seeing where that leads me. I have been fortunate enough to meet a few people who have used Lisp "out in the wild" through my local Lisp users group. Every time I meet them, though, they don't talk about Lisp so much as system issues, usually having to do with Unix/Linux. They sound more like system administrators. Maybe someday I'll understand that. Perhaps it has to do with the Lisp ethos, rather like that of Smalltalk, that the software you work on and the system you use have such close parallels to each other in terms of structure, that it's no big deal to go from one to the other. The system is the software, and the software is the system.

APBorsa
APBorsa

Se non commetto gaffe sei un connazionale. Ho aggiunto una lunga nota al filone 'Viva il Lisp, Abbasso il Lisp'. Buone Feste. Alan

alex543
alex543

Ah, a rabid C++ practitioner speaks up! 1. The ability to "write and execute new code on the fly" is not unique to Lisp, and in fact since several Lisp compilers (and most compilers for other languages) have been written in C, it should be obvious that there's nothing wholly new here besides making abstraction easier. I've never once seen Lisp create dangerous code on-the-fly in actual use, but I have seen countless programs in C++ with silent buffer overflows, silent integer overflow, and so on -- aren't these even worse "clever" optimizations that have caused actual damage? 2. False. It was originally designed to be a way of talking about recursive algorithms on a blackboard, not for computers at all. There was one dialect in the 1980's (Lisp Machine Lisp) that was written specifically for tagged architectures, but it was never very popular even in Lisp circles, and in only a couple years its performance had been bypassed by general-purpose machines. Today's Lisp compilers are some of the fastest compilers to be found. (Even if it was true that Lisp was designed for a tagged architecture, that doesn't say anything about modern compilers. After all, C was designed for writing a computer game for an 18-bit, wire-wrapped minicomputer, but we don't hold that against it today.) 3. I don't know why you keep bringing up old canards like "AI", "security", "commodity platforms", and such. (It sounds like you got all your information from a 1983 marketing brochure!) I would, however, ask you to demonstrate why you think C++ is sufficient. For example, get a copy of SICP or PAIP and show how the algorithms there can be implemented in C++. I've tried this, and you'll find it takes many, many pages of C++ code (or external libraries), to do some things that Lisp can do quite simply. 4. Again with the AI! At least this time it's a bit different because you threw in an ad hominem attack. I guess I don't have the experience you did. I've never used Lisp for AI, and I've never heard anyone say that Lisp programmers "were a unique species of super-intellects". I'm sorry you were treated poorly, and I hope that someday you can learn to separate the message from the messenger. I hated my high school English teacher but I didn't respond by abandoning English and telling others they should, too.

PhilippeV
PhilippeV

I have always like Forth as a good meta-assembly language. In fact all compilers will generate internally an intermediate form similar to Forth, before compiling it to a more final binary form or running it directly with a very simple interpreter (including Java or MSIL for .Net). And there's absoutely no reason why Forth or Lisp or Postscript would not be supported the same way, with the benefits of the modern VMs that support *managed code* which has proven now to be very fast, much more reliable, supporting more architecture, being more easily scalable to newer architectures, benefiting automatically of the additional CPU or GPU acceleration technologies and of virtualized networking environments (including flexivility and optimizations in deployements between servers and workstations). The world is going now to manaed code, because we need it also to scale it on multiple hosts, or support the same programs over a larger set of devices (including mobile devices). I've said goodbye forever to C and C++, which only produce a static optimization only targetting specific architectures. Yes we have now "managed C" or "managed C++", but things are much less tricky when using Java or .Net: now the same applications compiled for VMs are MUCH faster in those VMs (because they are optimized only for a specific range of CPUs, or fail completely or are incompatible if they are not specifically recompiled for others, or are underoptimized only to offer better compatibility, or are unnecessarily inflated with slow dynamic load of platform-specific code and lots of tests throughout the code), and work on a much larger set of devices or computers, and offer a MUCH simplified deployment scheme to developers. Today, VMs rock ! Because there's a clear separation between the application code and the architecture-specific support built in the VM, that can produce very specific optimizations on the fly and locally without altering the application code (for example reschdeduling the application for parallelism, including large-scale parallelism using GPUs, or distributed computing in a virtual OS running over a network, even when this network includes heterogeneous systems with different CPUs such as x86, x64, IA64, GPU/APU, and mobile RISC processors, with or without multiple cores): if some code cannot run locally with enough performance, a VM can rescedule the code to work somewhere else, and we have a much better global reuse of available computing resources (including those available on demand in a cloud, if the network links or buses are fast enough to support some reasonnable response time constraints). Forget C and C++, these are languages of the past that have costed too much to support. Let's go to managed code supported by VMs.

mcondorx
mcondorx

We had the similar saying "Lots of Insane Silly Parantheses" My huge gripe was that parens are "upper case" characters, and a list program can consist of almost nothing but parens :) So I finally decided to code it using "[" which is lower case, and then run a teco macro to fix it up. . .

GuyHarel
GuyHarel

We evaluated LISP for its vector processing capabilities, but finally opted for APL, which whas far superior. One of the nerd in class wrote an IBM 360 simulator complete with processor and memory and a compiler for its virtual machine...all in APL. These were the real times ! Now all we take about is about how shiny the buttons are on my iPhone...

tkofford
tkofford

Also used it in college as part of a CS degree. The instructor that taught the course "loved" LISP, but he was, by far, the worst teacher that I ever had. His nickname among CS students was "Dr. Death". Can't say I dislike the language, but LISP always makes me think of "Dr. Death", and what a terrible course/experience it was.

alessimarco
alessimarco

S?? se cerchi 'alessi xoom' mi trovi. Ero qui di passaggio non frequento molto questo sito, 'Viva il Lisp, Abbasso il Lisp' dove lo trovo? Buone Feste a te. Marco

Mark Miller
Mark Miller

If you look at Smalltalk code, there are a lot of square braces, which represent lambdas. Incidentally, if you look at the Lisp 1.5 Programmer's Manual (http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf), you can see that McCarthy and his co-authors had worked on M-expressions for Lisp that made it look more like a conventional language (which also used square braces). This wasn't adopted in the Lisp community though, which opted for S-expressions, with all the parentheses.

Professor8
Professor8

We had several weeks of Lithp as part of a survey course, and it seemed (a) deterministic and (b) useless. Several years later I came across a different interpreter that was more robust and full-featured, and thus had more interesting uses. But it was still a mere play-thing, and never seemed to have any relationship to anything that could honestly be called "artificial intelligence". OTOH, a friend did some work at the state dept. of educationism and used APL for all sorts of nifty things, from budget projections to data-basing of their data archives. I fiddled with it, but never found a good-fit use on the job. My favorite quirk language was SNOBOL for string/sequence processing. It could be totally amorphous with every instruction including a branch, but mostly we played nice. Pascal straight from ETH Zurich was mostly a toy, too, but Apple seemed to pound a version of it into productive form. Mostly, Fortran (with various pre-compilers and bits of assembly language) was the bread-and-butter super-computing language of the 1980s, until we followed the mob to C in 1986 and then C++ in the mid-1990s and then Objective-C in 2000-2002 (trying to make the transition amidst the recession and taking a financial hit in the process). Others preferred TUTOR (developed at UIUC for PLAyTOy) for game programming. The educationists turned it into a hog, though, by building in a horrendous amount of logging. i knew some people who took a Cobol class. One wrote a Fortran program to generate the required long Cobol programs from a few lines of directives. Another wrote a program to generate machine language instructions and then performed them. A third had a prof who kept having to stop to ask him whether that's the way it worked on our systems.

Editor's Picks