Languages in general can have some syntax rules to define correct sentences. For a language to be useful, the space of its member sentences must be large enough to describe the target objects or concepts
For the proceeding discussion’s sake, not the scholarity one for which the present white paper has no intension to get into, let’s take the duality point of view that the syntax of a language is a knowledge encoder that condenses certain set of pre-existing and general knowledge into rules for constructing correct sentences in the language and for eliminating the rest ones, which are much large in number, as nonsenses, noises or errors. Natural languages are evolved to be large enough to describe all human affairs. They became so large that only what E. Kant called a priori knowledge of human being (some philosophers call them “justified true beliefs that are independent of existence”) are encode into the syntax when formalized. In this point of view, syntax encoded knowledge function as rules, axioms or beliefs rather than reflecting certain material facts, since any material fact has to be describable by them.
Computer languages are of at least two kinds: one is general language type and the other is domain specific language type.
Since general computer language must describe how to control the operation of a Turing Machine. A Turing machine is an abstract machine but it is physically realizable. So sentences in a general computer language produced by a human are restricted by above mentioned a priori knowledge and the fact that they have also be understood by a Turing Machine. Therefore knowledge of how a Turing Machine works is encoded into a general computer language.
Domain specific languages (DSL) are used to describe specific targets inside a specific knowledge domain which are known well enough to have its context boundary clearly and formally defined. They have more knowledge build-in as rules, which were gained in the domain context knowledge acquisition processes that were already done. Sentences that are otherwise correct in general by do not refer to domain targets or are against established domain knowledge are treated as none-sense, noises or errors. From this point of view, it can be seen that domain languages can have hierarchies from the more general one to more specific ones, starting from general languages are roots. DSL with interpreter or compiler implemented can simplify the programming task significantly because of the reduction in information input required from a user since information derived from domain knowledge has already been assumed to be true.
DSL are used widely in software application, including but not limited to: graphic scripting languages for controlling the plot of graph or figures, like Graphviz, gnuplot; HTML document model manipulation script java-script; relational data query language SQL; MATLAB for technical computing, etc..
What have all these to do with the present white paper? You may ask. A lot is the answer.