Examples of software from different domains written in Lisp dialects
Introduction
Lisp is the second-oldest high-level programming language (after Fortran) and the first functional language. It was developed in 1958 and has changed since that time giving rise to lots of dialects and producing a significant effect on the development of other languages. At present, the best-known dialects are Common Lisp, Scheme, Racket and Clojure.
Left: A LISP machine at the MIT Museum. Right: Symbolics 3640 lisp machine, photo by Michael L. Umbricht and Carl R. Friend (Retro-Computing Society of RI)
Lisp became the "pathfinder" for many ideas which found application in the modern programming languages: tree-like structures, dynamic typing, higher-order functions and many others. In this post, we won’t dwell on Lisp’s contribution to theoretical computer science but will focus on the practical benefit.
Originally, Lisp was designed for artificial intelligence research, in particular, as a presentation of the mathematical notation for symbolic computations. But how common are the Lisp dialects nowadays and where are they applied?
Where and how is Lisp used?
During my university years, I used to deal with Lisp dialects quite often. While I was doing some initial research for this post, I was surprised and happy to find mentions of the code written in some Lisp dialect in the applications I’m using myself. I believe you’ll also find familiar names in this list.
- GNU Emacs is the text editor developed by Richard Stallman in 1984, it’s the first program of the GNU project and a participant in the everlasting fight for “The Best Text Editor” title. It’s written mostly in its own Lisp dialect, Emacs Lisp, which is also used to write Emacs configs and extensions. Though this dialect can be used as a general-purpose scripting language, it is still tailored to the development of a text editor. For instance, Emacs Lisp has a rich library to work with text files.
- Grammarly is an online service used to process texts in English. The service makes use of artificial intelligence to analyze the text and generate recommendations on its improvement. In addition to the grammar and spelling, the text brevity, vocabulary and tone are checked. The development started in 2009; today the service has 30 million active users and is regularly listed in various rankings. Personally, I use Grammarly as a browser extension and I was surprised to find that all their backend, all the text processing mechanism is written in Common Lisp. In their technical blog, the developers explained why they gave preference to CL and what it’s like to use Lisp in production.
- Boeing 747 and 777 use Allegro NFS Server written in Common Lisp. Further on the subject of aviation: Boeing and Airbus use Piano – a software package in Common Lisp for aircraft design development and analysis. You can learn more about the low-level programming in Common Lisp from this talk.
- ITA Software is the once independent company that developed the system for air tickets search and pricing. Now it forms part of Google’s travel industry department. In most cases, the company develops its software using Allegro Common Lisp.
- Another application in the transport sector is the London Tube that uses the software developed by Portuguese Siscog where Common Lisp is the main programming language. The company develops decision support systems designed for resource planning, allocation, and management in the transportation sector.
- Circle CI is one of the largest and, probably, most well-known platforms for CI/CD with millions of builds every month and other impressive statistics that can be found on their website. The major part is written in Clojure; ClosureScript is used for frontend development. In general, developers are so fond of Clojure that in 2021 it ranked second among the most loved technologies of Stack Overflow users according to their annual survey.
- Computer-aided design systems AutoCAD use the AutoLISP dialect as the internal application development language. Though AutoLISP is the oldest of internal programming languages in AutoCAD, it is actively supported and is available for development in other CAD systems (Bricscad, IntelliCAD, DraftSight).
- Apache Storm is a distributed tool for real-time processing of large data volumes. The project is based on Clojure and Java and was open-sourced under Apache License 2.0 after it was purchased by Twitter. Interoperability with Java is the main feature of Clojure that allows integrating the Clojure code into any project already written in Java.
- Riemann is a tool for distributed system monitoring. It aggregates events from user servers and applications, combines them into a stream and transmits them for further processing or storage. Greater flexibility and fault-tolerance make Riemann different from other similar systems. Moreover, it’s written in Clojure almost completely. The code is available on GitHub and is distributed under Eclipse Public License 1.0.
- The news site Hacker News was developed as a project of Y Combinator and is written in Arc. This is a Lisp dialect implemented in Racket. The site author, Paul Graham, also took part in the development of this language and, as you can see, has found a practical use for it. One of the goals was to create a community similar to that formed on Reddit in its early days (surprisingly, at that time it was written in Common Lisp as well until it was migrated to Python in 2005).
Conclusion
I’ve tried to compile this list by including examples from different domains, development tools, off-the-shelf applications for non-tech users, and systems contained in the products regularly used by a good many people without much thought.
Of course, the list is not complete. It highlights the most interesting Lisp applications – in my subjective opinion – in modern software. More complete lists of libraries, applications and companies using Lisp dialects can be found on the following resources:
- Clojure:
- Common Lisp
- Scheme/Racket
Top comments (3)
Nice Roundup. I didn't realize that lisp is being used in so many day to day products. For me, growing up, Lisp was considered an academical language for AI research, and an embeddable language used to facilitate plugins for games ( Or Emacs) . My AI course book, had python as code references, and lisp snippets as historical tid-bits.
The only reason I learned a little of list was to modify some plugins in emacs, and conky-config.
Lisp is powerful!
What about Autolisp in Autocad?