Lisaac
| Lisaac | |
|---|---|
| Класс языка | объектно-ориентированный прототипный |
| Появился в | 2003 |
| Автор | Benoît Sonntag |
| Разработчик | Benoît Sonntag & Jérôme Boutet |
| Выпуск | 0.42 (9 ноября 2020) |
| Система типов | статическая типизация |
| Основные реализации | Lisaac |
| Испытал влияние | Smalltalk, Self, Эйфель |
| Лицензия | GNU GPL 3 |
| Сайт | lisaac.org |
Lisaac — первый компилируемый объектно-ориентированный язык программирования, основанный на концепции прототипов, поддерживающий системное программирование и контрактное программирование.
Lisaac был разработан для написания операционной системы Isaac.
Компилятор Lisaac создаёт оптимизированный ANSI C код, который можно скомпилировать на любой платформе, для которой имеется компилятор языка C, что делает программы на языке Lisaac переносимыми. Возможно получить программы столь же быстрые, как и программы, написанные на языке C[1][2].
Несмотря на то, что язык строго типизирован, нет различия между кодом и данными. Даже скомпилированный код сохраняет динамические свойства.
Простейший пример кода
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 нотации.
Внешние ссылки
Сноски
- ↑ Isaac project benchmarks. Дата обращения: 24 июля 2007. Архивировано 12 ноября 2007 года.
- ↑ Computer Language Benchmarks Game. Дата обращения: 8 июля 2008. Архивировано из оригинала 19 марта 2012 года.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.