Lisaac | это... Что такое Lisaac? (original) (raw)

Lisaac

Класс языка: объектно-ориентированный прототипный
Появился в: 2003
Автор(ы): Benoît Sonntag
Релиз: 0.13.1 (Спецификация) (February 17, 2008)
Типизация данных: статическая типизация
Основные реализации: Lisaac
Испытал влияние: Smalltalk, Self, Эйфель
Сайт: isaacproject.u-strasbg.fr

Lisaac — это первый компилируемый объектно-ориентированный язык программирования основанный на концепции прототипов, поддерживающий системное программирование и контрактное программирование.

Lisaac был разработан для написания операционной системы Isaac.

Компилятор Lisaac создаёт оптимизированный ANSI C код, который можно скомпилировать на любой платформе для которой имеется компилятор языка C, что делает программы на языке Lisaac переносимыми. Возможно получить программы столь же быстрые, как и программы написанные на языке C[1][2].

Несмотря на то, что язык строго типизирован, нет различия между кодом и данными. Даже скомпилированный код сохраняет динамические свойства.

Содержание

Простейший пример кода

`Section Header

Динамическое наследование

Родительский объект — это просто слот, значение которого можно переопределить:

Section Header

Section Inherit

typ .when 1 then { result := WINDOW;} .when 2 then { result := VIDEO_VGA;} .when 3 then { result := VIDEO_TVOUT;};

result )

Section Public

( putimage decode_to_bitmap; )

Переопределение операторов

В Lisaac оператор — это слот, значение которого можно переопределить. Для примера переопределим оператор "+" для объекта NUMERIC:

Или для матрицы:

( + 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 нотации.

Внешние ссылки

Сноски

  1. Isaac project benchmarks.(недоступная ссылка — история) Проверено 24 июля 2007.
  2. Computer Language Benchmarks Game. Архивировано из первоисточника 19 марта 2012. Проверено 8 июля 2008.