next up previous contents
Next: Highlights of some Implementation Up: LIE TOOLS PACKAGE VERSION Previous: Automatic controller design/synthesis functions   Contents

Implementation Notes

LTP was implemented in Maple 6. Several Computer Algebra Systems (CAS) were evaluated, each showing drawbacks and strengths over Maple. Comparisons and additional references to CAS can be found in [46]. Unlike some of the other available CAS, Maple allows the definition of new operators (through the define command), and to make some assumptions about the properties of the operator. Unlike other symbolic packages that are Lisp based and have inherited some of Lisp's disadvantages, Maple has a syntax similar to that of the C language. Maple also supports both the functional (or applicative) and the imperative (or procedural) programming styles, thus the routines can be implemented and tested faster than with a purely imperative language like C, which furthermore lacks of the appropriate data abstractions. Functional programming languages have some clear advantages over purely procedural languages. This advantages can be summarized in: Imperative programming languages have some strengths too, however it is not the scope of this document to compare programming styles. It suffices to say that, ideally a good programming language should not make it difficult for a programmer to write computationally efficient code while maintaining an adequate level of abstraction that makes the problem easily expressible in terms of the language abstractions. In this sense, Maple collects appealing aspects of each programming style. It is unlikely that traditional imperative languages such as C and Fortran would completely loose the popularity they enjoy, even if the well designed imperative language Java gained acceptance very fast. On the other hand, Lisp and other modern functional languages like ML or Haskell also have their supporters. Whether to choose a purely imperative or a functional language depends mostly on the type of problem at hand and how well a particular language allows a rapid implementation of the solution. Plenty of references and information on computer languages can be found at [51]. A place to start for references on functional programming is [52].

Subsections
next up previous contents
Next: Highlights of some Implementation Up: LIE TOOLS PACKAGE VERSION Previous: Automatic controller design/synthesis functions   Contents
Miguel Attilio Torres-Torriti 2004-05-31