{"id":13608790,"url":"https://github.com/ycaseau/CLAIRE4","last_synced_at":"2025-04-12T17:33:02.958Z","repository":{"id":45083079,"uuid":"273848201","full_name":"ycaseau/CLAIRE4","owner":"ycaseau","description":"CLAIRE programming language Version 4 (2021)","archived":false,"fork":false,"pushed_at":"2025-03-29T06:24:10.000Z","size":29067,"stargazers_count":16,"open_issues_count":2,"forks_count":7,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-29T07:23:58.344Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ycaseau.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-21T06:29:24.000Z","updated_at":"2025-03-29T06:24:15.000Z","dependencies_parsed_at":"2023-02-12T14:46:25.582Z","dependency_job_id":"de1c9133-9625-42a9-bced-74f8db5fedfd","html_url":"https://github.com/ycaseau/CLAIRE4","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ycaseau%2FCLAIRE4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ycaseau%2FCLAIRE4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ycaseau%2FCLAIRE4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ycaseau%2FCLAIRE4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ycaseau","download_url":"https://codeload.github.com/ycaseau/CLAIRE4/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248605365,"owners_count":21132159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T19:01:29.969Z","updated_at":"2025-04-12T17:32:57.948Z","avatar_url":"https://github.com/ycaseau.png","language":"Go","readme":"+-----------------------------------------------------------------------------------------------------+\n|   CLAIRE4                                                                                           |\n|   README                                                                                            |\n|   version 4.0.7 - 1/22/2023                                                                         |\n+-----------------------------------------------------------------------------------------------------+\n\n\n1. Content\n==========\n\n\nThis repository contains the code for CLAIRE4, the new release of the CLAIRE programming language based on Go.\nhttps://en.wikipedia.org/wiki/Claire_(programming_language)\n\n\nCLAIRE is 28 years old, but CLAIRE 4.0 started in September 2020.\nThe current version is in alpha-status. Beta status is expected this summer of 2022\n\nCLAIRE4 now has its own Web site: https://sites.google.com/view/claire4/home\n\n2. Organization\n===============\n\n\nThe root of this repository contains\n- this README\n- an InstallationGuide\n- an init.cl file that you may customize to run some of the test files\n\n\nThis repository has the following directories\n\n- meta:     the reflexive definition of the interpreter (CLAIRE in CLAIRE)\n- compile:  the relexive definition of the compiler (CLAIRE files)\n- src:      Go code for building CLAIRE\n\n      - all subdirectories but Kernel are generated by the CLAIRE compiler\n      - Kernel contains the go source code for \"microCLAIRE\" : the core of the interpreter\n\n- test:    test files for CLAIRE\n\n       - perf :     a few performance benchmarks\n       - nonreg:    old test files accumulated over the years to avoid regressions\n       - rules:     classical rule-based examples\n\n- docs : a few related documents about CLAIRE including the CLAIRE user guide and two old presentation about CLAIRE.\n\n\n3. Terms of use\n===============\n\n\nCLAIRE has been built by a team as an open-source project: you are free to use and redistribute the code that is found in the GitHub directory\nDISCLAIMER: THE CLAIRE SOFTWARE IS PROVIDED AS IS AND WITHOUT ANY WARRANTY, INCLUDING, WITHOUT LIMITATION,\nTHE IMPLIED WARRANTIES OF MERCHANTABILTY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n\n4. Why Claire ?\n===============\n\nThe two presentations in the /docs directory will tell you more, but here is a short overview.\n\n4.1 Why yet another language ?\n------------------------------\n\n4.1.1 CLAIRE is a functional object-oriented language\n- CLAIRE is a full-fledged object-oriented language that inherits from SMALLTALK.\n- CLAIRE is a functional language that inherits from LISP. Functional languages have regained popularity in the last 10 years, so\n- CLAIRE inherits from CECILE - a specification language from the early 90s - with the aim of concision and preciseness. CLAIRE offers a higher level of abstraction than most object-oriented language\n\n4.1.2 CLAIRE is both statically \u0026 dynamically typed with a rich type system\n- CLAIRE is a fully polymorphic languages where methods may be overloaded in multiple ways, extending traditional single-inheritance class polymorphism\n- CLAIRE is dynamically typed for fast prototyping and more expressive power  …A very large part of CLAIRE code fragments can be statically typed …\n- CLAIRE supports second-order types\n\n4.1.3 CLAIRE includes a number of features that makes it easier to write complex algorithms\n- Set-based programming. This was more original 30 years ago than it is now, but sets and set-based expressions are first-class citizen of the CLAIRE language\n- Rule-based programming. Although “production rules” have lost their appeal,\n- Search tree primitives : CLAIRE provides “hypothetical reasoning”, that is the ability to create choice points and backtrack to a previous state.\n\n\n4.2 Claire vs other interpreted language\n---------------------------------------\n\n4.2.1 Fast interpreter\nCLAIRE4 is much faster than the previous CLAIRE 3.5 version. CLAIRE is now faster than Python (on average, based on a the set of performance benchmark that is included on GitHub)\nThe included Excel files gives an overview of the performance tests that are included in test/perf\nThis is ongoing work, the performance will stabilize once CLAIRE 4.0 reaches the beta status.\n\n4.2.2 Fast compiler\nCLAIRE 4.0 is also MUCH faster than CLAIRE 3.5 as a compiler.\nBased on the preliminary results, CLAIRE is approximately twice slower than Go, C++ or Java, based on a weighted distribution of the performance benchmarks.\n\n4.2.3 CLAIRE is a hybrid interpreted/compiled language: thanks to the reflective nature of CLAIRE (everything is reflexively described and is inspectable as such),\n\n4.3 Claire vs Go\n----------------\n\n4.3.1 CLAIRE has interesting features that are missing from GO\n- CLAIRE is interpreted \n- it supports \"true\" object-oriented programming\n- it provides Full polymorphism\n- Exception handling\n\n4.3.2 microCLAIRE (the Go Kernel) has its own merit for anyone who plans to write an interpreter:\n- Fast reflective addition to objects and functions (much faster than the mechanism provided by Go)\n- Generic set objects (something that should be improved in the future when comparing with Java)\n- Fast buffered character I/O\n\n\n\n\n\n\n\n\n\n","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fycaseau%2FCLAIRE4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fycaseau%2FCLAIRE4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fycaseau%2FCLAIRE4/lists"}