Кіріспе
Клэр – ережелерді өңдеу мүмкіндігі бар жоғары деңгейдегі функционалдық және объектіге бағытталған бағдарламалау тілі. Оны Ив Казо Bouygues' e Lab зерттеу зертханасында жасады және 2004 жылы соңғы нұсқасы анықталды. Клэр келесі мүмкіндіктерді ұсынады:
Параметрлік сыныптар мен әдістері бар қарапайым объектілік жүйе
Көп түрлі және параметрлік функционалдық бағдарламалау
Оқиғалармен іске қосылатын өндіріс ережелері
Жүйенің толық күйінің немесе кез келген бөлігінің нұсқалық көшірмелері, кері қайтаруды және іздеу кеңістіктерін оңай зерттеуді қолдайды
Объектілер арасындағы нақты қатынастар; мысалы, екі объекті бір-біріне кері деп жариялануы мүмкін
Жиынға негізделген бағдарламалау үшін ыңғайлы синтаксиспен бірінші дәрежелі жиындар
Екінші реттік статикалық және динамикалық теруді қолдауға мүмкіндік беретін жиынға негізделген экспрессивті типтік жүйе
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
Клэрдің анықтамалық іске асырылуы, интерпретатор мен компилятордан тұрады, 2009 жылдың ақпанында 3.3.46 нұсқасы шыққан кезде толығымен ашық кодқа айналдырылды. Тағы бір іске асырылу, WebClaire, коммерциялық қолдауға ие. Клэр 2022 жылдан бері Go бағдарламалау тілінде жазылған CLAIRE4 жаңа нұсқасын ұсынады. Оның құжаттама мен мысалдар бар жаңа веб-сайты және Github ашық кодты репозиторийі бар.
Шолу
Клэр – күрделі деректерді модельдеуді, ережелерді өңдеуді немесе мәселелерді шешуді қажет ететін қолданбалы бағдарламалық жасақтамаларға ең қолайлы жалпы мақсаттағы бағдарламалау тілі. WebClaire операциялық жүйемен толық интеграция және веб-қосымшаларды бағдарламалау үшін кеңейтімдерді қосады. Клэрді толық жобалар үшін қолдануға болғанымен, ол C++, Java немесе Go-мен үйлесімді біріктіруге арналған. Клэрді басқа бағдарламалау тілдерінен ерекшелейтін негізгі мүмкіндіктер күрделі оптимизациялық мәселелерді шешу тәжірибесімен анықталған. OCaml, Scala және F# сияқты басқа аралас функционалдық/объектіге бағытталған тілдерде кездеспейтін екі мүмкіндік – нұсқалар мен өндіріс ережелері. Нұсқалар жүйенің белгілі бір бөлігінің көшірмелерінің жиынтығы ретінде қарастырылады, оларды қажеттікке қарай үлкен (көрсету үшін) немесе кішкентай (тиімділік үшін) етіп жасауға болады. Нұсқаларды жасау және кері қайтару логикалық бағдарламалаудағы кері іздеуге мүмкіндік береді, бірақ Клэрдің кері іздеуі тек логикалық айнымалылар жиынтығымен ғана емес, кез келген пайдаланушы анықтаған құрылыммен де жұмыс істей алады. Клэрдегі өндіріс ережесі оқиғадан, шарттан және шарт орындалған жағдайда бағаланатын жауаптан тұрады. Оқиға – объектінің ұясының кез келген өзгеруі немесе кластың құрылуы болуы мүмкін, ал жауаптың өзі қосымша оқиғаларды тудыруы мүмкін. Мұндай өндіріс ережелері, әсіресе, реактивті алгоритмдерді сипаттауда, мысалы, шектеулерді тарату алгоритмдерінде өте пайдалы. Клэр, 1980-ші жылдары Казо жасаған, көптеген парадигмаларды біріктірген, көрнекті, бірақ күрделі LAURE тілінің жалғасы ретінде құрылды. Клэр алдыңғы нұсқасына қарағанда оңай оқытылатын және C++-қа қарағанда ешқандай өнімділік кемшілігін тудырмайтын болуы тиіс; сондықтан ол C-ге жақын рухани және синтаксистік тұрғыдан қарағанда кішкентай тіл, шектеулер мен дедуктивті ережелер сияқты мүмкіндіктерді қысқартады. Өнеркәсіптегі негізгі қолданушылары Bouygues және Thales топтары. Жаңа CLAIRE 4 нұсқасы негізгі тіл ретінде Go-ның күшін пайдалана отырып, сенімділіктің жаңа деңгейін және компилятор мен интерпретатордың өнімділігін арттырады.