CLAIRE: a brief overview

For the last 10 years, we have been experimenting with the use of a hybrid objectoriented language, LAURETM1, to solve “advanced” industrial problems (that require some form of reasoning or constraint solving) [Ca91]. This approach was successful in the sense that we were able to solve complex problems in a better way than previous approaches [Ca94]. However, we failed short of our initial goal of simplicity (using an executable program as its own description). First, the syntax of the language was overly verbose and non-standard (this is due mostly to reflection, which provides the ability to redefine virtually everything). Second, the richness of the language was another burden on the learning curve. (we found that many “exciting” features were not really used, mostly because their behavior was too difficult to grasp for the average user2). This failure to deliver “simple” code resulted in a more difficult reuse of fragments that were shared among applications, such as search strategies.