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.
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. (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)))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
Just throw that into the list, and ditch define.
We should strive for such simplicity.