WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Lisaac
Класс языка объектно-ориентированный прототипный
Появился в 2003
Автор Benoît Sonntag
Разработчик Benoît Sonntag & Jérôme Boutet
Выпуск 0.13.1 (Спецификация) (17 февраля 2008 года)
Система типов статическая типизация
Основные реализации: Lisaac
Испытал влияние Smalltalk, Self, Эйфель
Лицензия GNU GPL 3
Сайт isaacproject.u-strasbg.fr/…

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

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

Сноски

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


Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии