Lisaac

Lisaac

Infobox programming language
name = Lisaac

paradigm = object-oriented prototype-based
year = 2003
designer = Benoît Sonntag
developer = Benoît Sonntag & Jérôme Boutet
latest_release_version = 0.13.1 (Specification)
latest_release_date = February 17, 2008
typing = static typing
implementations = Lisaac
dialects =
influenced_by = Smalltalk, Self, Eiffel
influenced =
website = [http://isaacproject.u-strasbg.fr/li.html isaacproject.u-strasbg.fr]

Lisaac is the first compiled object-oriented programming language based on prototype concepts, with system programming facilities and design by contract.

Lisaac's developers admired both Self's flexibility and dynamic inheritance, and Eiffel's static typing and design by contract features. Seeking to combine these two apparently contradictory feature sets, Lisaac was created.

Lisaac was designed as the language in which the Isaac operating system would be programmed.

The Lisaac compiler produces optimized ANSI C code, which can then be compiled on every architecture with an appropriate C compiler which makes Lisaac a real multi-platform language. Compiling results show that it is possible to obtain executables from a high-level prototype-based language that are as fast as C programs [cite web |url=http://isaacproject.u-strasbg.fr/li/li_benchs.html |title=Isaac project benchmarks |accessdate=2007-07-24 ] [cite web |url=http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all |title=Computer Language Benchmarks Game |accessdate=2008-07-08 ] .

Despite being strongly typed, there is no difference between code and data.

Features

* Communication protection mechanisms
* Hardware facilities
** System interrupt support
** Driver memory mapping
* Despite being compiled, all objects retain their dynamic abilities

Dynamic inheritance

The parent of each object is just a slot that can be assigned as required in the code, for instance:

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; )

Operator redefining

In Lisaac, an operator is a slot and can be redefined.For example overloading the + operator for a NUMERIC object:

- '+' Left 80 other:SELF :SELF <- Self - -other;

Or for a matrix:

- '+' 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 )

Genericity

Generic objects are supported, for instance:

ARRAY [E] , DICTIONARY [KEY,VALUE]

Contract programming

Contract programming using Z notation is provided.

External links

* [http://isaacproject.u-strasbg.fr/li.html Official website]
* [https://gna.org/projects/isaac/ Lisaac on GNA]

Notes and references


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Lisaac — Apparu en 2000 Auteur Benoît Sonntag Développeurs INRIA, LORIA et CNRS …   Wikipédia en Français

  • Lisaac — Класс языка: объектно ориентированный прототипный Появился в: 2003 Автор(ы): Benoît Sonntag Релиз: 0.13.1 (Спецификация) (February 17, 2008) Типизация …   Википедия

  • Prototype-based programming — is a style of object oriented programming in which classes are not present, and behavior reuse (known as inheritance in class based languages) is performed via a process of cloning existing objects that serve as prototypes. This model can also be …   Wikipedia

  • Self (programming language) — Infobox programming language name = Self paradigm = object oriented prototype based year = 1986 designer = David Ungar, Randall Smith developer = David Ungar, Randall Smith, Stanford University, Sun Microsystems latest release version = 4.3… …   Wikipedia

  • Langage à prototype — Programmation orientée prototype La programmation orientée prototype est une forme de programmation orientée objet sans classe, basée sur la notion de prototype. Un prototype est un objet à partir duquel on crée de nouveaux objets par clonage. En …   Wikipédia en Français

  • Programmation orientee prototype — Programmation orientée prototype La programmation orientée prototype est une forme de programmation orientée objet sans classe, basée sur la notion de prototype. Un prototype est un objet à partir duquel on crée de nouveaux objets par clonage. En …   Wikipédia en Français

  • Programmation orientée prototype — La programmation orientée prototype est une forme de programmation orientée objet sans classe, basée sur la notion de prototype. Un prototype est un objet à partir duquel on crée de nouveaux objets. Dans le langage de programmation orientée… …   Wikipédia en Français

  • Design by contract — (DbC) or Programming by Contract is an approach to designing computer software. It prescribes that software designers should define formal, precise and verifiable interface specifications for software components, which extend the ordinary… …   Wikipedia

  • Eiffel (langage) — Pour les articles homonymes, voir Eiffel. Eiffel Apparu en 1986 Auteur Be …   Wikipédia en Français

  • Hello World — Pour les articles homonymes, voir Hello (homonymie). hello world (traduit littéralement en français par « bonjour le monde ») sont les mots traditionnellement écrits par un programme informatique simple dont le but est de faire la… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”