Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

A feature model of actor, agent, functional, object, and procedural programming languages

Published: 01 February 2015 Publication History

Abstract

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.

References

[1]
Rosetta code, 2007, http://rosettacode.org.
[2]
R. Lämmel, C. Verhoef, Cracking the 500-Language Problem, 2001, pp. 78-88.
[3]
P. Van Roy, S. Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004.
[4]
J.-P. Rosen, What orientation should Ada objects take?, Commun. ACM 35 (1992) 71-76.
[5]
T. Kuhn, The Structure of Scientific Revolutions, University of Chicago Press, 1996.
[6]
B.W. Kernighan, D. Ritchie, The C Programming Language, second edition, Prentice Hall, 1988.
[7]
J. Armstrong, Erlang, Commun. ACM 53 (2010) 68-75.
[8]
J. Armstrong, A history of Erlang, in: B.G. Ryder, B. Hailpern (Eds.), HOPL, ACM, 2007, pp. 1-26.
[9]
C. Hewitt, P. Bishop, R. Steiger, A universal modular actor formalism for artificial intelligence, in: IJCAI, 1973, pp. 235-245.
[10]
G.A. Agha, ACTORS - A Model of Concurrent Computation in Distributed Systems, MIT Press Series in Artificial Intelligence, MIT Press, 1990.
[11]
R. Bordini, J. Hübner, M. Wooldridge, Programming Multi-Agent Systems in Agent Speak Using Jason, Wiley-Interscience, 2007.
[12]
Y. Shoham, Agent-oriented programming, Artif. Intell. 60 (1993) 51-92.
[13]
A.S. Rao, AgentSpeak(L): BDI agents speak out in a logical computable language, in: W.V. de Velde, J.W. Perram (Eds.), MAAMAW, in: Lecture Notes in Computer Science, vol. 1038, Springer, 1996, pp. 42-55.
[14]
International Organization for Standardization, ISO/IEC 9899: Programming languages - C, 1999.
[15]
International Organization for Standardization, ISO/IEC 9899: Programming languages - C, 2011.
[16]
International Organization for Standardization, ISO/IEC 9899: Programming languages - C, 1990.
[17]
Institute of Electrical and Electronics Engineers, IEEE 1003.1: Standard for information technology - portable operating system interface (POSIX) base specifications, 2008, issue 7.
[18]
K. Czarnecki, U. Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, 2000.
[19]
S. Apel, C. Kastner, An overview of feature-oriented software development, J. Object Technol. 8 (2009) 49-84.
[20]
K. Kang, S. Cohen, J. Hess, W. Novak, A. Peterson, Feature-oriented domain analysis (FODA) feasibility study, Technical Report, Software Engineering Institute, 1990.
[21]
S. She, R. Lotufo, T. Berger, A. Wasowski, K. Czarnecki, The variability model of the Linux kernel, in: Proceedings of the 4th International Workshop on Variability Modelling of Software-intensive Systems (VaMoS), 2010, pp. 45-51.
[22]
P. Clements, L. Northrop, Software Product Lines, Addison-Wesley, 2002.
[23]
K. Pohl, G. Böckle, F. Van Der Linden, Software Product Line Engineering, Springer, 2005.
[24]
C. Kim, C. Kästner, D. Batory, On the modularity of feature interactions, in: Proceedings of the 7th International Conference on Generative Programming and Component Engineering, ACM, 2008, pp. 23-34.
[25]
A. Schwarz, M. Mehta, N.A. Johnson, W.W. Chin, Understanding frameworks and reviews: a commentary to assist us in moving our field forward by analyzing our past, DATA BASE 38 (2007) 29-50.
[26]
J. Bosch, Design and Use of Software Architectures: Adopting and Evolving a Product-Line Approach, Addison-Wesley Professional, 2000.
[27]
H. Jordan, G. Botterweck, M. Huget, R. Collier, A feature model of actor, agent, and object programming languages, in: Proceedings of the Compilation of the Co-located Workshops on DSM, TMC, AGERE! AOOPES, NEAT, & VMIL, ACM, 2011, pp. 147-158.
[28]
B. Martin, C. Pedersen, J. Bedford-Roberts, An object-based taxonomy for distributed computing systems, Computer 24 (1991) 17-27.
[29]
K. Krauter, R. Buyya, M. Maheswaran, A taxonomy and survey of grid resource management systems for distributed computing, Softw. Pract. Exp. 32 (2002) 135-164.
[30]
R. Meier, V. Cahill, Taxonomy of distributed event-based programming systems, Comput. J. 48 (2005) 602-626.
[31]
K. Czarnecki, S. Helsen, Feature-based survey of model transformation approaches, IBM Syst. J. 45 (2006) 621-646.
[32]
Department of Defense requirements for high order computer programming languages: Steelman, 1978, http://www.adahome.com/History/Steelman/steelman.htm.
[33]
D. Fisher, DoD's common programming language effort, Computer 11 (1978) 24-33.
[34]
D. Wheeler, Ada, C, C++, and Java vs. the Steelman, ACM SIGAda Ada Lett. 17 (1997) 88-112.
[35]
M. Shaw, G. Almes, J. Newcomer, B. Reid, W. Wulf, A comparison of programming languages for software engineering, Softw. Pract. Exp. 11 (1981) 1-52.
[36]
B. Wichmann, A comparison of Pascal and Ada, Comput. J. 25 (1982) 248-252.
[37]
A. Feuer, N. Gehani, A comparison of the programming languages C and Pascal, ACM Comput. Surv. 14 (1982) 73-92.
[38]
W. Appelbe, K. Hansen, A survey of systems programming languages: Concepts and facilities, Softw. Pract. Exp. 15 (1985) 169-190.
[39]
B. Belkhouche, L. Lawrence, M. Thadani, A methodical comparison of Ada and Modula-2, J. Pascal, Ada & Modula-2 7 (1988) 13-24.
[40]
M. Appeltauer, R. Hirschfeld, M. Haupt, J. Lincke, M. Perscheid, A comparison of context-oriented programming languages, in: International Workshop on Context-Oriented Programming, ACM, 2009.
[41]
F.W. Calliss, A comparison of module constructs in programming languages, ACM SIGPLAN Not. 26 (1991) 38-46.
[42]
H. Abelson, G. Sussman, J. Sussman, Structure and Interpretation of Computer Programs, second edition, MIT Press, 1996.
[43]
R.A. Finkel, S.N. Kamin, Advanced Programming Language Design, Addison-Wesley-Longman, 1996.
[44]
M. Scott, Programming Language Pragmatics, third edition, Morgan Kaufmann, 2009.
[45]
F. Turbak, D. Gifford, M. Sheldon, Design Concepts in Programming Languages, MIT Press, 2008.
[46]
C. Strachey, Fundamental concepts in programming languages, High.-Order Symb. Comput. 13 (2000) 11-49.
[47]
P. Van Roy, Programming paradigms for dummies: What every programmer should know, in: New Computational Paradigms for Computer Music, 2009.
[48]
L. Tratt, Dynamically typed languages, Adv. Comput. 77 (2009) 149-184.
[49]
D. Gabbay, A. Kurucz, F. Wolter, M. Zakharyaschev, Many-dimensional Modal Logics: Theory and Applications, Elsevier, 2003.
[50]
E. Shapiro, The family of concurrent logic programming languages, ACM Comput. Surv. 21 (1989) 413-510.
[51]
L. Dennis, B. Farwer, R. Bordini, M. Fisher, M. Wooldridge, A common semantic basis for BDI languages, in: Proceedings of the Fifth International Conference on Programming Multi-Agent Systems, ProMAS 2007, Springer-Verlag, 2007, pp. 124-139.
[52]
L.A. Dennis, M. Fisher, A. Hepple, Language constructs for multi-agent programming, in: F. Sadri, K. Satoh (Eds.), CLIMA VIII, in: Lecture Notes in Computer Science, vol. 5056, Springer, 2007, pp. 137-156.
[53]
M. Dastani, M.B. van Riemsdijk, J.-J.C. Meyer, Programming multi-agent systems in 3APL, in: R.H. Bordini, M. Dastani, J. Dix, A.E. Fallah-Seghrouchni (Eds.), Multi-Agent Programming, in: Multiagent Systems, Artificial Societies, and Simulated Organizations, vol. 15, Springer, 2005, pp. 39-67.
[54]
M. Fisher, MetateM: The story so far, in: R.H. Bordini, M. Dastani, J. Dix, A.E. Fallah-Seghrouchni (Eds.), PROMAS, in: Lecture Notes in Computer Science, vol. 3862, Springer, 2005, pp. 3-22.
[55]
P. Hudak, Conception, evolution, and application of functional programming languages, ACM Comput. Surv. 21 (1989) 359-411.
[56]
M. Hanus, Multi-paradigm declarative languages, in: V. Dahl, I. Niemela (Eds.), ICLP, in: Lecture Notes in Computer Science, vol. 4670, Springer, 2007, pp. 45-75.
[57]
D. Armstrong, The quarks of object-oriented development, Commun. ACM 49 (2006) 123-128.
[58]
N. Madden, B. Logan, Modularity and compositionality in Jason, in: Proceedings of the Seventh International Workshop on Programming Multi-Agent Systems, ProMAS 2009, 2009.
[59]
S.L. Peyton-Jones, P. Wadler, Imperative functional programming, in: POPL, 1993, pp. 71-84.
[60]
T. Harris, S. Marlow, S.L.P. Jones, M. Herlihy, Composable memory transactions, Commun. ACM 51 (2008) 91-100.
[61]
R.K. Karmani, A. Shali, G. Agha, Actor frameworks for the JVM platform: a comparative analysis, in: B. Stephenson, C.W. Probst (Eds.), PPPJ, ACM, 2009, pp. 11-20.
[62]
S. Peyton-Jones, Beautiful concurrency, in: A. Oram, G. Wilson (Eds.), Beautiful Code, O'Reilly, 2007, pp. 385-406.
[63]
T. Sheard, S. Peyton Jones, Template metaprogramming for Haskell, in: M.M.T. Chakravarty (Ed.), ACM SIGPLAN Haskell Workshop 02, ACM Press, 2002, pp. 1-16.
[64]
W. Frakes, K. Kang, Software reuse research: status and future, IEEE Trans. Softw. Eng. 31 (2005) 529-536.
[65]
C. Baldwin, K. Clark, Design Rules: The Power of Modularity, vol. 1, MIT Press, 2000.
[66]
G. Bracha, G. Lindstrom, Modularity meets inheritance, in: Proceedings of the 1992 International Conference on Computer Languages, IEEE, 1992, pp. 282-290.
[67]
M. Svahnberg, J. Van Gurp, J. Bosch, A taxonomy of variability realization techniques, Softw. Pract. Exp. 35 (2005) 705-754.
[68]
D.L. Parnas, On the criteria to be used in decomposing systems into modules, Commun. ACM 15 (1972) 1053-1058.
[69]
E. Visser, Meta-programming with concrete object syntax, in: D.S. Batory, C. Consel, W. Taha (Eds.), GPCE, in: Lecture Notes in Computer Science, vol. 2487, Springer, 2002, pp. 299-315.
[70]
D. Weyns, A. Omicini, J. Odell, Environment as a first class abstraction in multiagent systems, Auton. Agents Multi-Agent Syst. 14 (2007) 5-30.
[71]
J. Odell, H. Van Dyke Parunak, M. Fleischer, S. Brueckner, Modeling agents and their environment, in: Proceedings of the 3rd International Conference on Agent-oriented Software Engineering III, Springer-Verlag, 2002, pp. 16-31.
[72]
T. Connolly, C. Begg, Database Systems: A Practical Approach to Design, Implementation, and Management, Addison-Wesley-Longman, 2005.
[73]
K. Czarnecki, S. She, A. Wasowski, Sample spaces and feature models: There and back again, in: SPLC, IEEE Computer Society, 2008, pp. 22-31.

