BibTeX

Bookmark

OpenURL

Abstract

Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for a sociologicallygrounded programming language theory: socio-PLT. Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design. For example, many programming language features provide benefits that programmers cannot directly or immediately observe and therefore may not find compelling. From clean water to safe sex, the health community has long examined how to surmount similar observability barriers. We use such results from outside of programming language theory to frame a research agenda that should help us understand the social foundations of languages. Finally, we examine implications of our approach, such as for the design space of language features and the assessment of scientific research into programming languages. 1.

Citations

...tions such as the size of the organization, its age and structure, and who is involved in the collaboration. Centering around this idea is a wide body of practical research in organizational learning =-=[71]-=- and tacit knowledge [61]. Niches, ecological models, and DSLs. A powerful network model is N. Mark’s ecological theory. Studying music, he showed a genre can be modeled as competing for the time, ene...

...lives. According to Google Scholar, over 40,000 papers directly cite Rogers’ work on the diffusion of innovation, and Rogers estimates that at least 4,000 of the papers empirically validate his model =-=[68]-=-. This is just one model of adoption. Our presentation cannot be all-encompassing; instead, we point out the implications that four fields of study have for language research. 3.1 Long-living Pariahs ...

...ing the general but non-functional J operator. Subsequent generations of researchers and practitioners grew the J operator into a variety of continuation operators, complete with functional reasoning =-=[22, 81]-=- and optimized implementations. The feedback loop continues today. Notably, the orchestration and performance needs of serverbased web applications are posing research challenges for design and implem...

...First, that meant Kelly et al. could rely upon weak connections to rapidly spread basic knowledge. Second, Kelly et al. exploited the fact that people with strong relationships are similar (homophily =-=[53]-=-). The change agents selected by Kelly et al. understood issues specific to the community and were in an overall position of influence. Like HIV solutions, the benefits of many programming language fe...

...ould suggest that designers ought to move some static checks off the critical path. Even the idea of the edit/compile cycle may need to be antiquated in exchange for live [52] and direct manipulation =-=[31, 73]-=-. User preference may vary from group to group — and here again, being a potential early adopter may correlate with particular preferences. Question 17. How does latency sensitivity vary across user p...

...olecloth radical design. Similarly, language researchers often produce radically new designs for general-purpose languages. For instance, in 1978, John Backus called for a point-free functional style =-=[7]-=-. Point-free programming, today, is still not well known outside of the academic community. Likewise, the Prolog vision of declarative programming has not become the dominant paradigm. Even when a rad...

...he statistical properties of actual bugs help motivate and guide context-bounded solutions [59]. Given the high amount of research devoted to concurrency and parallelism, such analyses are quite rare =-=[6, 27, 32]-=-. Even in these studies, we found few socio-technical details are known, such as the education of the programmers and the group development methodology. We stress the importance of demographics. For e...

... and features in ways that bolster adoption, we should also create designs that improve with adoption. According to Metcalfe’s law, the value of a network goes up as the square of the number of users =-=[72]-=-. There are millions of programmers and billions of users; researchers should consider them to be an exploitable resource. We draw inspiration from the open source community, where modern languages co...

... James Gosling (Java), and Rasmus Lerdorf (PHP) all followed this pattern. If the pattern continues to hold, programming language community should not only focus on justifying features to programmers =-=[37]-=-. We should focus on better consulting with the wider software development community to see what is relevant [54, 82] and communicating our findings to new language designers, who usually come from ou...

... model, diffusion is the process in which an innovation is communicated through different channels over time along a network. The diffusion of innovation is distinct from the diffusion of information =-=[29]-=-. There may be a long gap between becoming aware of a technique or language and beginning to use in practice. Sometimes, the second step never happens, even if the potential adopter is convinced of th...

...he construct away by what is now known as the continuation-passing style (CPS) transformation. At least one direct practical result is famous: Dijkstra’s warning “Go to Statement Considered Harmful.” =-=[19, 67]-=- Contemporaneously, Landin [44] extended his SECD machine to support Algol by adding the general but non-functional J operator. Subsequent generations of researchers and practitioners grew the J opera...

