XPS Documentation

Goals

As you may have already guessed, the XPS is targeted at addressing some important issues in software development. To clarify the intent of XPS, we list its main goals:

  • Raise the level of language abstraction to make program writing easier by providing a fundamental core programming language (XPL) and supporting extensions in the form of new XML-based programming languages that are translated to XPL and then reduced to executable code.
  • Allow programmers to specify programs using a language that is specific to the field or domain to which the program is applied. For example, chemists should be able to write programs in a language that intrinsically understands their primary information source: Chemical Markup Language (CML). The chemistry programming language would support processing of CML documents and provide operations on them that are of interest to chemists (e.g. Reactions between molecules). XPS should support the creation of such programming languages in any knowledge domain or field. Allow one programming language to be derived from another so that the cost of new language development is only an increment over what is currently specified in existing language extensions or the core language, XPL.
  • Support multiple styles and semantics of programming such as functional, object-oriented, declarative logical, fuzzy logic, etc.
  • Ensure XPS programs can be executed on a wide variety of platforms by making a clear distinction between the program specification, an abstract virtual machine upon which it can run, and the implementation(s) of that virtual machine.
  • Ensure that programs conform to a variety of international standards so that they can be freely exchanged and processed by systems other than XPS. Specifically, this involves the use of Unicode, XML, and related XML standards (XML Schema, XML Namespaces, XPath, XSL for Transformations, etc.).
  • Liberate the software through the use of open source licenses.
  • Base the implementation of the XPS on existing, freely available components.
  • Provide a comprehensive programming language, XPL, that is based on XML standards so that programs can be easily: executed, transformed, processed as documents, etc.
  • Provide a machine independent software layer that will allow XPL programs to run on any hardware or operating system.
  • Ensure that XPS is highly extensible and supports the tenets of domain engineering and meta-programming. XPS must provide everything a domain engineer would need so that XPL can be used as the basis for higher-order languages that professionals in the given doomain could successfully build high-quality, robust applications without being experts in software or computer science.
    For example, a chemist armed with knowledge of CML (for describing molecular structures) and with a suitable extension for programming CML based on XPL, should be able to easily construct programs to visualize, reason about, or otherwise process molecular structures.
  • Abstract away the details of memory management, input/output, synchronization, parallel programming, machine limitations, transactions, databases, distributed messaging, high quality user interfaces, and other fundamental services by endowing the programming language with declarative features for each of these (i.e. you state what, not how).
  • Support internationalized software development. While the core XPL tags will be based in english for uniformity and faster translation, the fact that XPL is based on XML means that XSLT could be used to write XPL in foreign languages and that any UniCode character can be used for program identifiers. The goal is to provide the first programming language that is open to all natural languages.
  • Utilize existing high-quality Open Source software in the core of XPS. This will significantly reduce the effort required to build XPS and avoid re-inventing things already satisfactorily developed. For example, it has already been determined that Unicode processing will be handled by ICU, communications and machine abstraction will be handled by ACE, XML processing will behandled by Xerces, 3d graphics will be handled by CrystalSpace, etc. Other packages will be used as required.
  • Provide a comprehensive platform for software development and deployment. Services for managing and building software (for example, those provided by ant, gmake, and CVS) will be incorporated directly into XPS. The system must also support multiple users and multiple workspaces, promotion of software from development to staging to production environments, runtime monitoring and configuration, etc.

Additionally, XPS seeks to resolve the following issues in programming sysems:

  • New programming languages will continue to be developed because the needs keep changing.
  • The growing diversity of languages will continue to breed incompatibilities between languages and their runtime environments.
  • There appears to be a need to specify programs at higher and higher levels of abstraction so that complex programs can be specified succinctly and tersely and in a language suitable for the domain from which the need for the program arose.
  • A variety of incompatible language syntactic styles, programming semantics, and runtime environments diminish our ability to integrate, combine, and reuse programs efficiently.
  • Much of the nuts and bolts of programming languages is redundant.
  • To combine languages in one program you must either physically separate them (e.g. In separate processes) or deal with the complexity of supporting multiple compilers, linkers, and runtime conventions.
  • Learning multiple languages with significantly different syntactical styles is difficult.
  • Runtime incompatibility (e.g. accessing FORTRAN common block from Smalltalk) may make some integrations impossible.