We have organized a group to discuss programming language design and propose to become an IFIP TC2 working group. While the theory and implementation of programming languages are both well developed fields with strong institutions, there is currently less acknowledgement and support for work on the design of programming languages. We take the position that programming languages are not just a notation for instructing a computer — they are a medium for expressing the structure and intention of software and communicating these to other programmers. Thus human factors must weigh heavily in language design decisions, requiring a well-judged balance between conflicting goals that are qualitative in nature. Other fields, like Architecture, call such balancing acts Design, with a capital D, and recognize this activity as a practice with its own methodologies, distinct from both science and engineering.
Ivan Chermayeff wrote "Design is directed toward human beings. To design is to solve human problems by identifying them and executing the best solution." Steve Jobs wrote: "In most people's vocabularies, design means veneer. It's interior decorating. It's the fabric of the curtains or the sofa. But to me, nothing could be further from the meaning of design. Design is the fundamental soul of a human-made creation." We feel that this notion of design captures the essential difficulty of creating useful programming languages. Design issues are what programming language developers argue about amongst themselves. We have formed a working group of experts active in programming language research and development that is focused on discussion at the design level.
Our reason for forming a new group is that there is no existing venue that brings together experts to exchange and refine new ideas in programming language design. Computer science conferences no longer serve this role, because they are dedicated to the presentation of contributions that have been rigorously evaluated. While such conferences serve a crucial role in scientific progress, they tend to filter out discussion of early stage ideas as well as design issues that are qualitative in nature. Neither do they facilitate conversations on open problems and emerging issues. We note that some of the landmark papers on language design could not be published today: Liskov on data abstraction, Parnas on modules, or Landin on the next 700 languages. These papers consisted of informal but carefully reasoned arguments for the power of a new idea. These ideas were communicated promptly and triggered vibrant debates. We seek a venue that cultivates such ideas, arguments, and debates in a concentrated setting with a cohesive group of researchers and developers.
We have chosen to propose a new TC2 working group for two reasons. First, TC2 working groups are a proven model that has provided great benefit to our field, and indeed to some of us who are members of existing groups. Secondly, we feel that our charter complements the existing range of working groups. Groups such as WG 2.4 (Software Implementation Languages) and WG 2.8 (Functional Programming) specialize in specific kinds of programming languages. We believe it is vital to also have a forum that cross-fertilizes perspectives from the entire spectrum of programming language paradigms and communities, and that the lack of such communication has led in the past to wasteful intellectual duplication. Our initial membership already represents OO (static, dynamic, and Scandinavian), FP, distributed, parallel, LISP family, Java, C#,
JavaScript?. We intend to deepen and broaden this coverage as we fill out the initial membership.
WG 2.1 (Algorithmic Languages and Calculi) covers all programming languages, focusing on their formal aspects. In so doing they necessarily de-emphasize discussion of informal and qualitative design issues. We believe that sound theory is a necessary foundation for successful design work. Conversely, we would welcome the opportunity to bring emerging topics to the attention of WG 2.1 when there is a need for more formal investigation of a significant new idea. We might play an opposite role with WG 2.3 (Programming Methodology), designing language features in support of their methodological proposals. In this sense, we fill the gap between WG 2.1 and WG 2.3.
In sum, while our group overlaps to some extent with the subject areas of existing working groups, we differ more on an orthogonal axis, that of method. Our focus on design tempers the methods of mathematics and engineering with an appreciation of the pervasive influence of human factors throughout the act of programming. We feel the need to shift the discourse in this direction in order to progress as programming language researchers and developers. We further hope that this also is a step towards bridging the unfortunate chasm between industry and academic computer science. The charter of TC2 is “Software: Theory and Practice”. We respectfully submit that our group would help TC2 more completely fulfill that charter.
Our inaugural meeting was held June 1-3 2011 preceding PLDI, hosted by Google in Mountain View CA USA. A report on this meeting is attached. To summarize, we left the meeting with a consensus that it was a uniquely valuable experience and with the intention to proceed in formalizing the group, our first choice being an IFIP TC2 working group. The next meeting will be in the Summer of 2012, either at Imperial College in London or colocated with ECOOP in Beijing. Longer term, we are considering colocating on a regular basis with OOPSLA or ECOOP, and also sponsoring an associated workshop at those venues.
We thank the TC2 committee for entertaining this proposal and look forward to discussing its merits at the upcoming annual meeting.