Search code examples
programming-languagesoopsmalltalk

What is so special about Smalltalk?


In every technical publication, and on this site too, people are always comparing OO languages to Smalltalk. My experience is in Java: is Smalltalk so important that I should study it?


Solution

  • Smalltalk was one of the earliest object-oriented (OO) languages (with others like Simula and Eiffel) and can be said to be extremely "pure" in an OO sense:

    • Everything is an object and objects are only communicated with via the sending of messages
    • No primitives (no ints, booleans etc)
    • No control structures (no for, while, if etc). Sounds impossible but it's true!
    • No statics

    It also pioneered some other, now common, stuff:

    • the virtual machine (and JIT compilation)
    • Debugging by inspection
    • "Hotswapping" running code
    • the modern IDE
    • Closures
    • Duck typing
    • Model-View Controller (MVC) architecture for UIs
    • Test-driven development (TDD) and agile methodology

    And there are other things connected with Smalltalk which didn't really make it into the mainstream:

    • "Image"-based system rather than file-based.
    • Object-oriented databases

    And it's fair to say that the Java collections API and the apache-commons collections API are heavily influenced by Smalltalk.

    I wouldn't say that you should learn Smalltalk per se, but a familiarity with the fundamentals of these features (now present in many other languages) is surely advantageous to you.

    Note that there are currently only 123 questions on here about the language, which was originally intended as an educational language (i.e. aimed at children) by its creator, Alan Kay. It is not particularly heavily used anymore. That's not to say it isn't used. JPMorgan, for example, has a large exotic derivatives risk-management system written in it.