Cited By

View all
  • (2021)Impact of programming languages on machine learning bugsProceedings of the 1st ACM International Workshop on AI and Software Testing/Analysis10.1145/3464968.3468408(9-12)Online publication date: 12-Jul-2021
  • (2020)Agent programming in the cognitive eraAutonomous Agents and Multi-Agent Systems10.1007/s10458-020-09453-y34:2Online publication date: 12-May-2020
  • (2017)Concept analysis in programming language research: done well it is all rightProceedings of the 2017 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3133850.3133868(246-259)Online publication date: 25-Oct-2017
  • Show More Cited By
  1. A feature model of actor, agent, functional, object, and procedural programming languages

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Science of Computer Programming
    Science of Computer Programming  Volume 98, Issue P2
    February 2015
    201 pages

    Publisher

    Elsevier North-Holland, Inc.

    United States

    Publication History

    Published: 01 February 2015

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 20 Jan 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2021)Impact of programming languages on machine learning bugsProceedings of the 1st ACM International Workshop on AI and Software Testing/Analysis10.1145/3464968.3468408(9-12)Online publication date: 12-Jul-2021
    • (2020)Agent programming in the cognitive eraAutonomous Agents and Multi-Agent Systems10.1007/s10458-020-09453-y34:2Online publication date: 12-May-2020
    • (2017)Concept analysis in programming language research: done well it is all rightProceedings of the 2017 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3133850.3133868(246-259)Online publication date: 25-Oct-2017
    • (2016)An extension of AgentSpeak(L) and Jason tailored to programming and software developmentProceedings of the 6th International Workshop on Programming Based on Actors, Agents, and Decentralized Control10.1145/3001886.3001887(1-10)Online publication date: 30-Oct-2016
    • (2016)Programming with event loops and control loops - From actors to agentsComputer Languages, Systems and Structures10.1016/j.cl.2015.12.00345:C(80-104)Online publication date: 1-Apr-2016
    • (2016)Proceedings of the 6th International Workshop on Programming Based on Actors, Agents, and Decentralized ControlundefinedOnline publication date: 30-Oct-2016

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media