Lisaac | |
---|---|
clase de idioma | prototipos orientados a objetos |
Apareció en | 2003 |
Autor | Benoit Sonntag |
Desarrollador | Benoît Sonntag y Jérôme Boutet |
Liberar | 0.42 (9 de noviembre de 2020 ) |
sistema de tipos | escritura estática |
Implementaciones principales | Lisaac |
sido influenciado | Smalltalk , Uno mismo , Eifel |
Licencia | GNU GPL 3 |
Sitio web | lisaac.org |
Lisaac es el primer lenguaje de programación orientado a objetos compilado basado en el concepto de prototipos , que admite programación de sistemas y programación por contrato .
Lisaac fue diseñado para escribir el sistema operativo Isaac .
El compilador Lisaac produce código ANSI C optimizado que se puede compilar en cualquier plataforma para la que haya un compilador C , lo que hace que los programas Lisaac sean portátiles. Es posible obtener programas tan rápido como los programas escritos en C [1] [2] .
Aunque el lenguaje está fuertemente tipado, no hay distinción entre código y datos. Incluso el código compilado conserva propiedades dinámicas.
Section Header + name := HELLO_WORLD; Section Public - main <- ( "Hello world\n".print; );
El objeto principal es solo una ranura cuyo valor se puede anular:
Encabezado de sección - NOMBRE := DECOD_MPEG2_TO_SCREEN; Heredar sección - padre del video: OBJETO <- ( + resultado: OBJETO; escribe .cuando 1 entonces {resultado:= VENTANA;} .cuando 2 entonces { resultado := VIDEO_VGA;} .cuando 3 luego { resultado := VIDEO_TVOUT;}; resultado ) Sección Pública - tipo : ENTERO; -decode_stream <- ( putimage decode_to_bitmap; )En Lisaac , un operador es una ranura cuyo valor se puede redefinir. Por ejemplo, redefinamos el operador "+" para el objeto NUMERIC:
- '+' Izquierda 80 otro:SELF :SELF <- Self - -otro;O para una matriz:
- '+' Left 80 other:SELF :SELF <- ( + resultado: AUTO; resultado := SELF.create cuenta; 1.to tab.count do { i : ENTERO; resultado.poner (elemento i+otro.elemento i) a i; }; resultado )Objetos genéricos proporcionados :
ARRAY[E], DICCIONARIO[CLAVE,VALOR]Programación de contratos usando notación Z.