Claire es un lenguaje de programación funcional y orientado a objetos de alto nivel con capacidad para procesar reglas . Fue diseñado por Yves Caseau en el laboratorio de investigación e-Lab de Bouygues y recibió su definición final en 2004.
Claire proporciona:
- Un sistema de objetos simple con clases y métodos paramétricos .
- Programación funcional polimórfica y paramétrica
- Reglas de producción activadas por eventos
- Instantáneas versionadas del estado de todo el sistema, o de cualquier parte, que admiten la reversión y la exploración sencilla de los espacios de búsqueda.
- Relaciones explícitas entre entidades; por ejemplo, dos entidades podrían declararse inversas una de la otra.
- Conjuntos de primera clase con una sintaxis conveniente para la programación basada en conjuntos.
- Un sistema de tipos expresivo basado en conjuntos que permite tanto la tipificación estática de segundo orden como la dinámica.
La implementación de referencia de Claire , que consta de un intérprete y un compilador, se publicó como código abierto en su totalidad con el lanzamiento de la versión 3.3.46 en febrero de 2009. Otra implementación, WebClaire, cuenta con soporte comercial .
Desde 2022, Claire cuenta con una nueva versión de referencia, CLAIRE4, escrita en el lenguaje Go . Dispone de un nuevo sitio web con documentación y ejemplos, además de un repositorio de código abierto en GitHub .
Descripción general
Claire es un lenguaje de programación de propósito general , ideal para aplicaciones que requieren modelado de datos sofisticado , procesamiento de reglas o resolución de problemas. WebClaire añade extensiones para una integración más completa con el sistema operativo y para la programación de aplicaciones web .
Aunque Claire se puede utilizar para proyectos completos, está diseñada para integrarse sin problemas con C++ , Java o Go .
El conjunto clave de características que distingue a Claire de otros lenguajes de programación ha sido determinado por la experiencia en la resolución de problemas de optimización complejos. Dos características que no se encuentran en otros lenguajes mixtos funcionales/orientados a objetos, como OCaml , Scala y F# , son el control de versiones y las reglas de producción .
Las versiones pueden considerarse como una pila de instantáneas de alguna parte del sistema, cuyo tamaño puede ajustarse según sea necesario, ya sea para mayor expresividad o eficiencia. La creación y reversión de versiones permite el retroceso , similar al de la programación lógica , aunque el retroceso de Claire puede abarcar cualquier estructura definida por el usuario, en lugar de limitarse a un conjunto de variables lógicas.
En Claire, una regla de producción se compone de un evento, una condición y una respuesta que se evalúa si se cumple la condición. Un evento puede ser cualquier cambio en la ranura de un objeto o la instanciación de una clase, y una respuesta puede, a su vez, desencadenar otros eventos. Estas reglas de producción son especialmente útiles para describir algoritmos reactivos, como los de propagación de restricciones .
Claire se creó como sucesor de LAURE, un lenguaje expresivo pero complejo diseñado por Caseau en la década de 1980 que combinaba muchos paradigmas. Claire se concibió para ser más fácil de aprender que su predecesor y para no imponer una sobrecarga de rendimiento con respecto a C++; por lo tanto, es un lenguaje mucho más pequeño, que omite características como restricciones y reglas deductivas , y está más cerca de C en espíritu y sintaxis. Sus principales usuarios en la industria han sido los grupos Bouygues y Thales . La nueva versión Claire 4 aporta mejoras en la fiabilidad (gracias a la solidez de Go como lenguaje subyacente) y en el rendimiento del compilador y el intérprete .
Ejemplo
Una función para calcular el enésimo número de la secuencia de Fibonacci :
fib(n:entero) : entero -> (si (n < 2) 1 de lo contrario fib(n - 1) + fib(n - 2))
Enlaces externos
- Sitio web oficial
- Claire4 en GitHub
- Sitio web específico de Claire4
- Documentación , Claire, WebClaire
- " Introducción al lenguaje de programación Claire, versión 3.2 " por Yves Caseau y François Laburthe
- « Claire: Combinando conjuntos, búsqueda y reglas para expresar mejor los algoritmos », de Yves Caseau, François-Xavier Josset y François Laburthe (2002). Un resumen de 26 páginas, escrito para un público académico, con pruebas comparativas.
- Lenguajes de programación experimentales
- Lenguajes funcionales
- Lenguajes de programación multiparadigma
- Lenguajes de programación orientados a objetos