Ciao es un lenguaje de programación de propósito general que admite estilos de programación lógicos , de restricción , funcionales , de orden superior y orientados a objetos . Sus principales objetivos de diseño son alto poder expresivo , extensibilidad , seguridad, confiabilidad y ejecución eficiente. [1]
Paradigma | Lógica , funcional , modular , orientada a objetos |
---|---|
Apareció por primera vez | 1984 |
SO | Multiplataforma ( Unix , Mac OS X , Windows ) |
Licencia | GPL , LGPL |
Sitio web | www |
Influenciado por | |
Prólogo |
Características del lenguaje
Ciao proporciona un sistema Prolog completo (compatible con ISO- Prolog), subconjuntos declarativos y extensiones de Prolog, programación funcional (incluida la evaluación diferida ), orden superior (con abstracciones de predicados), programación de restricciones y objetos , así como términos de características (registros ), persistencia, varias reglas de control ( búsqueda en amplitud , profundización iterativa, ...), concurrencia (hilos / motores), ejecución distribuida (agentes) y ejecución paralela. Las bibliotecas también admiten programación WWW, sockets, interfaces externas ( C , Java , TclTk , bases de datos relacionales , etc.), etc.
Ciao está construido sobre un kernel con un diseño modular extensible que permite tanto restringir como extender el lenguaje; puede verse como un lenguaje de construcción de lenguaje. Estas restricciones y extensiones se pueden activar por separado en cada módulo de programa para que varias extensiones puedan coexistir en la misma aplicación para diferentes módulos.
Desarrollar programas seguros y confiables
La programación en grande en Ciao se admite a través de:
- Un sistema robusto de módulos / objetos. Esto proporciona una compilación incremental / separada basada en módulos (que es automática sin necesidad de archivos MAKE).
- Un lenguaje de aserción integrado para declarar (opcional) propiedades (especificaciones) del programa. Estos incluyen tipos, modos, determinación, no falla, costo (tiempo, memoria), etc.
- Inferencia automática y verificación estática / dinámica de dichas afirmaciones (incluidas las pruebas unitarias).
Ciao también tiene soporte para la programación en pequeño: el compilador es capaz de producir pequeños ejecutables (incluyendo solo aquellos incorporados usados por el programa) y el intérprete soporta scripts.
El entorno incluye una interfaz emacs de nivel superior clásica y una evolucionada con un depurador de nivel de fuente integrable y una serie de herramientas de visualización de ejecución.
El preprocesador Ciao admite depuración estática y verificación y optimización de aserciones de verificación a través de la transformación del programa fuente a fuente. Estas tareas las realiza Ciaopp, distribuidas por separado).
Documentación automática
Ciao incluye lpdoc, un generador automático de documentación. Procesa programas adornados con afirmaciones (Ciao) y comentarios legibles por máquina y genera manuales en muchos formatos, incluidos HTML, pdf, texinfo, info, man, etc., así como ayuda en línea, archivos ASCII README, entradas para índices de manuales (info, WWW, ...) y mantiene sitios de distribución WWW.
Portabilidad y eficiencia
El compilador Ciao (que se puede ejecutar fuera del shell de nivel superior) genera varias formas de ejecutables independientes de la arquitectura e independientes, que se ejecutan con velocidad, eficiencia y tamaño ejecutable que son muy competitivos con otros lenguajes de alto nivel en general y en en particular con sistemas Prolog / CLP comerciales y académicos. Los módulos se pueden compilar en códigos de bytes compactos o archivos fuente C, y se pueden vincular estáticamente, dinámicamente o cargarse automáticamente.
Otras lecturas
- Manuel V. Hermenegildo; et al. (2011). "Una visión general de Ciao y su filosofía de diseño". arXiv : 1102.5497 [ cs.PL ].
- El equipo de desarrollo de Ciao. "La casa del sistema Ciao" .
- Enrico Pontelli (ed.). "El lenguaje CIAO Multiparadigm y el entorno de desarrollo de programas" .
- Kei Davis, Jörg Striegnitz. "Programación multiparadigma en lenguajes orientados a objetos: informe de investigación actual sobre el taller MPOOL'07" . ECOOP'07 Actas de la conferencia de 2007 sobre tecnología orientada a objetos.
Referencias
- ^ "El Sistema Ciao" . ciao-lang.org . Consultado el 12 de agosto de 2017 .