The adaptability of Ada as a language for expert systems (abstract only)

There are two trends in the software initiatives of the U. S. Department of Defense which will have direct impact on future software development and which suggest a focus for current basic research in software. These trends are 1) the move toward smart weapons, suggesting the use of Expert Systems to control these weapons, and 2) the directive that all software for embedded computer systems be written in Ada. The research focus suggested by these developments is an analysis of the Ada programming language and its associated programming support environment (APSE) to determine how to design and construct an Expert System for natural implementation in Ada.It is well known that Ada can be used as a language for Expert Systems. There now exist several Expert System Shells written in Ada and more are being developed every day. The issue still open to research is how to do this optimally, making the best use of the expressive power of the language. An absurd example will make this clearer. It is also known that it is possible to write an Expert System in COBOL. Doing such would be a very tedious and error prone task, because the expressive power of the COBOL language is focused on commercial applications.Another possibility for writing an Expert System in Ada would be to take an existing Expert System in LISP and translate the code, line for line into Ada. Admittedly this is a plausible task; this author has done some preliminary investigation in this area. However, it is arguable that such an approach will not result in efficient Ada code, for constructs which are natural to LISP might not translate into constructs natural to Ada.While it is difficult to give a precise definition of an Expert System, it is easy to list characteristics which are usually associated with such a system. This paper presents the results of some preliminary research on the implementation of these features by means of some of the structures in Ada, such as Generic Program Units, Packages and Data Encapsulation, which are typical of the language's rich expressive power and which must form the basis of any natural implementation in Ada of an Expert System.One of the features expected in an Expert System is forward and backward chaining, probably implemented with a version of the Rete algorithm. For this reason, this research included writing several small symbolic pattern matching procedures and testing their performance.This research also investigated the use of Ada packages with encapsulated data types to implement a blackboard structure. It was found that a global data structure and appropriate operators could be implemented. As a side result of this work, the frame construct with attached operators and inheritance mechanisms was implemented.The research reported here also addressed the issue of Object Oriented Programming which has become quite popular in LISP programming. Here the match to Ada is quite natural for the latter language itself is also designed to support the Object Oriented Approach. Several LISP textbook examples were translated to the corresponding Ada structure and manipulated with some test programs.Several directions for future research have been generated as a result of this preliminary work. One open question is how to implement concepts originally developed for a language with late binding, such as LISP, in a language with strong typing such as Ada. Another issue concerns the translation of LISP code into Ada code. Early work suggests that it will be more profitable to view the LISP as a high level specification language for an Ada system rather than a program to be translated with literal fidelity. These and several other projects are being pursued and will be reported out in future papers.