A feature model of actor, agent, functional, object, and procedural programming languages - Jordan, Howell; Botterweck, Goetz; Noll, John; Butterfield, Andrew; Collier, Rem (Science of computer programming, 2015)
The number of programming languages is large and steadily increasing. However, little structured information and empirical evidence is available to help software engineers assess the suitability of a language for a particular development project or software architecture. We argue that these shortages are partly due to a lack of high-level, objective programming language feature assessment criteria: existing advice to practitioners is often based on ill-defined notions of ‘paradigms’ [3, p. xiii] and ‘orientation’, while researchers lack a shared common basis for generalisation and synthesis of empirical results. This paper presents a feature model constructed from the programmer's perspective, which can be used to precisely compare general-purpose programming languages in the actor-oriented, agent-oriented, functional, object-oriented, and procedural categories. The feature model is derived from the existing literature on general concepts of programming, and validated with concrete mappings of well-known languages in each of these categories. The model is intended to act as a tool for both practitioners and researchers, to facilitate both further high-level comparative studies of programming languages, and detailed investigations of feature usage and efficacy in specific development contexts. •A survey of existing programming language comparisons and comparison techniques.•Definitions of actor, agent, functional, object, and procedural programming concepts.•A feature model of general-purpose programming languages.•Mappings from five languages (C, Erlang, Haskell, Jason, and Java) to this model.