Клэр: Функциональный и объектно-ориентированный язык программирования с возможностями обработки правил.
Claire (programming language)
Claire: функциональный язык программирования с объектно-ориентированными возможностями и системой правил. Open source, CLAIRE4 на Go. Разработка с 2004.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Клэр — это высокоуровневый функциональный и объектно-ориентированный язык программирования с возможностями обработки правил. Он был разработан Ивом Казо в исследовательской лаборатории Bouygues' e Lab и получил окончательное определение в 2004 году. Клэр предоставляет:
Простую объектную систему с параметрическими классами и методами.
Полиморфное и параметрическое функциональное программирование.
Правила производства, активируемые событиями.
Версионные снимки состояния всей системы или любой её части, поддерживающие откат и удобное исследование пространств поиска.
Явные связи между сущностями; например, две сущности могут быть объявлены обратными друг другу.
Множества первого класса с удобным синтаксисом для программирования, основанного на множествах.
Выразительная типовая система, основанная на множествах, позволяющая как статическую, так и динамическую типизацию второго порядка.
Claire is a high level functional and object oriented programming language with rule processing abilities. It was designed by Yves Caseau at Bouygues' e Lab research laboratory, and received its final definition in 2004. Claire provides:
A simple object system with parametric classes and methods
Polymorphic and parametric functional programming
Production rules triggered by events
Versioned snapshots of the state of the whole system, or any part, supporting rollback and easy exploration of search spaces
Explicit relations between entities; for example, two entities might be declared inverses of one another
First class sets with convenient syntax for set based programming
An expressive set based type system allowing both second order static and dynamic typing
Эталонная реализация Клэр, состоящая из интерпретатора и компилятора, была полностью опубликована с открытым исходным кодом с выпуском версии 3.3.46 в феврале 2009 года. Другая реализация, WebClaire, имеет коммерческую поддержку. С 2022 года у Клэр появилась новая эталонная версия, CLAIRE4, написанная на языке программирования Go. Она имеет новый веб-сайт с документацией и примерами, а также открытый репозиторий на Github.
Claire's reference implementation, consisting of an interpreter and compiler, was fully open sourced with the release of version 3.3.46 in February 2009. Another implementation, WebClaire, is commercially supported. Claire has, since 2022, a new reference version, CLAIRE4, which is written on top of the Go programming language. It has a new website with documentations and examples, together with a Github open source repository.
Обзор
Claire – это язык программирования общего назначения, лучше всего подходящий для прикладного программного обеспечения, требующего сложного моделирования данных, обработки правил или решения задач. WebClaire добавляет расширения для более полной интеграции с операционной системой и для программирования веб-приложений. Хотя Claire можно использовать для полноценных проектов, он разработан для плавной интеграции с C++, Java или Go. Ключевой набор функций, отличающий Claire от других языков программирования, был обусловлен опытом решения сложных задач оптимизации. Две особенности, не встречающиеся в других смешанных функционально-объектно-ориентированных языках, таких как OCaml, Scala и F#, – это версионность и производственные правила. Версии можно рассматривать как стек снимков некоторой части системы, которые могут быть сделаны настолько большими (для выразительности) или маленькими (для эффективности), насколько это необходимо. Создание и откат версий обеспечивают возможность отслеживания, как в логическом программировании, хотя отслеживание в Claire может охватывать любую структуру, определяемую пользователем, а не только набор логических переменных. Производственное правило в Claire состоит из события, условия и ответа, который оценивается при выполнении условия. Событием может быть любое изменение слота объекта или инстанцирование класса, а ответ может сам запускать дальнейшие события. Такие производственные правила особенно полезны для описания реактивных алгоритмов, например, алгоритмов распространения ограничений. Claire был создан как преемник LAURE, выразительного, но сложного языка, разработанного Caseau в 1980-х годах, объединявшего множество парадигм. Claire должен был быть проще в изучении, чем его предшественник, и не создавать накладных расходов на производительность по сравнению с C++; таким образом, это гораздо более компактный язык, в котором отсутствуют такие функции, как ограничения и дедуктивные правила, и он ближе к C по духу и синтаксису. Его основными пользователями в промышленности являются группы Bouygues и Thales. Новый релиз CLAIRE 4 обеспечивает новый уровень надежности, заимствуя сильные стороны Go в качестве базового языка, а также улучшенную производительность как компилятора, так и интерпретатора.
Claire is a general purpose programming language, best suited to application software requiring sophisticated data modeling, rule processing or problem solving. WebClaire adds extensions for fuller integration with the operating system and for programming web applications. Though Claire can be used for complete projects, it is designed to integrate smoothly with C++, Java or Go. The key set of features that distinguishes Claire from other programming languages has been dictated by experience in solving complex optimization problems. Two features not found in other mixed functional/object oriented languages, such as OCaml, Scala and F#, are versioning and production rules. Versions can be viewed as a stack of snapshots of some part of the system, which can be made as large (for expressiveness) or small (for efficiency) as necessary. Creation and roll back of versions permit backtracking, as found in logic programming, though Claire's backtracking may cover any user defined structure rather than just a set of logic variables. A production rule in Claire is composed of an event, a condition and a response to be evaluated if the condition is satisfied. An event may be any change in an object's slot or the instantiation of a class, and a response may itself set off further events. Such production rules are especially useful in describing reactive algorithms, such as those for constraint propagation. Claire was created as a successor to LAURE, an expressive but complex language designed by Caseau in the 1980s that combined many paradigms. Claire was intended to be both easier to learn than its predecessor and to impose no performance overhead relative to C++; it is thus a much smaller language, omitting features such as constraints and deductive rules, and is closer to C in spirit and syntax. Its main users in industry have been the Bouygues and Thales groups. The new CLAIRE 4 release bring both a new level of reliability borrowing of Go's strength as the underlying language, and improved performance both for the compiler and interpreter.