The four Rs of programming language design
Abstract
Programming language design, The Four Rs, Domainspecific languages "I can learn the poor things reading, writing, and 'rithmetic, and counting as far as the rule of three, which is just as much as the likes of them require;" Lawrie Todd: Or the Settlers in the Woods, Galt (1832) [4]. ˜˜˜Many will be familiar with the old adage that at the core of any child's education should be the three Rs: reading, writing, and 'rithmetic.The phrase, which appeared first in print in 1825 [12] has been appropriated and parodied at length ("read, reason, recite", "reduce, reuse, recycle", etc.).Each permutation has the same purpose: to express succinctly the core tenets of an approach or philosophy.The four Rs of programming language design is another such parody of this old phrase, providing a rubric, or framework, for the design and evaluation of effective programming languages and language features.Since the very first programming language back in the 1940s [14] thousands of programming languages have been developed, representing a broad spectrum of paradigms, perspectives, and philosophies.And yet, there is no single language which is "all things to all people".The four Rs were born out of trying to answer a number of questions about the nature of programming languages and programming language design: what makes a programming language effective or ineffective?What should be the core aims of a language designer?How should programming languages and features be compared?Why is there no single "perfect" language?The four Rs go someway towards answering these questions.Before I reveal the four Rs, let's first consider some more foundational questions:Why programming languages?The development of programming languages has greatly aided software engineering.As hardware and software have grown increasingly complex, programming This is a minor revision of the published paper.Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page.To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.
DOI 10.1145/2089131.2089138