Language-Oriented Programming

Martin P. Ward. Language-Oriented Programming. Software --- Concepts and Tools, 15(4), 1994. [doi]

Abstract

This paper describes the concept of language oriented programming which is a novel way of organising the development of a large software system, leading to a different structure for the finished product. The approach starts by developing a formally specified, domain-oriented, very high-level language which is designed to be well-suited to developing “this kind of program”. The development process then splits into two independent stages: (1) Implement the system using this “middle level” language, and (2) Implement a compiler or translator or interpreter for the language, using existing technology. The approach is claimed to have advantages for domain analysis, rapid prototyping, maintenance, portability, user-enhanceable systems, reuse of development work, while also providing high development productivity. We give an example where the method has been used very successfully (in conjunction with rapid prototyping) in the development of a large software system: the FermaT reverse engineering tool. A major benefit of this approach to software development, as compared to the usual sequential “waterfall model” is the speed with which products can be brought to market. This is due to “concurrent engineering”: the effective overlap of development stages. Finally, the “middle out” development style is compared and contrasted with the more usual “top down”, “bottom up” and “outside in” development methods.