Ciao及其设计理念概述
An overview of Ciao and its design philosophy
摘要:
我们提供了一个全面的描述Ciao多范式编程系统,强调其设计和实现背后的一些新的方面和动机。Ciao的一个重要方面是,除了支持逻辑编程(特别是Prolog)之外,它还为程序员提供了大量来自不同编程范式和风格的有用功能,并且每个程序模块都可以随意打开和关闭这些功能(包括Prolog的功能)。因此,给定模块可以使用例如,高阶函数和约束,而另一个模块可能使用赋值、谓词、Prolog元编程和并发。此外,该语言被设计为以简单和模块化的方式进行扩展。Ciao的另一个重要方面是它的编程环境,它提供了一个强大的预处理器(带有相关的断言语言),能够静态地发现非平凡的bug,验证程序是否符合规范,并执行许多类型的优化(包括自动并行化)。此类优化产生的代码与其他动态语言或(实验性)优化编译器甚至静态语言具有高度竞争力,同时保留动态语言的灵活性和交互式开发。这种编译体系结构支持模块化和独立编译。该环境还包括一个功能强大的自动文档管理器和一个单元测试框架,两者都与断言系统紧密集成。本文提供了语言和程序开发环境的非正式概述。它旨在说明设计哲学,而不是详尽无遗,这在一篇期刊论文中是不可能的,而是指向以前的Ciao文献。
英文摘要:
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 auto-documenter 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.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。