Lisaac — первый компилируемый объектно-ориентированный язык программирования, основанный на концепции прототипов, поддерживающий системное программирование и контрактное программирование.
Lisaac был разработан для написания операционной системы Isaac.
Компилятор Lisaac создаёт оптимизированный ANSI C код, который можно скомпилировать на любой платформе, для которой имеется компилятор языка C, что делает программы на языке Lisaac переносимыми. Возможно получить программы столь же быстрые, как и программы, написанные на языке C.
Несмотря на то, что язык строго типизирован, нет различия между кодом и данными. Даже скомпилированный код сохраняет динамические свойства.
Простейший пример кода Section Header + name := HELLO_WORLD; Section Public - main <- ( "Hello world\n".print; );
Динамическое наследование Родительский объект — это просто слот, значение которого можно переопределить:
Section Header
- NAME := DECOD_MPEG2_TO_SCREEN;
Section Inherit
- videoparent : OBJECT <- ( + result : OBJECT;
typ .when 1 then { result := WINDOW;} .when 2 then { result := VIDEO_VGA;} .when 3 then { result := VIDEO_TVOUT;};
result )
Section Public
- typ : INTEGER;
- decode_stream <-
( putimage decode_to_bitmap; )
Переопределение операторов
В Lisaac оператор — это слот, значение которого можно переопределить. Для примера переопределим оператор "+" для объекта NUMERIC:
- '+' Left 80 other:SELF :SELF <- Self - -other;
Или для матрицы:
- '+' Left 80 other:SELF :SELF <-
( + result : SELF;
result := SELF.create count; 1.to tab.count do { i : INTEGER; result.put (item i+other.item i) to i;
result )
Обобщённое программирование
Предусмотрены обобщённые объекты:
ARRAY[E], DICTIONARY[KEY,VALUE]
Контрактное программирование
Контрактное программирование с использованием Z нотации.
Внешние ссылки Официальный сайт Lisaac на GNA Lisaac на Alioth
Сноски
Категория:Объектно-ориентированные языки программирования