Smalltalk по-русски
Advertisement

Self как развитие идей Smalltalk[]

Наличие в Smalltalk понятия класса создает проблему: если всё объект, и каждый объект является членом некоторого класса, то к какому классу относятся объекты, соответствующие классам? Ответ на этот вопрос, который предлагает Smalltalk, довольно сложен. Метауровень Smalltalk содержит "теневую" иерархию классов классов (это не опечатка!), плюс класс Metaclass и класс класса Metaclass.

Self устроен проще. Каждый объект имеет именованые слоты, в которых лежат ссылки на другие объекты. Один слот объекта (prototype) является выделеным в том смысле, что если при попытке обратиться к слоту объекта этот слот найти не удалось, поиск продолжается в том объекте, на который ссылается слот prototype, и так до тех пор, пока не будет найден искомый слот, или пока у очередного объекта слот prototype не будет пустым. Методы объекта хранятся в его слотах.

Благодаря такой архитектуре, объекты Self становятся самодостаточными, а понятие класса исчезает. Разумеется, для эффективной реализации такого языка требуется очень мощная поддержка со стороны виртуальной машины (разработка ВМ Self продвинула технологию виртуальных машин на качественно новый уровень; из широко используемых ВМ эти достижения используют, с одной стороны, виртуальная машина Java (HotSpot), с другой стороны -- ВМ VisualWorks).

Self и Morphic[]

Простота Self приводит к удивительно естественной технике работы с объектами. Основной операцией является клонирование -- порождение нового объекта, использующего существующий в качестве прототипа.

Self дал начало графической архитектуре Morphic (перенесенной впоследствии под Squeak). Основной единицей в Morphic является морф (morph) -- интерактивный графический объект. Для Morphic клонирование является основным способом порождать новые морфы. Поэтому вместо специальных операций вроде "создать кнопку" Morphic предлагает взять прототип кнопки и склонировать (программным путем, либо интерактивно, через меню).

История Self[]

История языка Self печальна. Он родился в начале 1980-х как ответ на определенное окостенение Smalltalk-80 (связанное с началом попыток его коммерциализации). С начала 1990-х "местом обитания" Self стали лаборатории Sun. Во второй половине 1990-х Self был принесен в жертву более перспективному, с точки зрения руководства , языку -- Java. Работы над языком были свернуты и фактически его история на этом закончилась.

ToDo:

  • Более подробно проследить истории разработчиков Self
  • Написать о связях Self и Strongtalk

Ссылки[]

Advertisement