Posts

Human Engineering of Programming Languages

The term human engineering is not that widely used when talking about programming languages, but arguably it is the most important job of a language designer.  Closely related to the term ergonomics , human engineering is the act of ensuring that a design is fit for use by humans.  In the context of a programming language, that means the language should help prevent errors during the construction of a program, and be designed so as to faithfully communicate the intended meaning of the program from the programmer both to the readers, and to the automated tools that might analyze the program or convert it into a machine executable form. One well known technique for preventing errors is to require (or at least allow) some degree of checked redundancy .  That is, you can say some things that could potentially be inferred from earlier (or later) parts of a communication, because the redundancy enables an automated check that the intent of the communication was correctly capt...

The Role of Programming Languages

Welcome to this new blog on the Design and Engineering of Programming Languages .  The intent is to cover the process of designing a programming language, coupled with the engineering of the language, which essentially means making the trade-offs necessary to produce a useful result.  We include in the engineering not only the conventional notions of software engineering and language engineering, but also what we consider perhaps the most important, the notion of human engineering. Of course right off the bat we are "begging" all sorts of questions, many of which revolve around what exactly is the role of programming languages.  One could argue that high-level programming languages are the most important invention (or discovery?) of the computer era, and without them none of the benefits (as well as the malignancies, perhaps) we associate with computers would have come to pass.  One could claim that this invention was inevitable, since no one could remain in t...