Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I was under the impression that Smalltalk contributed more to what we think of as “the modern desktop” than LISP. If anyone has the real story, I’d love to hear it.


I don't have the real story, but there was a lot of cross-pollination between smalltalk and lisp. It can be challenging to determine which things originated where sometimes.

IMO a lot of it is just that all of the ingredients for a modern desktop were there for anyone with 10s of thousands of dollars of hardware, so there was both cross-pollination as well as parallel evolution of ideas.

The invention of the sewing machine is kind of like this; there was a point at which we were very close to being able to make a sewing machine, and several people solved a subset of the problems; the union of that subset gave us a sewing machine, so singling out a single inventor is somewhat non-sensical.

Most lisp machines were specifically targeted at developers while smalltalk at Xerox was more targeted at office productivity. Interestingly enough Xerox hired the BBN team that made lisp machines, and the Xerox star was made to run lisp as well.


> Most lisp machines were specifically targeted at developers

A bunch of Lisp Machines were directed at production, not developers. From Symbolics there were special models for that and also smaller "delivery system" versions of the operating system.

For example American Express had a bunch of Lisp Machines as checking complex credit card transaction, Lucent had Lisp Machine nodes in a network switch, NASA had Lisp Machines monitoring video camera streams of rockets from Space Shuttle launches, Symbolics sold many graphics systems to TV studios, etc.

> while smalltalk at Xerox was more targeted at office productivity.

Is that true? Xerox had an office system running on the same hardware, but written in Mesa - unrelated to Smalltalk. Xerox had the CIA as a main customer for the Smalltalk machines, using an application called 'Analyst'...

https://ethw.org/Oral-History:Adele_Goldberg

'But our big commercial involvement was with the CIA.'

> Interestingly enough Xerox hired the BBN team that made lisp machines, and the Xerox star was made to run lisp as well.

BBN made a Lisp in the 60s, from where some developers went to Xerox in 1972/73. Before Lisp Machines existed. BBN Lisp was renamed Interlisp and was supported by both companies. Xerox developed Interlisp-D for Lisp Machines and BBN put Interlisp on an internal research computer.


>I don't have the real story, but there was a lot of cross-pollination between smalltalk and lisp.

Smalltalk was influenced by Lisp, and in turn, Smalltalk influenced the subsequent Lisp systems; that's where OOP support appeared in Lisp, first with LOOPS and MIT Flavors, ultimately with CLOS on ANSI Common Lisp.

Common Lisp also is "image-based development", just like Smalltalk. This is a direct ST influence.


> Common Lisp also is "image-based development", just like Smalltalk. This is a direct ST influence.

Lisp from the early 60s used already images. It went from there to Smalltalk.


Oops...

I believe you, but, do you have some reference? I would assume this came after Lisp 1.5, right?


Lisp 1 in 1960.

http://bitsavers.org/pdf/mit/rle_lisp/LISP_I_Programmers_Man...

Page 66f: SET card writes a memory image to a tape and TST card reads a memory image from tape.


And still I haven't seen any language more Object-Oriented than SmallTalk. Sure, Python, C++, Java, etc. support OO to some level. But in SmallTalk everything literally is an object, which means you can achieve the same functionality of Lisp macros in SmallTalk as well. In Lisp you have data = code, in SmallTalk you have data = program (which is running). In fact, everything is always running in SmallTalk. I'm more than eager to learn more and more about SmallTalk. It's one of those languages with valuable philosophy behind its design (just like Lisp and Haskell).


Everything is a class object in Common Lisp.

  [1]> (class-of (cons 1 2))
  #<BUILT-IN-CLASS CONS>
  [2]> (class-of #\x)
  #<BUILT-IN-CLASS CHARACTER>
  [3]> (class-of nil)
  #<BUILT-IN-CLASS NULL>
  [4]> (class-of (function mapcar))
  #<BUILT-IN-CLASS FUNCTION>


It's more useful to think of SmallTalk as message-based than object-based. Messages are underrated, but objects are just function calls except the first parameter is on the left.

> in SmallTalk you have data = program (which is running)

Isn't it just an eagerly-evaluated language with closures? Can it walk its own AST?


If you haven't yet, I'd recommend reading the "Blue Book" (Smalltalk-80: The Language and its Implementation) by Goldberg. It has a very holistic approach and, as such, is one of the most accessible and pleasant books describing a computing/programing environment one can find.


I also recommend reading http://www.mirandabanda.org/bluebook/bluebook_imp_toc.html once you're done with the blue book; the VM is a two weekend project in any compiled high-level language (I used Rust) and it's not hard to make it performant enough for real use. I think my timeline was ~2 days for the initial implementation, 2 days for fixing up small bugs (mostly in primitives), and then 2-3 hours of minor tweaks to get the VM performant enough to be comfortable.

BTW, somebody typed the VM source in from the blue book and posted it online. You may find the resources on that page useful: http://www.wolczko.com/st80/


This is dope -- didn't know about it, thanks


I wanted to add to this great recommendation.

The blue book and other excellent out-of-print books on SmallTalk can be found here:

http://stephane.ducasse.free.fr/FreeBooks/


Thanks, I'll take a look at it!


> But in SmallTalk everything literally is an object, which means you can achieve the same functionality of Lisp macros in SmallTalk as well.

Ruby follows in SmallTalk's footsteps and implements something similar, at least to an extent.


I was under the impression that the pioneering Xerox systems were written in Mesa, which was not even object oriented. I'd love to hear the real story as well.


Xerox workstations used microded CPUs, there were Interlisp-D, Smalltalk and Mesa (later Mesa/Cedar) variants of it.

Each variation loaded the respective microcode into the CPU and booted into the respective environment.

You can read all about those environments here https://archive.org/details/bitsavers_xerox




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: