Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Язык Smalltalk Печать

Язык Smalltalk отличается от всех других языков, описанных на данном сайте, в двух отношениях:

  1. Он разрабатывался как целая система, а не как просто средство для написания программ.
  2. Объектная ориентация в этом языке изначально была встроенной концепцией в противоположность языкам C++ и Ada, в которых к уже существующим механизмам была просто добавлена концепция наследования.

Использование языка Smalltalk исходно было ограничено отсутствием доступных реализаций. Но теперь это уже не так. Язык Smalltalk имеет немногочисленных, но преданных приверженцев. Smalltalk был разработан в начале 70-х гг. Аланом Кеем в исследовательском центре Xerox PARC (Palo Alto Research Center).

Целью проекта под названием Dynabook было создание целой среды для персонального компьютера. Это происходило во время расцвета деятельности Xerox PARC - тогда были разработаны персональные компьютеры Alto и Star, мышь, оконная среда (впоследствии весьма эффективно использованная Стивеном Джобсом в фирме Apple для разработки компьютеров Macintosh), значки для программ, сети Ethernet и Smalltalk.

В 1972 г. Дан Ингаллс разработал первую реализацию языка, известную как Smalltalk-72. Это была первая практическая версия языка. Затем в Smalltalk были внесены некоторые изменения и общепринятым стандартом описания языка стал Smalltalk-80. Поскольку официального стандарта не существует, название Smalltalk применяется для обозначения набора нескольких достаточно близких и чрезвычайно совместимых языков.

Первоначально для выполнения программ на Smalltalk требовалась целая вычислительная среда компьютера специального назначения. По этой причине распространение этого языка было достаточно ограниченным. Тем не менее в настоящее время существует несколько реализаций этой системы общего назначения, и ее можно легко устанавливать на машины широкого класса типа рабочих станций UNIX и PC.

Краткий обзор языка

Уникальность языка Smalltalk определяют следующие свойства, благодаря которым он отличается от остальных языков, описанных на сайте. Среда разработки. Smalltalk разрабатывался как целая система: язык, компьютер и среда программирования. Однако в данной книге мы рассматриваем Smalltalk только как язык программирования и совершенно не касаемся вопросов, связанных со средой программирования.

Минимальный язык разработки. Небольшой базовый язык определяет Smalltalk. По существу, все, что можно делать в Smalltalk, - это разработать класс как подкласс других классов и к каждому из разработанных классов присоединить методы. Основные операторы Smalltalk определяют присваивание и последовательное выполнение действий. Истинная мощь языка заключается в механизме параметрических вызовов, называемых сообщениями. При помощи сообщений можно определять структуры управления, подобные нашим обычным конструкциям if и while. Smalltalk поставляется с предопределенным набором определений классов, написанных на языке Smalltalk. Когда Smalltalk устанавливается на компьютер, то создается образ пустого окружения путем включения всех этих определений. При вызове интерпретатора Smalltalk вы получаете свою собственную копию этого образа. Внутри этого образа вы строите новые классы и модифицируете существующие классы добавлением или изменением методов. Системному администратору легко построить систему Smalltalk с альтернативным набором предопределенных определений классов, так что не совсем понятно, что следует понимать под языком Smalltalk. В данной книге мы называем языком Smalltalk набор предопределенных классов.

Выполнение программы Smalltalk. Модель выполнения для Smalltalk основана на коммуникационной модели (communication model). Данные в Smalltalk состоят из объектов, а методы рассматриваются как сообщения, посылаемые объектам. Так, 1 + 2 означает, что сообщение "+" с параметром 2 послано целочисленному объекту 1. Метод "+" в данном случае возвращает значение 3. На первый взгляд это может показаться странным, но становится вполне естественным после небольшой практики.

Smalltalk использует динамическую модель последовательности выполнения действий. Каждый метод выполняется с одновременным созданием записи активации, называемой контекстом. Так как блоки, которые содержат локальные переменные, могут быть присвоены переменной, то стековый механизм организации памяти, при котором читается последний записанный объект, становится здесь некорректным. Как для хранения объектов данных, так и для хранения записей активации Smalltalk должен использовать динамическую организацию памяти в виде кучи. Как правило, используется динамическая сборка мусора, хотя семантика необходимой сборки мусора в языке не специфицирована.