...enia. CSCW studies the role of computational intermediaries and the human processes that it augments. The security community, for example, has begun to view many of its core problems in terms of CSCW =-=[5]-=-. All of these social sciences are relevant, well-studied, and provide methodologies and insights missing from programming language research. 4. Socially-optimized language design This section combine...

... A recent promising course of empirical analysis has been for addressing the burgeoning problems of concurrency and parallelism. Lu et al. performed an exemplary study of concurrency bugs in practice =-=[48]-=- that shows language and analysis research ignores wide-spread technical problems. Constructively, they also show that the statistical properties of actual bugs help motivate and guide context-bounded...

... language and analysis research ignores wide-spread technical problems. Constructively, they also show that the statistical properties of actual bugs help motivate and guide context-bounded solutions =-=[59]-=-. Given the high amount of research devoted to concurrency and parallelism, such analyses are quite rare [6, 27, 32]. Even in these studies, we found few socio-technical details are known, such as the...

...own as the continuation-passing style (CPS) transformation. At least one direct practical result is famous: Dijkstra’s warning “Go to Statement Considered Harmful.” [19, 67] Contemporaneously, Landin =-=[44]-=- extended his SECD machine to support Algol by adding the general but non-functional J operator. Subsequent generations of researchers and practitioners grew the J operator into a variety of continuat...

...ns? Generators and coroutines have weaker expressive power: they are equivalent to one-shot continuations [39, 58]. Nor are these weaker forms new: it has been many decades since they were introduced =-=[16, 47, 83]-=-. This timeline is troubling and evokes questions about the essential design and adoption trajectory of control constructs. 2.2.2 Higher-order functions Higher-order functions also prompt alarming que...

...ly flawed) understanding of it. 2.2.1 Continuations Continuations illustrate a 50 year long feedback loop between theory and practice. Algol 60’s construct for jumping out of blocks begins Reynolds’s =-=[67]-=- history of continuations. Implementing goto was simple, akin to implementing continuations, but formally reasoning about it challenged academia. Early on, van Wijngaarden [79] showed how to reduce th...

...pipeline will be a jarring change. In comparison, the computer human interaction community already considers sociological works important enough to solicit and accept for their main conference series =-=[20]-=-. As the research is not immediately applied and therefore objectionable to many, Dourish presented why the computer human interaction community is learning to not judge research by short-sighted “imp...

...pede going from one to the other. The challenge in applying research ideas across these different domains is exacerbated by the social gap between the communities: tacit knowledge is hard to transfer =-=[60]-=- and what is important for one community need not be for another (Section 3.3). Hypothesis 1. Working on the closure side of the duality increases influence on programming language researchers, but de...

...anguages often feature structural typing, type classes, and verified implementations, while object-oriented languages more typically innovate in nominal typing, inheritance, and meta-object protocols =-=[10]-=-. Technical differences challenge going from one to the other. A challenge in crossing over is especially alarming because of the social gap between the communities: tacit knowledge is hard to transfe...

...ns? Generators and coroutines have weaker expressive power: they are equivalent to one-shot continuations [39, 58]. Nor are these weaker forms new: it has been many decades since they were introduced =-=[16, 47, 83]-=-. This timeline is troubling and evokes questions about the essential design and adoption trajectory of control constructs. 2.2.2 Higher-order functions Higher-order functions also prompt alarming que...

... social network. Sociologists and economists have long studied communication structure and innovation in organizations. For example, Minstrom linked the “presence and actions of policy entrepreneurs” =-=[57]-=- to legislative-level school choice reform. As Wadler suggests, researchers should work with enterprises [82], for which we found well-studied considerations such as the size of the organization, its ...

...is their low adoption cost. In particular, embedded DSLs will often leverage syntax, libraries, and semantics of the host language. If DSLs are to be the solution to parallelism [12], cloud computing =-=[84]-=-, and other software crises, we should move embedded DSL research beyond the ease of construction. Hypothesis 10. Users are more likely to adopt an embedded DSL than a non-embedded DSL and the harmony...

