Multi-Language Support in Smalltalk and Historical Lisp Environments
&gt; However, one question that I have about Smalltalk and historical Lisp machine environments is whether there has been any work done on implementing support for other languages<p>Today&#x27;s open source Smalltalk VMs are developed in and with Smalltalk itself. To do this, they use a subset of Smalltalk that can easily be translated to C called Slang [1]. Additionally, there are several parsing and parser generator tools designed to allow people to compose DSLs or other languages that can run in the Smalltalk context, including OMeta [2] which let to Ohm [3], PetitParser [4], and SmaCC [5].<p>One could also imagine a mechanism by which a &quot;Smalltalk Machine&quot; could have an optional method for executing instructions and interacting with memory (at a low level) that is similar to the way the C world wants, and to compile C code into this format -- imagine it encapsulated by some special Smalltalk context object or something.<p>&gt; There&#x27;s something very appealing about these &quot;turtles-all-the-way-down&quot; environments where all of the objects in the system are live and can be inspected by using a REPL, and how system behavior can be changed on-the-fly.<p>I am of the belief that a whole new personal computing system -- from the hardware on up -- designed around these principles would be of great benefit to all. It would run directly counter to the current culture of computing, which says that there are developers and users (scribes and plebs!) and nothing in between. In fact, the people who had the greatest qualitative input into the development of personal computing specifically thought that users would be programmers, and therefore programming would need to be something a bit different than it had been up until that time, and so would the computing environment and all the rest (some of these people invented Smalltalk).<p>The major impediments to doing such a thing are time, money, and worldview. Most developers today, or &quot;computer people&quot; who should presumably be in the know, likely aren&#x27;t very familiar with, if at all, these environments. There is a very ingrained idea about &quot;how things should be done&quot; that is mistakenly equivocated with &quot;how things have to be done.&quot; There is also limited funding for these endeavors. The business world is not set up to make these kinds of leaps these days (short-termism and shareholder primary have dominated enterprize thinking since the late 70s). I&#x27;ve said before on here that FOSS is also not the solution: you need long periods of time and lots of money to make something like this (as history shows), and people doing things in their free time isn&#x27;t going to cut it. Case in point: FOSS is for the most part premised on Unix, because that&#x27;s what was around and available for free when the movement started. All &quot;new OSes&quot; are some form of Unix because it is impossible for people to think outside of that context given the limited resources available to them.<p>I will end this rant (sorry) with a couple of refs. The first is to the CogNOS project, which was at one point an effort to get the OpensmalltalkVM running on bare metal [6]. I do now know the current status. The second is to Lukas Hartmann&#x27;s Reform laptop project. Notable for being an entirely open hardware and software platform, he began the project because he wanted to build a custom machine for his own Lisp OS called Interim [7]. When I last asked him about it, he said that he still has a goal of getting Interim to run on the machine. But, of course, it&#x27;s taken him years of work to even get to the point he&#x27;s at now.<p>[1] <a href="http:&#x2F;&#x2F;wiki.squeak.org&#x2F;squeak&#x2F;slang" rel="nofollow">http:&#x2F;&#x2F;wiki.squeak.org&#x2F;squeak&#x2F;slang</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;OMeta" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;OMeta</a><p>[3] <a href="http:&#x2F;&#x2F;wiki.squeak.org&#x2F;squeak&#x2F;4878" rel="nofollow">http:&#x2F;&#x2F;wiki.squeak.org&#x2F;squeak&#x2F;4878</a><p>[4] <a href="http:&#x2F;&#x2F;scg.unibe.ch&#x2F;research&#x2F;helvetia&#x2F;petitparser" rel="nofollow">http:&#x2F;&#x2F;scg.unibe.ch&#x2F;research&#x2F;helvetia&#x2F;petitparser</a><p>[5] <a href="https:&#x2F;&#x2F;github.com&#x2F;SmaCCRefactoring&#x2F;SmaCC" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;SmaCCRefactoring&#x2F;SmaCC</a><p>[6] <a href="https:&#x2F;&#x2F;github.com&#x2F;nopsys&#x2F;CogNOS" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;nopsys&#x2F;CogNOS</a><p>[7] <a href="https:&#x2F;&#x2F;github.com&#x2F;mntmn&#x2F;interim" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;mntmn&#x2F;interim</a>