Comparing artificial language and natural language it is very helpful to our understanding of semantics of programming languages since programming languages are artificial. We can see much similarity between these two kinds of languages:
Despite these similarities, the difference between the studies of natural and artificial language is profound. First of all, natural language existed for thousands of years, nobody knows who designed the language; but artificial languages are synthesized by logicians and computer scientists to meet some specific design criteria. Thus, `` the most basic characteritic of the distinction is the fact that an artificial language can be fully circumscribed and studied in its entirety.''
We already have developed a mature system for SYNTAX. In 1950's, linguist Chomsky first proposed formal language theory for English, thus came up with Formal Language Theory, Grammar, Regular Grammar, CFG etc. The ``first'' application of this theory was to define syntax for Algol and to build parser for it. The landmarks in the development of formal language theory are: Knuth's parser, and YACC-which is a successful and ``final''application of formal language theory. We also understand the relationship between the Chomsky Hierachy and Machines to generate the corresponding languages:
It is very important to separate ``syntax'' and ``semantics''. Research on Semantics started in 1970's. Like Formal Language Theory, we'd like to have Formal Semantics. Right now we have definitions of Transitional Semantics, Natural Semantics, Structural and Operational Semantics. But we don't know which one is the most powerful definition. You may ask: where are we now? How far have we moved? what would be the landmarks? If the system of semantics were parallel to that of syntax, we can have a picture as following. We'll see later that SML( using SoS Semantics) is one landmark.
( Nothing is implied by the correspondence between columns! )