Running Open Genera 2.0 on Linux
archives.loomcom.com
archives.loomcom.com
I do remember each had 8 MW of memory (40 bits IIRC, 36 bit word + 4 bits of ECC) and one of them had a color display (!!!) in addition to the regular monitor.
And apart from the hardware cost, the machines themselves were in a machine room with coax and data run to my office.
My only exposure to Symbolics was as part of a simulation system.
When a site is defined, Genera calls (si:enable-who-calls :new) automatically
for you.. But we want to enable who-calls on all functions, not just new
functions, so we must manually set that up
(si:enable-who-calls :all)
This takes a few minutes to run.
My god, it takes minutes to run now? How long did that take to run on the original hardware?A real Ivory machine would be roughly 70 times slower.
There was composability and fine control in these systems that is still not present in modern systems. That's not needed for everyday consumers, but boy is it lovely when you're a programmer.
I consider a lost opportunity not to have turned ChromeOS into a kind of Smalltalk like experience with a mix of Flutter/Dart.
Naturally one can argue Common Lisp experience with Franz and Lisp Works, Raket, or Smalltalk, are the closest to the Lisp Machine ideas, but their mainstream opportunity is now lost.
FWIW, the browser (though still far off) feels closer to me, with the ability to instantly pop open a DevTools console and inspect the state of everything, as does Apple's Cocoa-based stuff from my limited exposure to it, maybe not surprising given its Smalltalk heritage.
Dynamic nature of the runtime, being able to plug agents, changing code dynamically, the IDE experience inherited from Smalltalk vendors that jumped into Java, VisualVM and JFR, ETW, runtime APIs to the JITs, self hosted implementations, nowadays out of fashion, sending bytecodes for RPCs and network agents (RMI, .NET Remoting, Jini), are some of the reasons.
That said, make no mistake, an OSGI module can easily fall into that sweet spot of compiling and reloading fast enough to fall within the cognitive loop of effectively being “instant”.
And if you organize your code well, other parts of the overall app are (mostly) unaware something has changed. Java can be quite dynamic but has not formalized things like dynamic class change lifecycle. OSGI does expose that, and lets the rest of the code tap into that so it can handle change more robustly.
And .NET by being "Java 2.0" after the J++ lawsuit, inherited most of the same dynamism, alongside the ability to support VB capabilities, which by VB 6 were also quite nice.
Edit: this thread too [2]
[1] https://groups.google.com/g/comp.lang.lisp/c/QzKZCbf-S6g/m/K...
[2] https://groups.google.com/g/comp.lang.lisp/c/XpvUwF2xKbk/m/X...
The language is highly dynamic, supports types for better speed, macros let it rewire itself to better express concepts, it is interpreted for instant development, still compiled with good performance, safer by default than many compiled languages, and you can edit the code and save state of running programs. I've just named off advantages of all kinds of programming languages all mixed into one. The flexibility was so strong that, as new paradigms were added (eg OOP, aspects), they could just bring in a library to make the language itself do that.
Aside from live debugging, my favorite feature when trying Lisp was per-function, incremental compilation.: make a change within a function, press a button, that individual function was compiled (sub-1-second), and that got loaded into the system for live interactions. I could iterate about as fast as I could think or type with the code still being fairly quick. It was mind blowing.
Today's machines have OS's in one language, supporting libraries might be in another, there's often a runtime with its own style, the app language itself for the logic, and usually one for the web browser. The mismatches between these languages can cause all kinds of headaches. Debugging them takes different tools. In a Lisp Machine, everything from the OS to the IDE to your apps were written in Lisp. IIRC they came with source. Any failure in any layer loads up in the same IDE with code in same language.
The IDE was also fully-featured for its time. Today, we have a lot of good IDE's. I don't think most of them share a language, source, and libraries with your apps, though. I'd like to see a comparison between top IDE's today and the Lisp Machine to see where today's tooling is stronger or weaker.
Those are a few things that come to mind. I assure you that my experience trying to code in native languages was way different in both development speed and debugging. Learning Python now, it's good for rapid development but not as flexible or compiled. Lisp would give me all that.
Many more ecosystems are using Python, though. By using Python, I get to use every library they build, guide they write, and maybe get paid for my code. Odds of all of that go down when using Lisp. Such social factors, along with high cost of Lisp Machines, are a huge part of why they disappeared. Less-powerful languages are going strong. If using a Lisp (eg Clojure), it's often tied to platforms written in non-Lisp languages.
In addition to the AI winter, Lisp machines were facing performance and cost challenges from RISC workstations. Suddenly not only did Lisp programs run faster on Unix workstations, but they were cheaper, too. Due to the combination of the AI winter and competition from the Unix RISC workstation market, many Lisp machine vendors exited the market, pivoted, or shut down in the late 1980s and early 1990s. Symbolics Open Genera was part of this pivot; it is essentially a Symbolics Lisp Machine VM originally running on top of a DEC Alpha processor running a proprietary Unix from DEC.
It’s just unfortunate that Symbolics and Xerox didn’t make Open Genera and Interlisp-D (which was similarly ported) more available, which could have been a strong contender to Java in the 1990s (the Common Lisp Object System blows the socks off C++ and Java) and to Python and Ruby in the 2000s, and could’ve introduced many of the benefits of having such a flexible development environment to a much wider range of developers at an earlier point in history…who knows what tooling we’d have today if we picked up where Lisp machines left off in the 1990s. The closest we’ve gotten to these Lisp environments are GNU Emacs, Racket, Squeak/Pharo, and Apple’s work in the 1990s on Dylan and SK8 (this would’ve been particularly revolutionary if it weren’t for Apple’s precarious state in the mid-1990s).
But, alas, the industry took a different direction…but at least Interlisp-D is finally open source, and thanks to Hacker News and other sites more people like me who never used a Lisp machine (I was born in 1989) get to learn about them.
Most of these systems have failed for monetary and bad management reasons, not technical ones.
Unfortunately in technology it seems ideas have to be recycled multiple times until they finally catch on, the hard part is if one is still around when they do catch on.
Which were themselves hideously expensive and out of reach of the consumer, facing cost challenges from personal computers. Initially not performance challenges, but that came around in the early 90s.
AFAIK, Symbolics Genera mostly ignored all static type declarations at compile-time. Thus there was no speed effect from static type declarations.
https://www.youtube.com/watch?v=RQKlgza_HgE
first demo is about Paintamation, a 2,5d paint and animation application
the second demo is demoing the 3d modeler and the 3d animation application
running on the Symbolics with a b&w console, a color screen & framebuffer, a Lisp keyboard and a pen tablet
All the code was written in object-oriented Lisp.
no quite, there were a few earlier domains registered. But it's the first .com domain registered.
Was there anything but the darpa domains and nordu.net before symbolics?
Maybe the title of the article is poorly done.
The easiest way to run a lisp machine is just to start emacs (there are ports for various operating systems) or try something like racket where you have a REPL with graphics and other goodies installed.
I know HN loves lisp, but putting this article on the front page is a good way to deter lisp adoption.
This is a very different thing, it's a Lisp Machine operating system running on a CPU emulator (~ from mid 90s). With its own Lisp, process scheduler, garbage collector, GUI, X11 client, file systems, network stacks, various network client and servers, configuration system, integrated development environment, database, ...
I hope it would go without saying to anyone looking to adopt Lisp that this is for historical interest* only and you should instead install a modern Lisp like SBCL or what have you.
[0] https://en.wikipedia.org/wiki/Lisp_Machines
* (nd IMO its the sort of historical interest that indeed belongs on the front page of HN)
The article even mentions: > This was all accurate as of around 2018, but please be aware that things may have changed since then!
There's no reason this should appear on the frontpage of a "news" site.