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.
Discussion on:
View:
Show:
Used it in college as part of my Computer Science degree. Never used it in the real world.
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.
Can't say I dislike the language, but LISP always makes me think of "Dr. Death", and what a terrible course/experience it was.
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...
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.
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.
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.
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.
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.
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.
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. . .
My huge gripe was that parens are "upper case" characters, and a list program can consist of almost nothing but parens
"[" which is lower case, and then run a teco macro to fix it up. . .
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.
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.
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.
Anyone ever use that? Or better yet -- On a microprocessor level platform? It sure beat the 6809 assumbly language which was out other option.
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.
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.
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!
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!
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.
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.
.. and the acronym, far as I learned back in the 80s at CMU, was "Lots of Ignorant, Stupid Parentheses".
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
My favourite lisp book was "Let's Talk Lisp" by Laurent Siklossy. He had a really twisted sense of humour.
...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.
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.
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.
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.
I'm using it with AutoCAD from about 20 years ago and I have done many interesting things, I hope still lives...
Marc'Antonio
Marc'Antonio
Se non commetto gaffe sei un connazionale. Ho aggiunto una lunga nota al filone 'Viva il Lisp, Abbasso il Lisp'. Buone Feste. Alan
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
'Viva il Lisp, Abbasso il Lisp' dove lo trovo?
Buone Feste a te. Marco
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.
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.
i have used it before when i am working for my colleague. Looking to use it again.
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#.
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.
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!)
- Keyboard Shortcuts:
- Prev
- Next
- Toggle

