.... R. Hoare advised that a language designer should “have excellent judgment in choosing the best” features, but should not “include untried ideas of his own. His task is consolidation, not innovation =-=[35]-=-.” The role of designing practical languages and of experimenting with language features ought to be separate, presumably with the programming language research community focusing on the latter. Hoare...

...ommunity. Likewise, the Prolog vision of declarative programming has not become the dominant paradigm. Even when a radical design is adopted, such as dataflow languages for composing electronic music =-=[52]-=-, it may be significantly evolved and specialized. Engineering language designs. Others have offered a contrasting vision of the language design process. In 1973, C. A. R. Hoare advised that a languag...

...s is a large impact and took relatively little time and effort. Kelly et al. exploited several network properties when selecting change agents. For example, consider the model of strong and weak ties =-=[28]-=-. For any three individuals A,B, and C with two strong relationships (A,B) and (A,C), the third (B,C) is at least a weak one. Two powerful properties arise: people will form cliques based on strong ti...

...nce than art. Language designers currently share their thoughts about the design process they went through and about the process by which their languages have become adopted as relevant contributions =-=[34, 36, 54]-=-. However, scientific principles are lacking. Adoption should not be analyzed as just an eventual marketing barrier but also, for example, the process of exploiting social learning to improve an innov...

...l, and metaprogramming. As a few examples: 1. Optimization: An individual program is generally used by many users. Can programs speed up as the number of users increase, perhaps by augmenting tracing =-=[24]-=- with collaborative profiles? 2. Safety: Cooperative bug isolation [46] collects profiling data from many executions and analyzes the results sta10 2012/4/13tistically. This is just a starting point....

...onstruction of Designs Adoption can improve innovations in ways that are hard to achieve in the laboratory. Researchers such as Backus [7] design languages according to hard technological determinism =-=[74]-=-, which views individual technologies as inevitable and therefore can be designed without considering the social context. Sociologists, however, often examine an opposing model: society determines the...

...stem defaults are inherently tied to social norms and practice [5]. Can languages streamline the design of open and configurable systems? Every use of a system is an additional example of typical use =-=[21]-=-. We have used one of these ideas in our own research – enabling search and verification of JavaScript applications through user traces – and are increasingly seeing it in work by others. Collaborativ...

...s are increasingly examining extrinsic factors in a rigorous way. The focus of these efforts is typically on individual users. For example, there is a precedent for examining individual psychological =-=[62]-=- and cognitive [63] factors by the the Psychology of Programming Interest Group (PPIG). In addition to such efforts, we argue that socio-technical research must also study group phenomena. Scientific ...

...al program is generally used by many users. Can programs speed up as the number of users increase, perhaps by augmenting tracing [24] with collaborative profiles? 2. Safety: Cooperative bug isolation =-=[46]-=- collects profiling data from many executions and analyzes the results sta10 2012/4/13tistically. This is just a starting point. For example, a key challenge facing symbolic execution researchers is ...

...nt and controversial. Lazy languages abstract away from the von Neumann computer model of a program as a sequence of instructions, which is a deep change for programmers. Introduced contemporaneously =-=[56, 77]-=- with laziness, DamasHindley-Milner “ML-like” type systems assist programming over static semantics. Haskell was created to collectively explore such ideas [41] – the Great Experiment of functional la...

... ignoring adoption hurts the longevity of an innovation. Consider a simple model where languages provide value to users but every technology change has a cost (the switching cost). Balcer and Lippman =-=[8]-=- show that “there is a threshold such that the firm will immediately adopt the current best practice if its technological lag exceeds this threshold; otherwise, it (temporarily) avoids the switching c...

...ct. Hypothesis 5. The productivity and correctness benefits of functional programming are better correlated with the current community of developers than with the languages themselves. Burnham et al. =-=[11]-=- analyze additional ways barriers can be exploited to improve stability. Consider a marriage under stress: social and bureaucratic barriers lengthen the divorce process and therefore provide a window ...

