| dbpprop:abstract
|
- Self is an object-oriented programming language based on the concept of prototypes. It was used mainly as an experimental test system for language design in the 1980s and 1990s. In 2006, Self was still being developed as part of the Klein project, which was a Self virtual machine written fully in Self. The latest major version is 4.3, which was released in July 2006. As of 2007, the Klein project is no longer active. Several just-in-time compilation techniques were pioneered and improved in Self research as they were required to allow a very high level object oriented language perform at up to half the speed of optimized C. These techniques were later deployed for Java's HotSpot VM.
- Self [sɛlf] ist eine Programmiersprache, die vor allem in Hinblick auf Ausdrucksfähigkeit und Formbarkeit hin von Randall B. Smith und David Ungar entworfen wurde. Um diese Ziele zu erreichen, wurde ein rein prototypenbasiertes Objektmodell mit einheitlichem Zugriff auf Zustand und Verhalten der Objekte, also auf ihre Attribute und Methoden, entwickelt. Im Gegensatz zu anderen Programmiersprachen ist es in Self möglich, den Zustand von Objekten zu vererben und die Vererbung zur Laufzeit dynamisch anzupassen. Die aktuelle Version 4.3 wurde im Juni 2006 veröffentlicht. Sie läuft auf Intel- und PowerPC-basierten Apple-Rechnern und auf Sun SPARC, aber nicht unter Linux oder Microsoft Windows. Ideen und Konzepte, die ihren originären Ursprung in der Programmiersprache Self haben, wurden über die Jahre sowohl in das Squeak Smalltalk-System übernommen, als auch in Programmiersprachen wie Slate oder io weitergeführt. Die herausragende Self-Eigenschaft ist wohl das Self-Universum, eine Art grafische Benutzeroberfläche, innerhalb derer mit dem Self-Laufzeitsystem interagiert werden kann. Eine Interaktion erfolgt hierbei in der Regel über die Maus und/oder die Tastatur. Visualisiert wird das Self-Universum mittels eines GUI-Frameworks namens Morphic. Betritt eine Person das Self-Universum, so geschieht dies immer über die Lobby, eine Anspielung auf die Empfangshalle eines Hotels. In ihr befinden sich alle im System vorhandenen Objekte, Module, Namensräume und Traits. Das Konzept des (Programmier-)Universums als auch das Morphic-Konzept wurde nahezu identisch im Squeak Smalltalk-System umgesetzt. Trotz der diversen Portierungen sollte man sich vor Augen führen, dass es sich bei der Programmiersprache Self um ein eher akademisch motiviertes Unterfangen handelt. Trotzdem hatte und haben die in Self erprobten Neuheiten Einfluss auf neuere objektorientierte Programmiersprachen.
- Self es un lenguaje de programación orientado a objetos desarrollado por Sun Mycrosistems. Puede decirse que es un sucesor de Smalltalk, y en algunos casos se considera una evolución de éste.
- Self est un langage de programmation orienté objet à prototype issu de recherches poursuivies par Craig Chambers et Ole Agesen dans les années 1990 par Sun Research.
- Self は、「プロトタイプ」の概念に基づいたオブジェクト指向プログラミング言語である。1980年代から1990年代にかけて言語設計の実験的システムとして使われていたが、2006年、Self の開発は活発に続けられており、Self言語自身で書かれた Selfバーチャルマシンを構築する Klein プロジェクトが進められ、2006年7月に最新バージョン 4.3 がリリースされた。
- Self is een objectgeoriënteerde programmeertaal met prototype-based inheritance (prototype-gebaseerde overerving). Self werd met name ontworpen en gebruikt voor academische doeleinden op het gebied van language design (het ontwerpen en implementeren van programmeertalen). Self werd ontworpen door David Ungar en Randall Smith in 1986/87 en publiek gemaakt in 1990. De taal is vooral bekend geworden als inspiratiebron voor JavaScript.
- Self — объектно-ориентированный, прототипный язык программирования, который задумывался как развитие языка Smalltalk. Разрабатывался в лаборатории Xerox PARC, а потом в Стэндфордском университете. Это была экспериментальная разработка, целью которой было выяснить, насколько далеко можно продвинуться в направлении динамической чисто объектно-ориентированной системы программирования. В итоге в языке Self были реализованы следующие концепции: отсутствие классов; такие языки называются prototype-based; в них создание новых типов объектов осуществляется посредством клонирования имеющихся и внесения изменений непосредственно в структуру нового объекта; каждый объект представляет собой набор слотов одного из нескольких видов: константный (constant), переменный (variable) или родительский (parent), который задаёт наследование; также у объекта может быть активизационная запись (activation record), которая делает объект методом; отсутствие операции присваивания (=), которая была в Smalltalk; присваивание значений локальных слотов и слотов в получателе (self) также осуществляется посредством посылки сообщения; поддерживается множественное наследование путём делегирования, то есть можно указать больше одного объекта, обрабатывающего сообщения, которые исходный объект не может обработать; в то же время, получателем сообщений, вызванных из родительских методов опять будет дочерний объект; родительские слоты могут быть изменяемыми, то есть поддерживается динамическое множественное наследование; очевидное применение — простая реализация шаблона проектирования State; даже базовые объекты, которые в Smalltalk были зарезервированными словами, тоже являются обычными слотами в корневом объекте и извлекаются посредством посылки сообщения; таким образом в языке Self осталось только одно зарезервированное слово (resend — делегирования вызова родительским объектам), в то время как в Smalltalk их было пять; в Smalltalk некоторые арифметические операции и сообщения, отвечающие за условия и циклы обрабатываются компилятором специальным образом; это было сделано для улучшения производительности; в Self таких частных случаев нет, и абсолютно все сообщения трактуются одинаково; это означает, что даже простейшая условная конструкция требует две операции посылки сообщения и клонирования нескольких объектов; Понятно, что все эти нововведения выглядят абсолютно дико с точки зрения практического программирования, тем более это выглядело дико в момент создания Self. Но цель научных разработок как раз и заключается в том, чтобы исследовать невероятные подходы в надежде, что в дальнейшем это может получить выгодное применение. Так получилось и с языком Self. Имея такие характеристики, трудно себе представить, что язык Self способен выполняться хотя бы умеренно медленно. Действительно, простая интерпретируемая реализация в лоб выполняет программы, написанные на Self, в сотни-тысячи раз медленнее, чем аналогичная программа на Си. Поэтому разработчики языка в первую очередь сконцентрировали свои усилия на создание эффективного динамического компилятора — Self dynamic compiler technology. Эта система эволюционировала в трёх версиях и к 1993 году достигла невероятных результатов. Стандартный набор целочисленных тестов Стэндфордского университета выполнялся со скоростью 40 % от скорости оптимизирующего компилятора Си. Теория показала, что возможно достичь планки в 60 %, и является пределом для динамических языков, если реализовать более качественное распределение машинного кода. Ещё более впечатляющие результаты могут быть достигнуты в алгоритмах с высокой степенью полиморфизма. Реальные приложения, как правило, и относятся к этой категории. В языках C/C++ полиморфизм реализуется посредством операции косвенного вызова (indirect call). А эта операция обходится очень дорого на современных суперскалярных процессорах. Динамический адаптивный компилятор Self способен реализовать полиморфный вызов так же хорошо, как и любой другой, или даже полностью исключить его посредством встраивания вызываемого метода в вызывающий (adaptive inlining). Таким образом программы на языках C/C++ показывают даже меньшую производительность на таких тестах. Что же обеспечило настолько хороший результат? Вот технологии, которые были реализованы в динамическом компиляторе языка Self: многоуровневый сборщик мусора (multi-generational garbage collector) — для эффективного управления памятью; компиляция одного и того же метода для разных получателей сообщения (customization); полиморфный встроенный кэш вызовов (PIC); сбор статистической информации о частоте вызовов каждого метода в системе с дальнейшей передачей этой информации адаптивному компилятору/декомпилятору. динамическая компиляция часто вызываемого метода с возможностью встраивания нескольких методов вверх и вниз по цепочке вызовов; динамическая декомпиляция с замещением методов на стеке в случае программных изменений; это необходимо для сохранения семантики языка, когда в произвольный момент времени может быть внесено изменение в структуру любого объекта. Правда, следует отметить, что все эти технологии приводили к сильному перерасходу памяти, так что среда разработки Self для нормального функционирования требовала 64 мегабайта памяти. Проект Self финансировался компанией Sun Microsystems, и в 1994 году было решено официально закрыть проект. Видимо, в тот момент поменялась политическая обстановка внутри компании в связи со скорым выходом языка Java, куда и были брошены основные силы.
- Self语言,是一种基于原型的面向对象程序设计语言,于1986年由施乐帕洛阿尔托研究中心的David Ungar和Randy Smith给出了最初的设计。
|
| rdfs:comment
|
- Self is an object-oriented programming language based on the concept of prototypes. It was used mainly as an experimental test system for language design in the 1980s and 1990s. In 2006, Self was still being developed as part of the Klein project, which was a Self virtual machine written fully in Self. The latest major version is 4.3, which was released in July 2006. As of 2007, the Klein project is no longer active.
- Self [sɛlf] ist eine Programmiersprache, die vor allem in Hinblick auf Ausdrucksfähigkeit und Formbarkeit hin von Randall B. Smith und David Ungar entworfen wurde. Um diese Ziele zu erreichen, wurde ein rein prototypenbasiertes Objektmodell mit einheitlichem Zugriff auf Zustand und Verhalten der Objekte, also auf ihre Attribute und Methoden, entwickelt.
- Self es un lenguaje de programación orientado a objetos desarrollado por Sun Mycrosistems. Puede decirse que es un sucesor de Smalltalk, y en algunos casos se considera una evolución de éste.
- Self est un langage de programmation orienté objet à prototype issu de recherches poursuivies par Craig Chambers et Ole Agesen dans les années 1990 par Sun Research.
- Self は、「プロトタイプ」の概念に基づいたオブジェクト指向プログラミング言語である。1980年代から1990年代にかけて言語設計の実験的システムとして使われていたが、2006年、Self の開発は活発に続けられており、Self言語自身で書かれた Selfバーチャルマシンを構築する Klein プロジェクトが進められ、2006年7月に最新バージョン 4.3 がリリースされた。
- Self is een objectgeoriënteerde programmeertaal met prototype-based inheritance (prototype-gebaseerde overerving). Self werd met name ontworpen en gebruikt voor academische doeleinden op het gebied van language design (het ontwerpen en implementeren van programmeertalen). Self werd ontworpen door David Ungar en Randall Smith in 1986/87 en publiek gemaakt in 1990. De taal is vooral bekend geworden als inspiratiebron voor JavaScript.
- Self — объектно-ориентированный, прототипный язык программирования, который задумывался как развитие языка Smalltalk. Разрабатывался в лаборатории Xerox PARC, а потом в Стэндфордском университете.
- Self语言,是一种基于原型的面向对象程序设计语言,于1986年由施乐帕洛阿尔托研究中心的David Ungar和Randy Smith给出了最初的设计。
|