The Evolution of Smalltalk from Smalltalk-72 to Squeak [video]
pldi21.org
pldi21.org
This document [0] and especially Appendix II in this pdf [1] explain it well. Essentially an object just gets the unparsed message sent to it for it to do what it wants. So the code for an object basically parses the raw symbols to figure out what message to respond to.
[0] http://worrydream.com/EarlyHistoryOfSmalltalk
[1] https://raw.githubusercontent.com/worrydream/EarlyHistoryOfS...
http://www.bitsavers.org/pdf/xerox/parc/techReports/Smalltal...
In November 1972, Alan Kay gave an inspiring seminar at MIT
on Smalltalk-72. There were ongoing discussions during the weeks after the lecture about the following:
Dennis and van Horn capabilities
Petri nets
Smalltalk-72
Simula, which was strangely very different from Smalltalk-72
the Internet
etc.)
After extensive discussion about limitations of previousefforts, we realized that
there is a single abstraction that provided the foundation
for all of computation which it was decided to name the
"Actors Abstraction". The Actors Paradigm covers all of
digital computation and consequently is more powerful than
Church/Turing Paradigm.
Although the use of bitmap displays with Smalltak-72
was very impressive, Smalltalk-72 left a great deal to
be desired as a programming language.
Later Smalltalk designs were completely
different because they adopted the Simula class
hierarchy instead of the byte stream interpreter of
Smalltalk72
Limitations of Smalltalk72 reinforced the decision to notdefine the fundamental abstraction of computation using a
programming language. Instead computation should be
defined axiomatically in terms of fundamental concepts including
Actors
Computational Events
Partial order on computational events
Regions of mutual exclusion
Event induction as the foundation for proving properties of Actors Systems
See the following on how to axiomatically define computationusing the Actors Abstraction:
https://papers.ssrn.com/abstract=3418003
https://papers.ssrn.com/abstract=3459566
Also, see the following video:
I have avoided calling Pharo "Smalltalk" as it has evolved from the original fork of Squeak and the project is evolving and modifying from its Smalltalk origins.
My personal favorite language that has evolved from Smalltalk is Newspeak. https://newspeaklanguage.org
The current version runs on top of WASM and can be used in a web browser. Gilad Bracha is going some exciting and interesting things with this language.
Hopefully not in the same way that Dart turned out to be so "exciting and interesting" :)
Perhaps a question of expectations: "The big question is whether Google originally intended Dart to replace JavaScript".
https://insights.dice.com/2019/03/27/fall-rise-dart-google-j...
They’ve all left now (I don’t know what Lars’ involvement is anymore?).
But I was curious about Dart for a cross platform app and learned Dart 2.0 and was wholeheartedly let down. I just felt like I was staring at a Java dialect. The “sanctioned” tutorial I watched introduced classes as a “way of organizing code” which I guess could abstractly be said to be true, but IMO misses the mark entirely.
Anyway, I found Dart 2.0 to be very uninteresting. Very safe and traditional and boring. Maybe I need to relook closer to try and see what you’re seeing that I did not.
because…?
for example…?
Dart 1.0 Optional Types runtime checks
Dart 2.0 Mandatory Types (sound null-safe type system) static checks + runtime checks.
All the key designer from Dart 1.0 left Google shortly after Chrome dropped support.
The language only got rescue thanks to AdWords not wanting to rewrite their stack yet again (they had recently migrated away from GWT).
Afterwards Flutter provided the necessary funding to keep improving the language as they replaced JavaScript with Dart.
Language evolution is an interesting thing, especially when you've got corporate influence, second system effect etc. Or simply the need to add stuff, as languages are considered just another product, and otherwise you're considered "stale" in today's market. Weird.
A simple example of Newspeak and literate programming: https://newspeaklanguage.org/samples/Literate/Literate.html
The IDE works in a similar way to the Squeak-based IDE, but there is no image and being hosted in a browser has other limitations. This isn't a language you are going to use to make a quick and dirty CRUD app (although I have) but it is an interesting example of how Smalltalk concepts can be used in a web-based world.
It is worth asking on the forum to see if there is some exisiting code to show this in practice.
the smalltalk universe is pretty special, the live graphical environment is thrilling and their idioms/culture is also very interesting
Yes, I understand that Pharo may well eventually change the some semantics of the underlying language, or at least reserves the right to do so. Fine, call it "not smalltalk" when that happens (if ever).
Until then, call pharo what it is. An interesting, in some ways innovative, FORK OF SQUEAK SMALLTALK.
Its a squeak fork, in the same way that cuis smalltalk is a squeak fork. Both pharo and cuis have evolved in different directions, as per their original directives.
And you know what? Thats fine. Great, in fact. Each can (and does) learn from the other.
And they're both STILL smalltalk. And thats also fine!
Since Pharo wants to position itself as a modern, industrial programming language, it makes sense that the project would want to distance itself from that reputation.
Err ... oops ... ;-)
I, on the other hand, consider Self and Slate to be good examples of Smalltalk.
Beyond any technical discussions there is the marketing issue. Smalltalk's reputation took a major hit in the 1990s with the rise of Java (from the "language of the future that doesn't run on the computers you have, yet" it became "a failed language of the past") and association with the name can hurt a project in some cases.
Eclipse grew out from Visual Age series.
Or that Sun repurposed Strongtalk for Hotspot.
This, precisely. Pharo is a fork of Squeak Smalltalk, and Squeak Smalltalk is a direct descendant of Smalltalk-80.
(And a common thread in Smalltalk implementations and versions from Smalltalk-72 to Squeak is the illustrious Dan Ingalls.)
Still, Smalltalk has nothing on Lisp or BASIC in terms of dialects/variants/versions. ;-)
Here is a recent talk he gave about it:
First, source files everywhere, including in the root, and routinely thousands of lines long [2] with zero comments in them.
[1] https://github.com/newspeaklanguage [2] https://github.com/newspeaklanguage/newspeak/blob/master/Bra...
In the case of Newspeak, I only would edit the raw source code if I had no other way to do it. It is so much easier and ergonomic to use the Newspeak IDE to view and modify the code, with the live debugger, object introspection and all the advantages that the IDE gives you. The recent addition of exemplars, where working fragments of the code are part of the documentation, is especially nice.
Apart from a text editor?
$ nano Pharo9.0-64bit-bf4a85f.sources
[Read 1230003 lines (Converted from Mac format)]
"The relationship of Smalltalk and version control systems [not designed to preserve that Smalltalk way of working] is a difficult one."https://www.google.com/books/edition/Mastering_ENVY_Develope...
https://www.cincomsmalltalk.com/main/
I have been blogging about it recently here:
It also forked from squeak, but went on an aggressive diet, shedding much complexity in the base image, and modularising (using git) much of the rest.
Smalltalk newcomers may find cuis is easier to "digest" and get to grips with. Having used pharo and squeak myself, I find myself preferring cuis for more serious development. YMMV.
- full instructions on install & first steps at [main cuis repo](https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev)
- ["The Cuis Book"](https://cuis-smalltalk.github.io/TheCuisBook/index.html)
- [cuis docs repo](https://github.com/Cuis-Smalltalk/Learning-Cuis)
- [cuis related repos on github](https://github.com/search?o=desc&p=1&q=cuis-smalltalk&s=upda...)