Фэндом

Smalltalk по-русски

Self

239статей на
этой вики
Добавить новую страницу
Обсуждение0 Поделиться

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

Ссылки Править

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики