
By the Bluebook implementation of Smalltalk-80 - homarp
https://github.com/dbanay/Smalltalk
======
neilv
This is awesome!

I had the honor of first learning Smalltalk (and C++ and a bit of object
databases) in a class taught by Bob Beck from Sequent. We actually had many
students running Smalltalk on X terminals hanging off a Sequent server.
[https://en.wikipedia.org/wiki/Sequent_Computer_Systems](https://en.wikipedia.org/wiki/Sequent_Computer_Systems)

Smalltalk was a crazy-productive programming environment in the '90s, and easy
to love. (A bit like Lisp, in that regard, but also very different.)

What's even more amazing than that PARC was doing this in the 1970s, was that
what we know as Smalltalk was only one part or step towards grand goals they
were heading towards, not the end product.
[http://worrydream.com/EarlyHistoryOfSmalltalk/](http://worrydream.com/EarlyHistoryOfSmalltalk/)

When we find ourselves strutting around about how smart we are, how we'll
change the world, as we move fast and break things (with what power we can
seize and exercise over our users, with our app)... a needed dose of humility
comes from seeing that the Smalltalk (and other) people, of decades earlier,
seem a thousand years ahead of where we are now, in thinking.

~~~
pjmlp
Which is why I was only impressed by UNIX until I started digging into Xerox
PARC work, and its influences on Apple Lisa/Mac and ETHZ Oberon derived OSes.

The few UNIX variants that I actually still find interesting was the NeWS
approach, NeXTSTEP and its descendants.

~~~
Rochus
ETH Oberon was _not_ derived from Smalltalk. I implemented both systems, see
[https://github.com/rochus-keller/Smalltalk](https://github.com/rochus-
keller/Smalltalk) and [https://github.com/rochus-
keller/Oberon](https://github.com/rochus-keller/Oberon) and can say for sure
they have very little in common.

Wirth was inspired by the Alto, Dorado and the Mesa and Cedar programming
systems. The Alto OS (the first GUI desktop and WYSIWYG word processor and DTP
applications Bravo and Gypsy) was implemented in BCPL (precursor of C), not in
Smalltalk. Many people seem not to know, but you can look at all the source
code at the Computer History Museum.

~~~
rjsw
There were common style elements across all the Xerox PARC software systems,
the one not mentioned so far is Interlisp-D. I don't think you can claim that
Wirth was only influenced by the BCPL and Mesa group.

~~~
pjmlp
In fact, Mesa and Mesa/Cedar developers explicitly refer to their goal to
replicate Smalltalk and Interlisp-D developer experiences on XDE and Cedar,
across their papers.

~~~
Rochus
That only applies to the Cedar programming environment. Show me the references
otherwise pls.

And it was even more remarkable that Xerox did not use Smalltalk for its GUI
applications and the systems after Alto.

~~~
pjmlp
You are the one wanting, for whatever reason to relate Smalltalk to
Modula-2/Oberon, when everyone has replied to you about Xerox PARC "work".

The references are in bitsavers, Xerox PARC section.

------
thelazydogsback
Congratulations!! I started a ST-80 on my TRS-80 w/an external gfx board in
Z-80 asm, then tried to continue on my first PC in C, swapping floppies for
each C compiler pass while temp files went to a RAM drive -- between the
pitiful state of the "dev environment" and the difficultly in getting the ST
VM image in the correct "magic" state for startup (and my inexperience) I
never finished the thing. (I should have gone more the route of "A Little
Smalltalk".) The experience makes me appreciate your work and the orig. impl.
even more!

~~~
projektfu
Did you ever see the system called “Methods” which was a TUI version of
Smalltalk on the PC? I think it was by Digitalk.

~~~
alexshendi
It was a part of Digitalk Smalltalk/V for DOS. It can still be found at:
[https://winworldpc.com/product/digital-
smalltalk/12-dos](https://winworldpc.com/product/digital-smalltalk/12-dos) It
does run under FreeDOS.

~~~
projektfu
Thanks for the pointer! Very cool. As I understand it, it was the proof of
concept for Smalltalk/V. Unfortunately, Smalltalk/V trashes the screen under
DosBox with EGAColor, so I'll have to look into making it work better.

~~~
alexshendi
It doesn't play well with the current largish screen sizes. I got it to run on
an eeePC 701, which has a 800x480 LCD Display.

------
redis_mlc
The Smalltalk books were a big influence on me when they came out, so I was
happy when a company I was working for sublet space from Xerox PARC and we had
meetings there. :)

Is anybody familiar with the various Smalltalk releases today and willing to
do an overview of what's available?

~~~
jecel
ParcPlace spun off from Xerox to sell the original Smalltalk in 1988 but they
sold that to Cincom in the late 1990s:
[http://www.cincomsmalltalk.com/main/products/visualworks/](http://www.cincomsmalltalk.com/main/products/visualworks/)

Cincom had previously tested the waters by buying another Smalltalk called
Object Studio.

IBM sold its VisualAge Smalltalk to Instanciations:
[https://www.instantiations.com/products/vasmalltalk/index.ht...](https://www.instantiations.com/products/vasmalltalk/index.html)

Apple had the original PARC Smalltalk but never did anything with it until it
evolved into Squeak in 1996, which was Apple's very first open source product.
Later two forks went in different directions: Cuis and Pharo.
[https://squeak.org/](https://squeak.org/) [https://cuis-
smalltalk.org/](https://cuis-smalltalk.org/)
[https://pharo.org/](https://pharo.org/)

Forking Little Smalltalk (an early open source text based Smalltalk) is a
rather popular thing to do, so I won't give all the links. A bit more
sophisticated is GNU Smalltalk:
[https://www.gnu.org/software/smalltalk/](https://www.gnu.org/software/smalltalk/)

I consider Self to be Smalltalk, though not Smalltalk-80:
[https://selflanguage.org/](https://selflanguage.org/)

There are Smalltalks based on Javascript, as well as an alternative VM for
Squeak and friends: [https://www.amber-lang.net/](https://www.amber-lang.net/)
[https://squeak.js.org/](https://squeak.js.org/)
[http://u8.smalltalking.net/](http://u8.smalltalking.net/)

There are probably a few that I missed that are still in use.

~~~
int_19h
Are there any quality implementations for Java or .NET VMs? One would think
that this is the easiest way to get a high-quality GC today. And both
ecosystems have some special sauce in them for dynamically typed languages -
DLR in .NET, and I'm not sure if there's a single brand for that in Java land,
but they've been busy adding features for the likes of JRuby for a while now.

~~~
jecel
Not having used them myself, I can't comment on the quality of the JVM based
Smalltalks:

[http://www.redline.st/](http://www.redline.st/)

[https://github.com/hpi-swa/trufflesqueak](https://github.com/hpi-
swa/trufflesqueak)

Another project that I watched without trying myself was for .NET:

[https://refactory.com/sharp-smalltalk/](https://refactory.com/sharp-
smalltalk/)

There was also Essence# but it doesn't seem active.

------
elviejo
This is so incredebly cool. Hat's off to you sir.

I've dreamed with doing the same. Now if you could make it compile in WASM and
available from the browser window.

You might be able to bring smalltalk back to the forefront where it belongs.

~~~
alexshendi
There is actually a Squeak VM in Javascript
([http://squeak.js.org](http://squeak.js.org)) and there is at least Amber
Smalltalk implemented in JS. [http://amber-lang.net](http://amber-lang.net).
No need for WASM.

------
7thaccount
There is a Smalltalk books website out there somewhere with copies of all the
old classics. I think Stefan Duccasse (Pharo professor) hosts it.

~~~
kencausey
[http://stephane.ducasse.free.fr/FreeBooks.html](http://stephane.ducasse.free.fr/FreeBooks.html)

~~~
galaxyLogic
This is a good resource and includes my favorite Smalltalk book
SmalltalkDesignPatternCompanion. This book made the classic GangOf4 patterns
much easier to understand because it uses Smalltalk meaning much easier syntax
focused solely on OOP which those patterns are much about. Design patterns are
simple(r) when expressed in syntactically simple pure OOP.

Unfortunately it seems that something is missing here there is no chapter for
the Visitor pattern which I remember as especially insightful. I had that book
but it got burned when the house I lived in burned.

------
cmrdporcupine
Cool! I have a copy of the Bluebook sitting next to me on my bookshelf here,
for many years, have often pondered doing the same. I had a similar reaction
back in the 80s reading about Smalltalk. I had a set of encylopedias that
included a page about Smalltalk with a couple tiny screenshots that blew my
mind.

Thing is once I finally got to play with Smalltalk-80 in the 90s with Squeak,
it just didn't click with me. I love and understand the language, I just don't
find myself expressive in it.

------
unkeptbarista
Well done. My first experience was with Smalltalk/V. I still have my well worn
copy of the blue book.

------
joeberon
Looks very interesting and have always been interested in this era of
optimistic computing. Does anyone know a tutorial or quickstart guide on how
to get started using it? I don't really have a clue what I'm doing after
opening it

~~~
xkriva11
You can try to follow these videos, but the commentaries are not in English.
It shows:

\- basic windows management

\- expressions evaluation

\- code browsing

\- "explain" command

\- profiler

\- debugger usage, resumable exceptions

\- system modification in the debugger

\- objects inspection

\- system reflection (objects enumeration)

\- objects identity swapping

\- system navigation (senders/implementors)

\- all on system with only decompiled sources

[https://www.youtube.com/watch?v=JyaQavN9rVA](https://www.youtube.com/watch?v=JyaQavN9rVA)

[https://www.youtube.com/watch?v=cpjOd5ge2MA](https://www.youtube.com/watch?v=cpjOd5ge2MA)

------
karmakaze
This is the most hands-on exciting post I've seen on HN this year. Congrats!

------
wk_end
Phenomenal! Thank you for helping to preserve this piece of history.

------
codemusings
Can somebody elaborate on what the bluebook or greenbook is? I tried googling
but nothing useful turned up. At least nothing related to programming.

~~~
jecel
In 1978 the Smalltalk group at Xerox tried to build a computer that people
could buy. The Notetaker used several 8086 processors in a sewing machine form
factor (like the later Osborn I) so you could carry around a computer with
floppy disks, a mouse and windows. An executive came from the headquarters
specifically to kill the project because Xerox didn't want to sell
microcomputers.

Frustrated, the group got permission to license the language to run on other
people's computers. All the other companies would have to do would be to
implement their own version of the virtual machine and the rest of the system
would just work. They made a deal with Apple, HP, Tektronix and DEC where
these companies would get the language in exchange for having a small team
help Xerox clean up the system and the draft of a book about the system by
trying to do their own implementations.

This was eventually published with the title "Smalltalk-80: The Language and
its Implementation" and became known as the blue book since that was the main
color on the cover. It had four parts: 1) an explanation about the language
and its concepts 2) a reference for all the classes and methods in the system
3) a large example in the form of a discreet event simulator 4) the definition
of the virtual machine in the form of explanations and Smalltalk-80 code
written in a style that could easily be translated to Pascal or C

Years later a version without the fourth part was released with a purple
cover.

Before the book came out, a series of articles about Smalltalk-80 were
published in the August 1981 issue of Byte magazine.

Another book was "Smalltalk-80: The Interactive Programming Environment" about
the GUI. It became known as the orange book. There was another book that was
planned but never released.

As part of the efforts of the implementation groups (now 5 since DEC shared
its license with Berkeley) they had some mini conferences to share experiences
and decided it would be great to make that into a book as well. "Smalltalk-80:
Bits of History, Words of Advice" was the result and became known as the green
book.

~~~
Rochus
> Before the book came out, a series of articles about Smalltalk-80 were
> published in the August 1981 issue of Byte magazine.

Smalltalk-76 was the first version that mostly (besides "one metaclass per
class" and "blocks with arguments") corresponds to what we understand by
Smalltalk today. It was developed by Ingalls and published already in 1978,
see
[https://dl.acm.org/doi/abs/10.1145/512760.512762](https://dl.acm.org/doi/abs/10.1145/512760.512762).
This was the earliest publication about Smalltalk as far as I know.

~~~
jecel
There was an article in 1975 and two in 1977, but they were about Smalltalk-72
and didn't have too many details.

[http://www.vpri.org/pdf/hc_ACK_Pisa_1975.pdf](http://www.vpri.org/pdf/hc_ACK_Pisa_1975.pdf)

[http://www.vpri.org/pdf/m1977001_dynamedia.pdf](http://www.vpri.org/pdf/m1977001_dynamedia.pdf)

[http://dreammachin.es/Kay_SciAm_77.pdf](http://dreammachin.es/Kay_SciAm_77.pdf)

~~~
Rochus
Interesting, thanks. Smalltalk-72 was a rather different system, i.e. didn't
have much in common with Smalltalk-80 (in contrast with Smalltalk-76 which was
almost there). I already have the Smalltalk-72 instruction manual from 1976,
but I will gladly read the referenced articles too.

------
nickdothutton
Some of the most intelligent and thoughtful comments I’ve read on are on this
thread. Sometimes the most vivid dreams are the early ones, before people
adjust to the possible. There are a whole host of ideas of days passed that
deserve revisiting. I wrote a little about them here:
[https://blog.eutopian.io/the-next-big-thing-go-back-to-
the-f...](https://blog.eutopian.io/the-next-big-thing-go-back-to-the-future./)

------
robcee
Amazing work!

