6 ms·
Yep, I've used Common Lisp in production. Several times. I'm in the middle of writing a new app with Lispworks right now. Common Lisp is generally the first th
by mikelevins 6y ago
Yep, I've used Common Lisp in production. Several times. I'm in the middle of writing a new app with Lispworks right now.
Common Lisp is generally the first thing I think of for any new work I undertake. There are exceptions, but usually my first choice is Common Lisp. It has been for a little over thirty years.
I've often worked in other languages--usually because someone wants to pay me to do so. I usually pick Common Lisp, though, when the choice of tools is up to me, unless some specific requirement dictates otherwise.
The objections you list might be an issue to some extent, but not much of one. Certainly not enough to discourage me from using Common Lisp in a pretty wide variety of projects. I've used it for native desktop apps, for web apps, for system programming, for text editors, for interpreters and compilers. When I worked on an experimental OS for Apple, the compiler and runtime system I used were built in Common Lisp.
I'll use something else when someone pays me enough to do it. I'll use something else because it's clearly the best fit for some specific set of requirements. I'll use it when there isn't a suitable Common Lisp implementation for what I want to do. I'll even use something else just because I want to get to know it better.
I've taken various detours along the way into learning and using various other languages. I like several of them quite a bit. I just don't like them as much as Common Lisp.
The pleasure I take in my work is a significant factor in my productivity. Choosing tools that offer me less joy is a cost I prefer not to bear without good reason. That cost often exceeds the advantage I might realize from using some other language. Not always; but often.
There was once a language I liked even better than Common Lisp. Apple initially called it 'Ralph'. It evolved into Dylan, which, in its present form, I don't like as much as Common Lisp. If I or someone else invested the considerable time and effort needed to write a modern version of Ralph, then I might choose it over Common Lisp.
For now, though, I'll stick with the old favorite. It continues to deliver the goods.
- mark_l_watson 6y agoI am also working on an app using LispWorks [1]. If you want, please contact me and we can jump on a call and share experiences. Off topic, but many years ago I had lunch with Larry Tesler (John Koza was also there) and Larry knew of my CL book from the 1980s and pitched me to rewrite it in Dylan. That might have changed my career trajectory. [1] http://knowledgegraphnavigator.com/ http://knowledgegraphnavigator.com/
- mikelevins 6y agoI don't generally like synchronous calls, but for you I might make an exception. Also feel free to drop me a line at mikel@evins.net. I liked and admired Larry. I considered him a friend. Once I sat with Steve Jobs in my office at NeXT and argued about Larry's virtues. I took the pro-Larry position. Your lunch was probably around the time I was working on that Lisp OS at Apple. That was Larry's idea, too. If you don't hear from me, it's not because I don't want to talk with you; it's because I'm forgetful (one reason I like email better than synchronous calls. Inboxes remember things that I forget.) Knowledge Graph Navigator sort of intersects with some of my running interests--particularly knowledge representation and frame stores.
- Ingon 6y agoCare to elaborate on how Ralph was different from cl/dylan? Or at least point me to some resources to read more about it? I don’t seem to find anything specific on the internet. Thanks
- thisisnot 6y agoRalph was the initial name of the project, from the film the invisible man. More about dylan history:(1) Ralph used prefix notation, dylan infix notation. Here you can find an implementation of ralph:(2) From (2): Ralph is a Lisp-1 dialect that compiles to JavaScript. It is heavily inspired by an early version of Dylan (also known as "Prefix Dylan"), as described in Dylan – An object-oriented dynamic language. Also (3) is about a Lisp to Dylan translator. There is also norvig lisp to dylan translator cited in (3). (1) https://en.wikipedia.org/wiki/History_of_the_Dylan_programming_language https://en.wikipedia.org/wiki/History_of_the_Dylan_programmi... (2) https://github.com/turbolent/ralph https://github.com/turbolent/ralph (3) https://tim.pritlove.org/2003/11/10/converting-lisp-to-dylan/ https://tim.pritlove.org/2003/11/10/converting-lisp-to-dylan...
- mikelevins 6y agoJust a nit: the film "The Invisible Man" is unrelated, based on a novel by H. G. Wells about a scientist who drives himself mad with a technique that renders him invisible. Ralph was named for Ralph Ellison, author of a different, later book Invisible Man, about being a black man in America.
- thisisnot 6y agoYou are right, wikipedia: According to Apple Confidential by Owen W. Linzmayer, the original code name for the Dylan project was Ralph, for Ralph Ellison, author of the novel Invisible Man, to reflect its status as a secret research project.
- gnufx 6y agoDylan originally used Lisp syntax, as documented in the Dylan Manual; there was angst when it changed. I don't have that with me, but it's online: http://lispm.de/docs/prefix-dylan/book.annotated/ http://lispm.de/docs/prefix-dylan/book.annotated/
- dialamac 6y agoDo you pretty much exclusively use LispWorks, or do you other tooling. I am curious to hear.
- mikelevins 6y agoNo, I use all sorts of things, depending on what I'm trying to accomplish. I'd probably use SBCL or CCL for everything, if Lispwork' CAPI or something equivalent worked on them. I do use them when I don't need to build a GUI that I can easily port among platforms. When I wrote a WYSIWIG text editor years ago, I did it with CCL because it was for my own use, and I didn't need it to run on platforms other than macOS. If I wrote a new version of it, I'd try to find a way to make it work across Windows and Linux, as well. (I can't use Lispworks for that because it's violates their license restrictions on distributing something that can be used as a Lisp development environment.) I use other languages when I'm paid to, or when I want to do something that is a lot easier to do in another language. For example, I recently wrote a prototype of a web-based collaborative editor and publishing platform for shared documents. I chose Couchbase for storage, because it solves the sync problem reasonably well, and I used Clojure and Clojurescript with React and Reframe, because it worked well with the Couchbase Java SDK. I've been paid to build prototypes, apps, tools, and system software with Lisp, Icon, ML, C, C++, Objective-C, Java, Python, Swift, Prolog, Haskell, Scheme, and other things. If I had a modern version of Ralph, I'd most likely use that. Failing that, Common Lisp is what I like best.
- dang 6y agoI never know about this, and it turns out there have been quite a few rich comments about it over the years—all, unless I've missed one, written by you. Here's a link if anyone wants to look back: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=by%3Amikelevins%20ralph%20-ellison&sort=byDate&type=comment https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
- mikelevins 6y agoThanks; I looked back myself. Boy, I like to talk about Ralph, huh? To be expected, I suppose. It really was my favorite working language ever.
- dang 6y agoPlease keep talking! Your comments are superb.
- unityByFreedom 6y agoYeah this is cool. I did not know live coding was a thing. I'd like to see a video of that to compare with autobuild workflows that watch files for modification times.
- mikelevins 6y agoThere's this recent video showing a little of what the Pharo Smalltalk environment is like: https://www.youtube.com/watch?v=HOuZyOKa91o https://www.youtube.com/watch?v=HOuZyOKa91o The video was made by a Ruby programmer, rather than an experience Smalltalker, so it's more a newbie showing you cool things he's discovered, rather than an expert showing the power of the system. On the other hand, there's this one: https://www.youtube.com/watch?v=o4-YnLpLgtk https://www.youtube.com/watch?v=o4-YnLpLgtk That one is an expert, Kalman Reti, showing some of what it's like to work with a Symbolics Lisp Machine. (It's not a real Lisp machine; they're all at least thirty years old now; this is an emulator running the old Symbolics OS on Linux). Go to YouTube and search for Rainer Joswig and you'll find a few video demos of Lisp Machines and MCL and so forth. Finally, here are a few images from about eighteen years ago, also from Rainer. They show various views of the Macintosh Common Lisp and SK8 environments. It's not an experienced user showing you around, but at least you can get some idea what the environments looked like: http://www.lemonodor.com/archives/000028.html http://www.lemonodor.com/archives/000028.html