De-escalating Software (Keynote)
What are the principles of programming languages? The world-view of mainstream programming language-related research has changed little since the 1970s. Programs should be correct and efficient; languages should engender those qualities, Latent among this is another 1970s idea: that growth in infrastructural complexity is the expected trajectory of development, and that the power of mechanisation will render that complexity tractable. In many domains of human activity, such as farming, transportation, corporate management and education, that thinking is showing its limitations. What about software? In this talk, which will offer far more questions than answers, I’ll consider what research goals and avenues might emerge from certain alternative principles inspired by an analogous reaction against convention. Among the alternative principles I’ll discuss are ones I’ll call authorial capability (influencing e.g. approaches to modularity and refactoring), complexity budgeting (influencing e.g. approaches to build tooling, dependency management and testing), and scaling via federation (influencing approaches to distribution and interface specification).