Lisaac | |
Data pierwszej wersji | 2000 |
---|---|
Paradygmaty | prototyp , imperatyw , obiekt |
Autor | Benoît Sonntag |
Deweloperzy | Benoît Sonntag |
Ostatnia wersja | 0,42 (26 października 2019 r.) |
Pisanie na maszynie | Mocny , statyczny |
Wpływem | Ja , Eiffel , Smalltalk |
System operacyjny | Wieloplatformowy |
Licencja | Powszechna Licencja Publiczna GNU wersja 3 |
Lisaac jest językiem programowania niezbędnym do skompilowania prototypu, pierwotnie zaprojektowanym do pisania systemu operacyjnego IsaacOS i przystosowania do rozwoju sterowników urządzeń . Stosowany jest głównie w ramach edukacji i badań .
Lisaac jest inspirowany językiem Self dla koncepcji obiektów prototypowych , a także językiem Eiffel, językiem obiektowym klasy, dla aspektów inżynierii oprogramowania, a w szczególności dla programowania kontraktowego . Na koniec dodano koncepcje przydatne do programowania systemowego, takie jak zarządzanie przerwaniami .
Lisaac kompilator generuje zoptymalizowane ANSI C, i jest w związku z tym między platformami .
W tego typu języku króluje przedmiot. Obiekt jest fizycznie obecny w pamięci, klonuje się. Dziedziczenie odbywa się na poziomie obiektów, a nie klas.
Jeden obiekt dziedziczy z innego obiektu, kilka obiektów może dziedziczyć z tego samego obiektu fizycznego. Będąc fizycznie oddzielną jednostką, można zmieniać rodziców w czasie wykonywania (patrz dynamiczne dziedziczenie)
Składnia jest początkowo zainspirowany Smalltalk ale także Eiffel i Jaźni , składnia bloków nauczania jest w dużej mierze zainspirowany C . Używa również niektórych elementów składniowych z Pascala .
Podobnie jak jego starszy brat Self, ten język jest minimalistyczny z brakiem konstrukcji warunków warunkowych, pętli i iteracji: kompilator Lisaac nie wie, co to jest warunek, implementujemy go za pomocą trzech obiektów logicznych, True, False (dziedziczenie True i False). z Boolean), w którym zdefiniowane są metody warunkowe (if; if / else itp.). Typy podstawowe to obiekty, takie jak rozszerzone klasy typów w języku Eiffla.
Section Header - name := HELLO_WORLD; Section Public - main <- ( "Hello world\n".print; );Testy porównawcze przeprowadzone w 2011 roku pokazały wydajność kodu wyprodukowanego przez kompilator : kompletny dekoder MPEG 1/2, napisany w C , został przetłumaczony w Lisaac przy ścisłym zachowaniu tych samych struktur algorytmicznych.
Wyniki są zachęcające: przy 37% mniej linii kodu niż w źródle C, Lisaac tworzy plik wykonywalny o 1,9% wolniej niż plik wykonywalny ze źródła C.