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 ) |
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.
Section Header + name := HELLO_WORLD; Section Public - main <- ( "Hello world\n".print; );
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; )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 )Generiska objekt tillhandahållna :
ARRAY[E], DICTIONARY[KEY,VALUE]Kontraktsprogrammering med Z-notation .