Кваджект
В информатике квадект — это объектно -подобная структура данных , содержащая как данные, так и код (или указатели на код), представленная как интерфейс в форме вызовов и способная принимать список вызовов к другим кваджектам для обратных вызовов и вызовов . Они были разработаны Алексией Массалин в 1989 году для ядра Synthesis . [1] и назван в честь Qua! Machine — уникальная аппаратная платформа, созданная Massalin. Происхождение термина «ква» неясно; Массалин с юмором утверждает, что этот звук издают коалы . [2]
Основная цель quajects — предоставить абстракцию для управления самомодифицирующимся кодом , позволяя оптимизировать код во время выполнения для каждого объекта отдельно. Хотя исходное ядро Synthesis требовало написания квадектов на разработанном вручную языке ассемблера , это было сделано для того, чтобы избежать разработки сложного компилятора; Массалин отметила, что компиляция «точно в срок» (JIT) для языка программирования высокого уровня , который позволяет генерировать код во время выполнения , как в Lisp или Smalltalk , также может применять этот подход, хотя она также утверждала, что сложность такого компилятора, вероятно, была быть запретительным.
Кважекты отличаются от более традиционных объектов двумя ключевыми моментами: во-первых, они всегда используют форму шаблона внедрения зависимостей для управления как интерфейсами с другими кваджектами, так и продолжениями из кважекта; список ссылок на вызовы для этого является частью создания quaject и может обновляться в течение срока службы quaject. Во-вторых, что более важно, набор методов данного кваджекта может быть уникальным для конкретного кваджекта; методы для типа или класса квектов хранятся как один или несколько шаблонов, а не как фиксированный код. Хотя доступ к общим методам можно получить через общую таблицу указателей, отдельные кваджекты также могут иметь методы, созданные специально для адаптации производительности к поведению этого кваджекта.
Ссылки
[ редактировать ]- ^ Пу, Калтон ; Массалин, Генри ; Иоаннидис, Джон (1992). Синтез: эффективная реализация фундаментальных служб операционной системы (PDF) (кандидатская диссертация). Нью-Йорк: Департамент компьютерных наук Колумбийского университета . Номер заказа UMI GAX92-32050. Архивировано (PDF) из оригинала 4 июля 2017 г. Проверено 25 апреля 2012 г. [1] Архивировано 12 марта 2016 г. на Wayback Machine.
- Валери Хенсон (20 февраля 2008 г.). «KHB: Синтез: эффективная реализация фундаментальных служб операционных систем» . LWN.net .
- ^ Пул, Гэри Эндрю (1 декабря 1996 г.). «Ква» . Проводной . Конде Наст. Архивировано из оригинала 4 июля 2017 г. Проверено 23 августа 2016 г.