...ature. This can be a more complex process than trying out a complete language, since the feature needs to be integrated into an implementation of a language. Approaches such as languages-as-libraries =-=[55, 76]-=- may, therefore, have more long-term value in simplifying the essential presentation of ideas, rather than directly benefiting individual programmers that consume these libraries. Hypothesis 11. Parti...

...are otherwise unavailable (Section 3.4). However, empirical attempts are easily marred by inappropriate methodology [30, 51]. For example, it is difficult to draw conclusions from studies on students =-=[69]-=- unless, of course, novices are the topic of interest [62]. Question 6. How do we perform, evaluate, and benefit from research into developing applications in a language? Adoption-centric language des...

...he statistical properties of actual bugs help motivate and guide context-bounded solutions [59]. Given the high amount of research devoted to concurrency and parallelism, such analyses are quite rare =-=[6, 27, 32]-=-. Even in these studies, we found few socio-technical details are known, such as the education of the programmers and the group development methodology. We stress the importance of demographics. For e...

...users care about them is their low adoption cost. In particular, embedded DSLs will often leverage syntax, libraries, and semantics of the host language. If DSLs are to be the solution to parallelism =-=[12]-=-, cloud computing [84], and other software crises, we should move embedded DSL research beyond the ease of construction. Hypothesis 10. Users are more likely to adopt an embedded DSL than a non-embedd...

...ould suggest that designers ought to move some static checks off the critical path. Even the idea of the edit/compile cycle may need to be antiquated in exchange for live [52] and direct manipulation =-=[31, 73]-=-. User preference may vary from group to group — and here again, being a potential early adopter may correlate with particular preferences. Question 17. How does latency sensitivity vary across user p...

...Diffusion of information. Often, knowledge is not the missing ingredient. For example, a group of researchers (Kelly et al.) intervened in 1992 on the epidemic HIV outbreak in several American cities =-=[42]-=-. First, in a 3-night study of bars in the cities, they measured that factual knowledge about HIV prevention was already widespread. Despite acknowledging the fatal nature of the disease and the 6 201...

...nt and controversial. Lazy languages abstract away from the von Neumann computer model of a program as a sequence of instructions, which is a deep change for programmers. Introduced contemporaneously =-=[56, 77]-=- with laziness, DamasHindley-Milner “ML-like” type systems assist programming over static semantics. Haskell was created to collectively explore such ideas [41] – the Great Experiment of functional la...

...ature. This can be a more complex process than trying out a complete language, since the feature needs to be integrated into an implementation of a language. Approaches such as languages-as-libraries =-=[55, 76]-=- may, therefore, have more long-term value in simplifying the essential presentation of ideas, rather than directly benefiting individual programmers that consume these libraries. Hypothesis 11. Parti...

...is known that users of web search engines respond negatively to even a few hundred milliseconds’ additional delay. Further, users respond negatively even when they do not consciously notice the delay =-=[70]-=-. Do programmers react similarly? Question 16. How adverse are programmers to longer compilation or interpreter startup times? How willing are they to trade time for improved error checking? The answe...

...competing for the time, energy, and preference of its listeners. The insight is that listeners enjoy and prioritize music that they can discuss with their friends, so music spreads along social lines =-=[50]-=-. This creates a connection between an innovation and its demographic. Just as Jazz is part of Jazz culture, a domain-specific language should be considered in conjunction with the users of the domain...

...g opportunities to exploit the natural evolution of technology and do not even consider that designs may be systemically flawed by opposing the natural evolution. Glick and Hays found social learning =-=[26, 33]-=- and adaptation [33, 68] guide the evolution (reinvention) of an innovation. Social learning is a powerful resource. For example, researchers have long examined its use in the social construction of l...

...locks begins Reynolds’s [67] history of continuations. Implementing goto was simple, akin to implementing continuations, but formally reasoning about it challenged academia. Early on, van Wijngaarden =-=[79]-=- showed how to reduce the construct away by what is now known as the continuation-passing style (CPS) transformation. At least one direct practical result is famous: Dijkstra’s warning “Go to Statemen...