WG211/M20Zaytsev

From WG 2.11
Jump to: navigation, search

Title: BabyCOBOL: The Challenge to Program Generation Tool Developers

On one side of the gap we have academic researchers developing new techniques of language processing in general and program generation in particular, and validating them by prototyping tools that typically work on one particular relatively well-designed language such as Java, Scala, Scheme or ML, or a subset of such a language. On the other side of the gap, we have industrial researchers and practitioners of the same domain, struggling to implement tools that are capable of processing legacy programming languages such as COBOL, FORTRAN, PL/I, CLIST and 4GLs. Even those that wish this gap to be bridged, understand that it is unfair to demand full coverage of monstrously complex languages like COBOL from academics, and it is equally unrealistic to expect all freshly developed techniques to be easily portable to such languages without any help of the researchers. As a bridge across this chasm, I will present BabyCOBOL: an artificially created language of deliberately small size, with only a handful of language features. Yet, each of the features it has, was inherited from a similar feature from a legacy language such as COBOL, RPG, REXX or a 4GL, and represents some compiler implementation problem, well-known among legacy language-supporting tool vendors.

BabyCOBOL is small enough to use as running example or an assignment in a university course, if the goal is to produce engineers capable of facing various problems of dealing with legacy languages. It is also small enough to implement with limited resources within any framework that is capable of tackling it, and yet demonstrate convincingly how this framework helps the developer.