Extensible Model for Comparison of Expressiveness of Object-Oriented Programming Languages

Abstract We consider the problem of comparison of programming languages with respect to their ability to express programmers’ ideas. Our assumption is that the way of programmers’ thinking is reflected in languages used to describe software systems and programs (modelling languages, type theory, pattern languages). We have developed a list of criteria based on these languages and applied it to comparison of a number of widely used programming languages. The obtained result may be used to select a language for a particular task and choose evolution directions of programming languages.

[1]  Oksana Nikiforova,et al.  Towards Easier Implementation of Design Patterns , 2016, ICSEA 2016.

[2]  António Leitão,et al.  On the Expressive Power of Programming Languages for Generative Design - The Case of Higher-Order Functions , 2014, eCAADe proceedings.

[3]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[4]  Andreas Geyer-Schulz,et al.  A Comparison of Five Programming Languages in a Graph Clustering Scenario , 2013, J. Univers. Comput. Sci..

[5]  S. Tucker Taft,et al.  Information technology — Programming Languages — Ada , 2001 .

[6]  Ruslan Batdalov,et al.  Is there a need for a programming language adapted for implementation of design patterns? , 2016, EuroPLoP.

[7]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[8]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[9]  R Batdalov Inheritance and class structure , 2010 .

[10]  Benjamin M. Brosgol A Comparison of Generic Template Support: Ada, C++, C#, and JavaTM , 2010, Ada-Europe.

[11]  E. R. Allred,et al.  Language Reference , 1997 .

[12]  William M. Farmer,et al.  Chiron: A Multi-Paradigm Logic , 2007 .

[13]  Guy L. Steele,et al.  The Java Language Specification, Java SE 8 Edition , 2013 .

[14]  Alexey Lastovetsky The mpC Programming Language Specification , 1994 .

[15]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[16]  Vitaly Klyuev,et al.  Concurrency in Go and Java: Performance analysis , 2014, 2014 4th IEEE International Conference on Information Science and Technology.

[17]  N. Archvadze,et al.  Reforming the trees — C# and F# comparison , 2012, 2012 IV International Conference "Problems of Cybernetics and Informatics" (PCI).

[18]  Ralf Lämmel,et al.  Comparison of feature implementations across languages, technologies, and styles , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[19]  Andrew C. Myers,et al.  Lightweight, flexible object-oriented generics , 2015, PLDI.

[20]  Guido van Rossum,et al.  The Python Language Reference: Release 3.6.4 , 2018 .

[21]  Ömer Faruk Baykoç,et al.  Comparison of the most popular object‐oriented software languages and criterions for introductory programming courses with analytic network process: A pilot study , 2011, Comput. Appl. Eng. Educ..

[22]  Peter H. Golde,et al.  C# Language Specification , 2003 .

[23]  Zilvinas Vaira,et al.  Software Engineering Paradigm Independent Design Problems, GoF 23 Design Patterns, and Aspect Design , 2011, Informatica.

[24]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture: A System of Patterns: John Wiley & Sons , 1987 .

[25]  Peter Norvig,et al.  Artificial Intelligence: A Modern Approach , 1995 .