XE(ID:2744/xe:001)

Expert Systems CLU 


Variant on CLU for embedded Expert Systems, part of the ExBed project Helsinki University of Technology

Evolution away from the embedding of XC in C++ and incorporating extra features designed to output LISP code for ExBed


Related languages
CLU => XE   Adaptation of
XC => XE   Evolution of

References:
  • Jari Arkko, Juha Kuusela, Esko Nuutila, Markku Tamminen, Vesa Hirvisalo "The ExBed project - some experiences" STeP 88 Symposium Papers view details Abstract: We report on experiences of the ExBed project, specifically on adding a rule based expression mechanism to an existing procedural programming language (C++) and on designing and implementing a self-contained language and (XE) its programming environment supporting similar but more general capabilities.
  • Arkko, J., V. Hirvisalo, J. Kuusela, E. Nuutila and M. Tamminen, XE Reference Manual (XE Version 1.0), 1989. Dept. of Computer Science, Helsinki University of Technology, Helsinki, Finland. view details
  • Hirvisalo, Vesa; Arkko, Jari; Kuusela, Juha; Nuutila, Esko; Tamminen, Markku "XE Design Rationale: Clu revisited" view details Abstract: XE is a programming language designed and implemented at the Helsinki University of Technology by the ExBed project The design of XE is based on the CLU programming language. This paper discusses dierences between the two languages and the design decisions of XE. Extract: Background
    Background
    The XE language [Arkk89] and its programming environment have been developed within the ExBed project, which was established to develop software tools for construction of embedded expert systems. The project needed a general purpose programming language with added facilities for rule-based programming. High level abstraction mechanisms and the possibility for efficient static semantic analysis were considered crucial for the language. The main reason for this was the wish to perform as much verification and optimization as possible at compile time to satisfy the stringent requirements of embedded systems.
    There existed no programming language that satisfied our needs and therefore we decided to design a new programming language. Our first result, XC [Nuut87], was based on C++ [Stro86], and it was implemented using preprosessor techniques. We found out that the C++ approach had several major drawbacks [Arkk88]. Also the preprocessor techniques could not give enough support for building a satisfactory programming environment.
    The CLU language, designed and implemented at MIT [Lisk81], was close to our needs. So, we selected CLU as a basis for the design of XE. Because of the licence policies of CLU and our need for an integrated software development environment we decided to write a proper compiler for the language, not a preprocessor for CLU. We found out that the built-in library of CLU did not fit our needs and that the rule-based expression mechanism of our choice required very basic new facilities. Therefore XE was not designed as a direct extension of CLU.
    The structure of this paper is as follows. Chapter 2 describes the rule abstraction of XE and some language constructs closely related to it. In chapter 3 we discuss the parameterization (generic modules). The type system and built-in types are described in chapter 4. There exists quite a number of other differences between CLU and XE. Some of these features are discussed in chapter 5. The reader is assumed to be familiar with the CLU language.
          in SIGPLAN Notices 24(09) September 1989 view details