Lisaac

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 14 januari 2020; kontroller kräver 3 redigeringar .
Lisaac
Språkklass objektorienterad prototypframställning
Framträdde i 2003
Författare Benoit Sonntag
Utvecklaren Benoît Sonntag & Jérôme Boutet
Släpp 0,42 (9 november 2020 ) ( 2020-11-09 )
Typ system statisk typning
Stora implementeringar Lisaac
Blivit påverkad Smalltalk , Self , Eifel
Licens GNU GPL 3
Hemsida lisaac.org

Lisaac  är det första kompilerade objektorienterade programmeringsspråket baserat på konceptet prototyper , stödjande systemprogrammering och kontraktsprogrammering .

Lisaac designades för att skriva operativsystemet Isaac .

Lisaac-kompilatorn producerar optimerad ANSI C -kod som kan kompileras på vilken plattform som helst för vilken det finns en C - kompilator , vilket gör Lisaac-program bärbara. Det är möjligt att få program lika snabbt som program skrivna i C [1] [2] .

Även om språket är starkt skrivet, finns det ingen skillnad mellan kod och data. Även kompilerad kod behåller dynamiska egenskaper.

Det enklaste kodexemplet

Section Header + name := HELLO_WORLD; Section Public - main <- ( "Hello world\n".print; );

Dynamiskt arv

Det överordnade objektet är bara en plats vars värde kan åsidosättas:

Sektionshuvud - NAMN := DECOD_MPEG2_TO_SCREEN; Sektion Arv - videoförälder: OBJECT <- ( + resultat : OBJECT; typ .when 1 then { result := WINDOW;} .when 2 then { resultat := VIDEO_VGA;} .when 3 then { resultat := VIDEO_TVOUT;}; resultat ) Offentlig sektion - typ : INTEGER; -decode_stream <- ( putimage decode_to_bitmap; )

Omdefiniera operatörer

I Lisaac är en operatör en slot vars värde kan omdefinieras. Låt oss till exempel omdefiniera "+"-operatorn för NUMERIC-objektet:

- '+' Vänster 80 andra:SJÄLV :SJÄLV <- Själv - -annan;

Eller för en matris:

- '+' Lämnade 80 andra:SELF :SELF <- ( + resultat: SJÄLV; resultat := SELF.create count; 1.to tab.count gör { i: HELTAL; result.put (objekt i+annat.objekt i) till i; }; resultat )

Generisk programmering

Generiska objekt tillhandahållna :

ARRAY[E], DICTIONARY[KEY,VALUE]

Kontraktsprogrammering

Kontraktsprogrammering med Z-notation .

Externa länkar

Fotnoter

  1. ↑ Benchmarks för Isaac-projektet (nedlänk) . Hämtad 24 juli 2007. Arkiverad från originalet 12 november 2007. 
  2. Datorspråk Benchmarks Game (nedlänk) . Tillträdesdatum: 8 juli 2008. Arkiverad från originalet den 19 mars 2012.