Lisaac

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 14 de enero de 2020; las comprobaciones requieren 3 ediciones .
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 ) ( 2020-11-09 )
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.

El ejemplo de código más simple

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

Herencia dinámica

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

Redefiniendo Operadores

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 )

Programación genérica

Objetos genéricos proporcionados :

ARRAY[E], DICCIONARIO[CLAVE,VALOR]

Contrato de programación

Programación de contratos usando notación Z.

Enlaces externos

Notas al pie

  1. Puntos de referencia del proyecto Isaac (enlace descendente) . Consultado el 24 de julio de 2007. Archivado desde el original el 12 de noviembre de 2007. 
  2. Computer Language Benchmarks Game (enlace descendente) . Fecha de acceso: 8 de julio de 2008. Archivado desde el original el 19 de marzo de 2012.