Self

Русская Википедия - свободная энциклопедияСкачать словарь
Self
Self — объектно-ориентированныйпрототипный язык программирования, который задумывался как продолжение языка Smalltalk.

Разрабатывался в лаборатории Xerox PARC, а потом в Стэндфордском университете. Это была экспериментальная разработка, целью которой было выяснить, насколько далеко можно продвинуться в направлении динамической чисто объектно-ориентированной системы программирования.

В итоге в языке Self были реализованы следующие концепции:

  • отсутствие классов; такие языки называются prototype-based; в них создание новых типов объектов осуществляется посредством клонирования имеющихся и внесения изменений непосредственно в структуру нового объекта; каждый объект представляет собой набор слотов одно из нескольких видов: константный (constant), переменный (variable) или родительский (parent), который задаёт наследование; также у объекта может быть активизационная запись (activation record), которая делает объект методом;
  • отсутствие операции присваивания (:=), которая была в Smalltalk; присваивание значений локальных слотов и слотов в получателе (self) также осуществляется посредством посылки сообщения;
  • поддерживается множественное наследование путём делегирования, то есть можно указать больше одного объекта, которые будут обрабатывать сообщения, не найденные в исходном объекте; в то же время, получателем сообщений, вызванных из родительских методов опять будет дочерний объект;
  • родительские слоты могут быть изменяемыми, то есть поддерживается динамическое множественное наследование; очевидное применение — простая реализация шаблона проектирования State;
  • даже базовые объекты, которые в Smalltalk были зарезервированными словами (nil, truefalse), тоже являются обычными слотами в корневом объекте и извлекаются посредством посылки сообщения; таким образом в языке Self осталось только одно зарезервированное слово (resend — делегирования вызова родительским объектам), в то время как в Smalltalk их было пять;
  • в Smalltalk некоторые арифметические операции и сообщения, отвечающие за условия и циклы обрабатываются компилятором специальным образом; это было сделано для улучшения производительности; в Self таких частных случаев нет, и абсолютно все сообщения трактуются одинаково; это означает, что даже простейшая условная конструкция требует две операции посылки сообщения и клонирования нескольких объектов;

Продолжение на Wikipedia.οrg...


© Текстовое содержимое использует материал из Википедии® и доступно в соответствии с лицензией свободной документации GNU