Jump to a question:
CLAIRE is designed to explore complex optimisation algorithm, on the edge of combinatorial optimisation, stochastic programming, constraint-based programming and rule-based programming.
After more than 40 years of programming, I am an unconditional fan of the REPL (Read - Eval - Print Loop). The productivity gain is still not matched by most modern IDE.
Although JIT (just in time) works better and better with modern computers, there is still a performance advantage for fully compiled languages (such as C, C++, Java or Go)
CLAIRE was derived from a combinatorial optimisation algorithmic specification language. Its main goal is to be a language that can both be used to teach and to write algorithms
CLAIRE achieves the combination of high-level expressiveness and low-level efficiency through source code transformation. After 30 years of C++, I switched to Go to improve the robustness (leaving memory management to Go) while maintaining a high level of performance, for the compile AND for the interpreter. Go was selected after studying a large set of alternatives because of its ability to implement the dynamic evaluation loop of an interpreter with the same level of efficiency as the best modern interpreters, such as Python.
CLAIRE favours readability for non computer practitioners, hence it follows more general principles:
Equality is =, Assignment is :=.
variables are explicitly declared with let, as in let x := 1 in (x + 3)
arrays, list are indexed from 1 to n (where n is the length of the array / list)
Set membership is %, which is ugly (and conflict with the common usage of % for modulo) but will move to €, which looks more like the mathematical symbol for membership (∈)