Same here; I've been fascinated by Lisp machines for the past decade, but they are very difficult to get a hold of, and when they do show up for sale, they are prohibitively expensive. When I went to the now-defunct Living Computer Museum in Seattle back in 2019, I saw that there were no Lisp machines available, though I did get to see and use other rare machines such as the Xerox Alto, the Apple Lisa, and the original NeXT cube (I'm glad I finally got to add one to my collection a few years ago). MIT CADR has been made open source for quite some time (https://tumbleweed.nu/lm-3/), and I'm glad that Xerox Interlisp-D is now open source (https://interlisp.org/). However, the holy grail of Lisp machine environments, Symbolics Genera, is still not available as FOSS. Funnily enough, this is fitting since Richard Stallman's frustrations with Symbolics was one of the catalysts behind his starting the GNU Project.
One of the interesting "what could have been" moments of computing history is Apple's exploration of Lisp in the late 1980s and during the first half of the 1990s. Such projects include:
- Apple's original plans for the Newton, which included an OS written in Lisp.
- The Dylan programming language, which I've heard can be thought of as Scheme with the Common Lisp Object System. Dylan was originally designed to be the official language used to develop Newton apps. Originally Dylan had an S-expression syntax, but this was changed to a more Algol-like syntax due to the prevailing opinion among many that an Algol-like syntax would be easier for C/Pascal/C++ programmers to adopt. However, the Newton ended up using a C++-based operating system, and NewtonScript, which wasn't based on a Lisp, was created as the language for developing Newton apps.
In an alternate timeline, we could've been using Apple devices built on a Lisp foundation. This is probably the closest we've gotten to Lisp machines on the desktop, as opposed to specialized AI workstations that cost five figures in 1980s dollars.
Then again, things worked out well for Apple after the NeXT purchase. The OpenStep API (which became Cocoa) and Objective-C was (and still is) solid infrastructure than can be thought of as a "pragmatic Smalltalk" desktop, though in recent years I feel Apple has been moving on from NeXT influences and is doing its own thing now with Swift.
> had an S-expression syntax, but this was changed to a more Algol-like syntax due to the prevailing opinion among many that an Algol-like syntax would be easier for C/Pascal/C++ programmers to adopt.
They can be forgiven, at the time. Now we have evidence that thinking is wrong. Today we have half of everyone and their dog, as Web programmers, using a syntax originally chosen by very technical systems programmers. (Bell Labs researchers -> C -> Oak -> Java -> JavaScript.)
Almost no Web developers are systems programmers, and this is just a poor syntax for the work, and needlessly cryptic, but they can pick up even this bad syntax just fine.
Now we know that, whether you use curly braces, parentheses, whitespace, or something else is not the barrier to learning a programming language. It's one of the most absolutely trivial things about it to learn.
Knowing this, the next time I hear someone say "We can't use this syntax, because it will just totally break people's brains, even though the higher grammar, semantics, libraries, ___domain frameworks, and everything else are different anyway, and are orders of magnitude harder to learn, we need to make it look superficially like something it's not, because people are full of poo"... I'm ready to appropriate the Lily Allen song: https://www.youtube.com/watch?v=KUHqFhnen0U
> (Bell Labs researchers -> C -> Oak -> Java -> JavaScript.)
It seems like Javascript inherits more directly from lisp than any of the other languages mentioned, except for the syntax. As a result Javascript is a lisp without macros, which is a sad concept. (In this sense, I very much agree with you.)
If you're already a seasoned programmer, maybe different syntax causes little friction.
But for people new to the craft, syntax matters: Chris Okasaki found that the one thing that helped students get over the hump and really start to understand scopes and blocks was significant whitespace.
Matthias Felleisen, et al., also found that syntax is one of the barriers to new students with zero prior programming experience.
Strangely enough, they found that Lisp syntax was easier to pick up, because it was simpler. (In general, the first word in the parentheses tells you what to do with the rest. Not other punctuation to remember, precedence parsing rules, etc.)
We're usually not developing languages for people with zero experience, but if someone wants to twist my arm to use Lisp syntax...
*Some* people behind Rhombus think that lisp syntax is a problem - we will see. My prediction is that it will not even leave a dent - people get all kind of strange ideas without having any kind of data to prove their claims. To me it looks like just another python:
It's a longstanding error to think Lisp would benefit from a more conventional syntax. People have been making this mistake since the very beginning (McCarthy).
Back in the day, Lisps and Schemes has had all sorts of excuses for not being used. To slow, GC is slow, too big, no libraries, too old, etc. etc. etc. All reasons that had some merit at one time.
But today, all of those excuses have been long gone for a long time.
Clojure is as mainstream and box checking as you can get, much less all of the other zillion projects out there.
And yet.
No great renaissance. Still talked about in hushed tones. "Only those snobby hacker guys use that."
And what single thing has remained and controversial about Lisps?
The syntax.
JavaScript demonstrated that a dynamic language with garbage collection, closures, and functional elements, and native data structures, can be used for everything from web pages to enterprise backends. Many of the things folks complained about in Lisp environments, JavaScript "suffers" from as well.
I know I'm not completely on top of things, but I think JavaScript has been reasonably successful and gained some popularity.
And behold, of all the things it does not share with Lisps: the syntax.
I'm reasonably confident if the hackers at Netscape came out with "S-Script" for their browser, it would be a historical curiosity. As desperate as people were to get scripting in browsers, they would have likely stuck with Explorer, VBA, and everything would be in a VBA clone today.
S-expressions have had their chance, and the wisdom of the crowds have not bought into them.
Ah, what would be a lisp thread without the inevitable lisps-decline-because-of-the-syntax-explainer, who will write a small roman about how bad lisp is and how no one cares about them /s
On a more serious note, anecdotes are not data, correlation has to be proven. Lisps may not be popular (a fate they share with most c-syntax language without corporate money) but also absolutely un-dead at that point. I am fine with it. In fact, as someone who earns good money with mostly JS, I couldn’t care less, I wouldn’t touch JS with a stick for my personal projects.
For the others: According to James Gosling's intentions, by retaining the familiar syntax of C programming with its use of curly braces, Java aimed to build upon the existing skills and knowledge of a larger community of developers who were already well-versed in C. This decision was meant to make the transition to Java as smooth as possible for those programmers, thereby increasing their adoption of the new language and its associated ecosystem (VM etc.). By the way, JavaScript was originally an embedded Scheme and had nothing in common with Java, except for the Sun marketing team (Brendan Eich was brave and took no pride...).
Rhombus is research. IMHO, Honu parsing stuff is interesting (e.g., maybe it helps add richer syntax extension to languages with syntax that traditionally makes that hard).
Additionally, Java (and .NET for historical reasons), also benefit from that Objective-C / NeXTStep linage.
The C++ like syntax was a kind of honey trap for C++ devs, the actual runtime and language semantics are closer those from Smalltalk/Objective-C, hence why Strongtalk and SELF JIT research did fit so well into Hotspot.
There don't seem to even be many screenshots of Sk8 and Apple Dylan out there, so please, if you can, mirror this stuff online somewhere.
One day the world of computing will realise the mistakes it made and having at least maps of the forks in the road that it didn't take will help it to find its way out of the jungle.
> but this was changed to a more Algol-like syntax due to the prevailing opinion among many that an Algol-like syntax would be easier for C/Pascal/C++ programmers to adopt
It did cripple them in the sense that it took forever to actually fully implement the Algol-style syntax and the necessarily much more complex macro system that such a syntax requires.
That one to two year delay absolutely destroyed any momentum Dylan could have had, and also made implementation of a Dylan-compatible language much more (needlessly) complex for a perceived benefit that never materialized.
Instead of being able to focus on implementing optimizations, tools, and frameworks, everyone trying to participate in the Dylan ecosystem had to spend that time on syntax bullshit instead, and still do. It really pains me that the other Dylan ecosystem players didn't immediately drop the Algol-style syntax for the much simpler Lisp-style one when Apple dropped Dylan, and to this day OpenDylan uses the infix syntax.
One of the interesting "what could have been" moments of computing history is Apple's exploration of Lisp in the late 1980s and during the first half of the 1990s. Such projects include:
- Apple's original plans for the Newton, which included an OS written in Lisp.
- The Dylan programming language, which I've heard can be thought of as Scheme with the Common Lisp Object System. Dylan was originally designed to be the official language used to develop Newton apps. Originally Dylan had an S-expression syntax, but this was changed to a more Algol-like syntax due to the prevailing opinion among many that an Algol-like syntax would be easier for C/Pascal/C++ programmers to adopt. However, the Newton ended up using a C++-based operating system, and NewtonScript, which wasn't based on a Lisp, was created as the language for developing Newton apps.
- SK8 (https://en.wikipedia.org/wiki/SK8_(programming_language) ), which was dubbed "HyperCard on steroids," was written in Common Lisp.
In an alternate timeline, we could've been using Apple devices built on a Lisp foundation. This is probably the closest we've gotten to Lisp machines on the desktop, as opposed to specialized AI workstations that cost five figures in 1980s dollars.
Then again, things worked out well for Apple after the NeXT purchase. The OpenStep API (which became Cocoa) and Objective-C was (and still is) solid infrastructure than can be thought of as a "pragmatic Smalltalk" desktop, though in recent years I feel Apple has been moving on from NeXT influences and is doing its own thing now with Swift.