Liberating the Smalltalk lurking in C and Unix (2014) [video]
youtube.com
youtube.com
I'm sad to say that it has nothing at all to do with Smalltalk.
Its topic is an attempt to make all programs that run in Linux (and similar systems) able to access each others' data structures, including each others' functions, using new work built on the debugging facilities that unixes already have. The big picture is that so-called static languages actually provide enough information (via debugging mechanisms) so that OTHER languages can treat them as if they were dynamic languages, and (really fun big picture stuff) can potentially automate discovery of their structure to the extent that all languages can interoperate without FFIs.
https://www.youtube.com/playlist?list=PLcGKfGEEONaDO2dvGEdod...
It is unfortunate that its youth was not thus preserved.
"Smalltalk was created to investigate teaching programming to children. Understandably, it's a very small and simple language, the simplest of the major programming languages."
https://www.codeproject.com/Articles/1241904/Introduction-to...
I just wish these languages preserved their sense of ingenuity and wonder, before putting on the iron maidens of their frameworks.
I wish there was a C for children, but explaining indirect addressing and the evolution of indexed pointers is a bridge too far.
Then others at Xerox added more professional stuff, the kind programmers would want, which resulted in Smalltalk 76 and so on. These were not as approachable for children anymore allegedly.
Nowadays there's Squeak which is a Smalltalk implementation, which influenced Scratch I think (first version of Scratch was written in Squeak).
Search the internet for Adam Kay's documents on Squeak and educating children, helps to put on context what he had in mind (if you, like me, just install Squeak and expect a stunning tutorial... it's not like that, at least I didn't find).
Kay also said, having an IDE only takes you to the 70s from the 60s too... So there's work to be done yet.
We should strive for such simplicity.
Ultimately different philosophies are at work. Smalltalk makes many objects and has the power to introspect on them (classes are also objects), Lisp has facilities to introspect and do meta programming using macros, making new keywords, so of course the language will grow. That is the whole point. Growing a language for solving specific problems. Smalltalk makes new objects instead.
https://en.wikipedia.org/wiki/Smalltalk#Syntax
I don’t think they count.
If we’re counting small numbers, Lisp also has a small number of “keywords”, nine:
quote atom eq
cons car cdr
lambda label define
Others put this number at five or seven. I guess you can express define as a function of label and lambda, so you drop to eight, but I don’t know how you get to seven, let alone five.Then there are things like "What is the syntax for a vector?" and all kinds of reader syntax with "# + something", depending on the dialect/specific lisp language, I guess.
EDIT: Found this: https://wiki.c2.com/?SmalltalkSyntaxInaPostcard
(define (cons x y)
(lambda (f)
(f x y)))
(define (car c)
(c (lambda (x y) x)))
(define (cdr c)
(c (lambda (x y) y)))Just throw that into the list, and ditch define.
(Don't get me wrong. I think the kid's onto something. Just why only look at Smalltalk? Plenty of other image-based systems from the 70s and 80s.)
For a short while in the 1990s Smalltalk V/Win was available at no cost with the name Smalltalk Express.