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.
|