Ciao (язык программирования) - Ciao (programming language)

Чао
Логотип для языка программирования Ciao.png
ПарадигмаЛогика, функциональный, модульный, объектно-ориентированный
Впервые появился1984; 36 лет назад (1984)
Операционные системыКроссплатформенность (Unix, Mac OS X, Windows )
ЛицензияGPL, LGPL
Интернет сайтwww.ciao-lang.org
Под влиянием
Пролог

Чао универсальный язык программирования который поддерживает логика, ограничение, функциональный, более высокого порядка, и объектно-ориентированного программирования стили. Его основная цели дизайна высокие выразительная сила, расширяемость, безопасность, надежность и эффективное исполнение.[1]

Языковые характеристики

Ciao предоставляет полный Пролог система (поддерживающая ISO -Prolog), декларативные подмножества и расширения Prolog, функциональное программирование (включая ленивая оценка ), высшего порядка (с абстракциями предикатов), программирование в ограничениях, и объекты, а также характеристики (записи), постоянство, несколько правил управления (поиск в ширину, итеративное углубление, ...), параллелизм (потоки / механизмы), распределенное выполнение (агенты) и параллельное выполнение. Библиотеки также поддерживают WWW-программирование, сокеты, внешние интерфейсы (C, Ява, TclTk, реляционные базы данных и т. д.) и т. д.

Ciao построен на ядре с расширяемой модульной конструкцией, которая позволяет как ограничивать, так и расширять язык - его можно рассматривать как язык построения языка. Эти ограничения и расширения можно активировать отдельно для каждого программного модуля, чтобы несколько расширений могли сосуществовать в одном приложении для разных модулей.

Разработка безопасных и надежных программ

Программирование в целом в Ciao поддерживается через:

  • Надежная система модуль / объект. Это обеспечивает раздельную / инкрементную компиляцию на основе модулей (которая выполняется автоматически без необходимости использования файлов makefile).
  • Интегрированный язык утверждений для объявления (необязательных) свойств (спецификаций) программы. К ним относятся типы, режимы, детерминированность, безотказность, стоимость (время, память) и т. Д.
  • Автоматический вывод и статическая / динамическая проверка таких утверждений (включая модульное тестирование).

Ciao также поддерживает программирование в малых масштабах: компилятор может создавать небольшие исполняемые файлы (включая только те, которые встроены в программу), а интерпретатор поддерживает создание сценариев.

В среда включает классический интерфейс верхнего уровня и усовершенствованный интерфейс emacs со встраиваемым отладчиком исходного уровня и рядом инструментов визуализации выполнения.

Препроцессор Ciao поддерживает статическую отладку и проверку, проверку утверждений и оптимизацию через преобразование программ из исходного кода в исходный. Эти задачи выполняет Ciaopp, распространяется отдельно).

Авто-документация

Ciao включает lpdoc, автоматический генератор документации. Он обрабатывает программы, украшенные (Ciao) утверждениями и машиночитаемыми комментариями, и генерирует руководства во многих форматах, включая HTML, pdf, texinfo, info, man и т. Д., А также онлайн-справку, файлы ascii README, записи для указателей руководств (info , WWW, ...) и поддерживает сайты распространения WWW.

Портативность и эффективность

Компилятор Ciao (который может запускаться вне оболочки верхнего уровня) генерирует несколько форм архитектурно-независимых и автономных исполняемых файлов, которые работают со скоростью, эффективностью и размером исполняемого файла, которые очень конкурентоспособны с другими языками высокого уровня в целом и, в частности, с коммерческими. и академический Prolog / CLPsystems. Модули могут быть скомпилированы в компактный байт-код или исходные файлы C и связаны статически, динамически или автоматически загружены.

дальнейшее чтение

  • Мануэль В. Эрменегильдо; и другие. «Обзор Ciao и его философии дизайна». arXiv:1102.5497.
  • Команда разработчиков Ciao. "Дом системы Ciao".
  • Энрико Понтелли (ред.). "Многопарадигмальный язык и среда разработки программ CIAO".
  • Кей Дэвис, Йорг Стригниц. «Мультипарадигмальное программирование на объектно-ориентированных языках: текущий исследовательский отчет семинара MPOOL'07». ECOOP'07 Материалы конференции 2007 г. по объектно-ориентированным технологиям.

Рекомендации

  1. ^ "Система Чао". ciao-lang.org. Получено 2017-08-12.