Язык Smalltalk разработан участниками группы исследовательского центра фирмы Xerox в Palo Alto как элемент программы фантастического проекта Dynabook Алана Кая (Alan Kay). В основу языка Smalltalk были положены идеи языка Simula, а также языка FLEX и разработки Сеймора Паперта и Валласа Фьюрзича (Seymore Papert, Wallace Feurzeig). Smalltalk является одновременно языком программирования и программной оболочкой. Это "чистый" объектно-ориентированный язык, в котором все рассматривается в виде объектов, включая целые числа и классы. Smalltalk, как и язык Simula, является наиболее представительным объектно-ориентированным языком, поскольку он оказал влияние не только на последующие поколения языков программирования, но и на принципы построения графического интерфейса пользователя (например, на наиболее популярные сегодня средства визуализации Macintosh и Motif).
Работа над языком Smalltalk продолжалась почти 10 лет. Главным архитектором проекта Smalltalk на протяжении всей работы был Дэн Ингалс (Dan Ingalls), но значительный вклад в него внесли также Питер Дейтч, Глен Краснер и Ким Мак-Колл (Peter Deutsch, Glenn Krasner, Kim McCall). Элементы оболочки Smalltalk разрабатывались параллельно Джеймсом Альтхофом, Робертом Флеганом, Тедом Кехлером, Дианой Мерри и Стивом Рутцом (James Althoff, Robert Flegal, Ted Kaehler, Diana Merry и Steve Rutz). Важную роль в проекте играли также Адель Гольдберг и Девид Робсон (Adele GoldBerg, David Robson), которые вели учет по ходу проектирования. Известно пять реализаций языка Smalltalk: Smalltalk-72, -74, -76, -78, -80 (цифры обозначают год создания). Реализации Smalltalk-72, -74 заложили основу языка, но не имели механизма наследования.
В последующих версиях был введен общий суперкласс и завершено формирование идеи о том, что все элементы языка должны быть объектами. Smalltalk-80 реализован на многих классах ЭВМ и является сегодня коммерческим продуктом в первую очередь для персональных компьютеров и рабочих станций.
По утверждению Ингалса: "Цель проекта Smalltalk состоит в том, чтобы сделать мир информации доступным даже для детей любого возраста. Вся трудность состоит в том, чтобы найти и использовать достаточно простые и эффективные средства, которые позволят отдельному человеку свободно оперировать самой разной информацией от простых чисел и текста до звуковых и зрительных образов". Основу языка составляют две простые концепции: 1) все рассматривается в качестве объектов; 2) объекты взаимодействуют путем обмена сообщениями. Ниже приведены характеристики языка Smalltalk, имеющие отношения к семи основным элементам объектного подхода.
Абстракции | Переменные объектов Методы объектов Переменные классов Методы классов |
Да Да Да Да |
Ограничение доступа | Для переменных Для методов |
Обособленные Общедоступные |
Модульность | Виды модульности | Отсутствует |
Иерархия | Наследование Обобщенные блоки Метаклассы |
Простое Нет Да |
Типирование | Строгое типирование Полиморфизм |
Нет Да (простой) |
Параллельность | Многозадачность | Да (определяется в классе) |
Устойчивость | Устойчивость объектов | Нет |