In the history of computing, it sometimes happens that a single new idea/concept/paradigm crystallizes into a purposefully developed language. This is the case with Object Oriented Programming (OOP) and Smalltalk. In the software world, ‘Object Oriented’ is almost synonymous with ‘modern’. If one wishes to deeply understand OOP, then one would be very well served by learning some Smalltalk.

Smalltalk began in the early 1970s (with the work of Alan Kay going back to the 1960s actually) as an attempt to make computing more personal, more ‘biological’, and more human. Instead of a primary concern for hardware, structure, procedures, functions, and resources, it was the goal of the early implementers and contributors to make a language that captured the world the way humans perceive it. Also, the Smalltalk system would be able to communicate with humans on their terms, at least conceptually. A powerful model emerged and it survives to this day. This model is recursively consistent across all scales, including all the way down to language primitives such as integers. It is a generalized and uniform framework. Once the ‘central dogma’ is mastered, there’s nothing left to learn (about the language, not about the problem at hand of course). One computer plus one human mind are sufficient to do valuable work, although of course entire teams and communities may eventually join in.

The key insight was to combine state and process within a single ‘object’. Although this object might participate in a larger system of arbitrary complexity, it would still exist and behave similarly to a biological cell, the building block of life. It would be an entity unto itself, communicating with other ‘cells’ by way of ‘messages’ sent and received. To a great extent, its own internal machinery would be ‘hidden’ from the outside world.

Smalltalk is object oriented in the same way that Lisp is list oriented, APL is array oriented, and BASIC is spaghetti oriented ( 🙂 ). Other key concepts include modularity (local variables), classes (abstract objects), and polymorphism (behaviour over representation). It offers features such as a virtual machine, automatic garbage collection, and a well developed object ‘browser’ which allows zooming in and out of the system including individual objects.

People who are really serious about software should make their own hardware.

– Alan Kay

One of the more popular modern forms of Smalltalk is ‘Squeak’. This brings us to the Raspberry Pi. Squeak was used to implement the original ‘Scratch’. An excellent resource for Squeak on the Pi is Tim Rowledge’s Squeak page.