proj-plbook-plChSmalltalkLang

Table of Contents for Programming Languages: a survey

Smalltalk

Because of its importance as an exemplar of a style of computer language, Smalltalk gets its own chapter.

attributes:

big ideas: "We had two ideas, really. One of them we got from Lisp: late binding (..If you’re using early-binding languages as most people do, rather than late-binding languages, then you really start getting locked in to stuff that you’ve already done. You can’t reformulate things that easily...). The other one was the idea of objects." -- Alan Kay, http://queue.acm.org/detail.cfm?id=1039523

people: Alan Kay

influences: "Sketchpad, Simula, the design for the ARPAnet, the Burroughs B5000, and my background in Biology and Mathematics" -- Alan Kay, http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en

tutorials and books:

retrospectives:

overviews:

code examples:

pros:

cons:

opinions:

kernel

"only six "keywords" are reserved in Smalltalk: true, false, nil, self, super, and thisContext... The only built-in language constructs are message sends, assignment, method return and literal syntax for some objects....The remainder of the language, including control structures for conditional evaluation and iteration, is implemented on top of the built-in constructs by the standard Smalltalk class library. (For performance reasons, implementations may recognize and treat as special some of those messages; however, this is only an optimization and is not hardwired into the language syntax.)

...

The adage that "Smalltalk syntax fits on a postcard" refers to a code snippet by Ralph Johnson, demonstrating all the basic standard syntactic elements of methods:[28][29]

exampleWithNumber: x

y
    true & false not & (nil isNil) ifFalse: [self halt].
    y := self size + super size.
    #($a #a 'a' 1 1.0)
        do: [ :each |
            Transcript show: (each class name);
                       show: ' '].
    ^x < y

" -- https://en.wikipedia.org/wiki/Smalltalk#Syntax

features

https://squeak.org/documentation/terse_guide/

implementations

The main FOSS implementations are Squeak and Pharo.

Pharo is a fork of Squeak for the purpose of breaking backwards compatibility.

There is also GNU Smalltalk, which isn't as popular but is said to be more suited to commandline scripting in Smalltalk.

Pharo

https://upload.wikimedia.org/wikipedia/commons/a/a7/Pharo_syntax_postcard.svg

Other implementations

Variants

Other links

Tools