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.
[1]
Yves Caseau.
Efficient handling of multiple inheritance hierarchies
,
1993,
OOPSLA '93.
[2]
Shamim A. Naqvi,et al.
A Logical Language for Data and Knowledge Bases
,
1989
.
[3]
Giuseppe Castagna,et al.
Covariance and contravariance: conflict without a cause
,
1995,
TOPL.
[4]
François Laburthe,et al.
Improving Branch and Bound for Jobshop Scheduling with Constraint Propagation
,
1995,
Combinatorics and Computer Science.
[5]
Gary T. Leavens,et al.
Typechecking and modules for multi-methods
,
1994,
OOPSLA 1994.
[6]
Yves Caseau.
An O-O Language for Advanced Applications
,
1991,
TOOLS.