Conceptually about Smalltalk
Smalltalk is a pure object-oriented language. Unlike Java, C# and other hybrid languages, it provides a simple syntax, which fits to a postcard:
This syntax is all you need to develop enterprise systems based just on several object-oriented concepts. The main are:
- object,
- message,
- polymorphism (full polymorphism, not bound to inheritance!)
Other concepts are:
- class (for reusability and generalisation),
- inheritance,
- namespaces, packages and other means of categorisations.
In Smalltalk, everything is an object, you work even with numbers as with full-featured objects:
9 + 6
means “send message + to object 9 with the argument 6″. Classes are also full objects, so full reflection and modifying classes on-the-fly are supported.
Smalltalk’s concept and syntax comes from 1980s. Thanks to its conceptually clean and simple design, it has been possible to implement all, even the most advanced extensions and solutions using this “one-card syntax” achieving clean, simple solutions. Here are some examples:
- Seaside: pure object-oriented web development framework
- Distributed programming
- Object-relation mapping
- XML Serialization
A proper use of Smalltalk results in systems that are flexible and easy to maintain, thus supporting today’s favourite agile development.
Smalltalk is best utilized as live system1: an image that runs on virtual machine, much like Java does. However in Smalltalk, the system is programmed on-the-fly, so you may change a running system without recompilation and even starting again.
Although Smalltalk is not a main-stream language, it is definitely not off-topic. Most of today’s object-oriented languages may be characterized as a “subset of Smalltalk with some overwhelming legacy”. For instance Objective-C is very near to Smalltalk, but “not everything is object”, so the syntax is more complicated and it contains concepts that are implementation-focused and optimization-focused, which blurs conceptual clarity. Java, C#, Ruby and others slowly mature to Smalltalk possibilities, however having a syntax and optimizations legacy burden. This situation is mostly a result of evolution of hardware. Today, there is very often no need for optimization-focused programming, while concepts-focused programming is discussed more and more.
Smalltalk in CCMi
- We teach Smalltalk to our bachelor students in the subjects BIE-OMO (English version) and BI-OMO (Czech version). The course is based on excellent course by prof. Nierstrasz.
- Our several bachelor theses are focused on Smalltalk.
- We use Smalltalk as a prototyping language in our projects.
- We use open-source implementation
More Information
- CCMi’s wiki page on Smalltalk
- Free Books of Stephen Ducasse
- Learnable Programming — Designing a programming system for understanding programs — Read this article to understand why Smalltalk’s syntax may be better than C-style.
- Today’s Smalltalk: A Second Look At The First OO Language (article)
- What is Object Oriented Programming: A Critical Approach (article)
- Dan Ingalls: Object-Oriented Programming — A lecture from 1989 that is very actual now…
- Swimming with the Fish — A short reflection about programming in Smalltalk
Pharo
- Pharo: Alive and Kicking — lecture from visit of Stéphane Ducasse at FIT in 12/2013
- Pharo is Yours — a lecture by Stéphane Ducasse
Gemstone (fully OO database)
- Most implementations run as a live system, however this is not a must: e.g. GNU Smalltalk is script-based. (back)