An overview of ciao and its design philosophy

Hermenegildo, Manuel V.; Bueno Carrillo, Francisco; Carro Liñares, Manuel; López García, Pedro; Mera, E.; Morales Caballero, José Francisco y Puebla Sánchez, Alvaro Germán (2010). An overview of ciao and its design philosophy. Monografía (Informe Técnico). Facultad de Informática (UPM) [antigua denominación], Madrid, Spain.


Título: An overview of ciao and its design philosophy
  • Hermenegildo, Manuel V.
  • Bueno Carrillo, Francisco
  • Carro Liñares, Manuel
  • López García, Pedro
  • Mera, E.
  • Morales Caballero, José Francisco
  • Puebla Sánchez, Alvaro Germán
Tipo de Documento: Monográfico (Informes, Documentos de trabajo, etc.) (Informe Técnico)
Fecha: Marzo 2010
Palabras Clave Informales: Prolog, logic programming system, assertions, verification, extensible languages, sistemas de programación lógica, afirmaciones, Verificación, Lenguajes extensibles.
Escuela: Facultad de Informática (UPM) [antigua denominación]
Departamento: Inteligencia Artificial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (2MB) | Vista Previa


We provide an overall description of the Ciao multiparadigm programming system emphasizing some of the novel aspects and motivations behind its design and implementation. An important aspect of Ciao is that, in addition to supporting logic programming (and, in particular, Prolog), it provides the programmer with a large number of useful features from different programming paradigms and styles and that the use of each of these features (including those of Prolog) can be turned on and off at will for each program module. Thus, a given module may be using, e.g., higher order functions and constraints, while another module may be using assignment, predicates, Prolog meta-programming, and concurrency. Furthermore, the language is designed to be extensible in a simple and modular way. Another important aspect of Ciao is its programming environment, which provides a powerful preprocessor (with an associated assertion language) capable of statically finding non-trivial bugs, verifying that programs comply with specifications, and performing many types of optimizations (including automatic parallelization). Such optimizations produce code that is highly competitive with other dynamic languages or, with the (experimental) optimizing compiler, even that of static languages, all while retaining the flexibility and interactive development of a dynamic language. This compilation architecture supports modularity and separate compilation throughout. The environment also includes a powerful autodocumenter and a unit testing framework, both closely integrated with the assertion system. The paper provides an informal overview of the language and program development environment. It aims at illustrating the design philosophy rather than at being exhaustive, which would be impossible in a single journal paper, pointing instead to previous Ciao literature.

Más información

ID de Registro: 14688
Identificador DC:
Identificador OAI:
URL Oficial:
Depositado por: Biblioteca Facultad de Informatica
Depositado el: 25 Mar 2013 08:53
Ultima Modificación: 21 Abr 2016 14:27
  • GEO_UP4
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • InvestigaM
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM