Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Claire (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Multiple issues| {{Primary sources|date=February 2018}} {{No footnotes|date=December 2019}} }} {{Infobox programming language | name = Claire | paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Functional programming|functional]], [[Object-oriented programming|object-oriented]] ([[Class (computer programming)|class-based]]), [[Production system (computer science)|rule processing]], [[Reflective programming|reflective]] | designer = Yves Caseau | released = {{Start date and age|1994}} | latest release version = 3.3.46 | latest release date = {{Start date and age|2009|02|17}} | typing = [[Strong and weak typing|strong]], both [[static typing|static]] and [[dynamic typing|dynamic]] | operating system = [[Cross-platform]] | license = [[Apache License|Apache]] 2.0 | file ext = <code>.cl</code> | implementations = Claire ([[reference implementation]]), WebClaire | influenced by = [[Smalltalk]], [[SETL]], [[OPS5]], [[Lisp (programming language)|Lisp]], [[ML (programming language)|ML]], [[C (programming language)|C]], LORE, LAURE }} '''Claire''' is a high-level [[Functional programming|functional]] and [[Object-oriented programming|object-oriented]] [[programming language]] with [[Production system (computer science)|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 [[Polymorphism (computer science)#Parametric polymorphism|parametric]] [[Class (computer programming)|classes]] and [[Method (computer programming)|methods]] *[[Polymorphism (computer science)|Polymorphic and parametric]] functional programming *[[Production system (computer science)|Production rules]] triggered by [[event condition action|events]] *Versioned snapshots of the state of the whole system, or any part, supporting [[Rollback (data management)|rollback]] and easy exploration of [[Search algorithm|search spaces]] *Explicit relations between entities; for example, two entities might be declared inverses of one another *[[First-class object|First-class]] [[set (abstract data type)|sets]] with convenient [[Syntax (programming languages)|syntax]] for set-based programming *An expressive set-based type system allowing both [[Higher-order programming|second-order]] [[Static typing|static]] and [[Dynamic typing|dynamic]] typing Claire's [[reference implementation]], consisting of an interpreter and compiler, was fully [[Free and open-source software|open-sourced]] with the release of version 3.3.46 in February 2009. Another implementation, WebClaire, is supported [[Commercial software|commercially]]. Claire has, since 2022, a new reference version, CLAIRE4, which is written on the [[Go (programming language)|Go language]]. It has a [https://sites.google.com/view/claire4/home new website] with documentations and examples, together with a [https://github.com/ycaseau/CLAIRE4 Github] open source repository. ==Overview== 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 application]]s. Though Claire can be used for complete projects, it is designed to integrate smoothly with [[C++]], [[Java (programming language)|Java]], or [[Go (programming language)|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 (programming language)|Scala]] and [[F Sharp (programming language)|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 programming|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 [[Constraint satisfaction|constraints]] and [[Deductive language|deductive]] rules, and is closer to [[C (programming language)|C]] in spirit and syntax. Its main users in industry have been the [[Bouygues]] and [[Thales Group]]s. The new Claire 4 release brings gains in reliability (via Go's strength as underlying language) and in performance of [[compiler]] and [[Interpreter (computing)|interpreter]]. ==Example== A function to compute the ''n''th [[Fibonacci sequence]] number: fib(n:integer) : integer -> (if (n < 2) 1 else fib(n - 1) + fib(n - 2)) ==External links== *{{Official website|claire3.free.fr}} *{{GitHub|ycaseau/CLAIRE4|Claire4}} *[https://sites.google.com/view/claire4/home Claire4-specific website] *[https://web.archive.org/web/20111001163413/http://www.claire-language.com/pub/trunk/xl/doc/claire.index.html Documentation], Claire, WebClaire *"[https://web.archive.org/web/20110607212054/http://www.dcs.gla.ac.uk/~pat/cp4/claire/Claire_3.2.pdf Introduction to the Claire Programming Language Version 3.2]" by Yves Caseau and François Laburthe *"[http://trac.claire-language.com/cgi-bin/trac.cgi/raw-attachment/wiki/Papers/combi_set_search_rules_algo.pdf Claire: Combining Sets, Search and Rules to Better Express Algorithms]{{dead link|date=August 2017 |bot=InternetArchiveBot |fix-attempted=yes}}" by Yves Caseau, François-Xavier Josset and François Laburthe (2002). A 26-page overview, written for academic audience, with benchmarks [[Category:Experimental programming languages]] [[Category:Functional languages]] [[Category:Multi-paradigm programming languages]] [[Category:Object-oriented programming languages]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Dead link
(
edit
)
Template:GitHub
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Multiple issues
(
edit
)
Template:Official website
(
edit
)