LISA

Language

Component

Architecture

Architectural Patterns

Notation

Implementation

References

Examples

FAQ

The Author


Programming Language

A Programming Language is a Domain Language in the domain of Language construction.

A good Programming Language is easy to extend with a new Language. It is easy to use it to implement other Languages. By this I do not only mean the construction of compilers and interpreters, even if that is an important part. What I mean is the construction of new Languages within the primary, with the same syntax and extended semantics.

There are a number of mechanisms that is extra useful when working with the construction of new Languages. Two are namespaces and polymorphism. Programming Language research should focus on creating new mechanisms that are useful for Language construction.

A Programming Language is good if it is self aware. By this I mean that it can manipulate its own construction. This aids in the construction of new Languages. Examples are Lisp, where the program is a list itself, and Java where Class is a class that can dynamically manipulate other classes.

Historically, functional and object-oriented Languages have prooven to be good for writing new Languages in. Procedural Languages have failed in this respect, as they focus too much on execution structure, which is mostly irrelevant when constructing Languages.

C, a procedural language, is a Domain Language for manipulating hardware resources. This language is popular because it suits the domain very well. It is also possible to construct new Languages in it, even though it is not particularly easy. C should be used when appropriate.

FORTRAN is another successful Language in its domain, mathematical algorithms.

Related Topics
Architecture
LISA

Copyright (C) 2003, Marcus Andersson