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

Ruslan Batdalov 1 , Oksana Ņikiforova 1 ,  and Adrian Giurca 2
  • 1 Riga Technical University, Latvia
  • 2 Brandenburg Technical University, Germany


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.

If the inline PDF is not rendering correctly, you can download the PDF file here.

  • [1] Matrix Resources, “June TIOBE index indicates the fall of programming market leaders,” June 2016. [Online]. Available: http://www.matrixres.com/resources/tech-trends/june-tiobe-index-indicates-the-fall-of-programming-market-leaders/ [Accessed: Nov. 28, 2016].

  • [2] J. Gosling, B. Joy, G. Steele, G. Bracha, and A. Buckley, “The Java language specification: Java® SE 8 edition,” March 2015. [Online]. Available: http://docs.oracle.com/javase/specs/jls/se8/jls8.pdf [Accessed: Nov. 28, 2016].

  • [3] R. Batdalov, “Is there a need for a programming language adapted for implementation of design patterns?” in Proceedings of the 21st European Conference on Pattern Languages of Programs (EuroPLoP), Irsee, Germany, July 6–10, 2016.

  • [4] S. J. Russell and P. Norvig, Artificial Intelligence: A Modern Approach, Englewood Cliffs, NJ, USA: Prentice Hall, 1995.

  • [5] A. Leitão, S. Proença, “On the expressive power of programming languages for generative design: the case of higher-order functions,” in Proceedings of the 32nd International Conference on Education and Research in Computer Aided Architectural Design in Europe (eCAADe), Newcastle upon Tyne, England, Sep. 22–26, 2014, pp. 257–266.

  • [6] W. M. Farmer, “Chiron: a multi-paradigm logic,” Studies in Logic, Grammar and Rhetoric, vol. 10, no. 23, 2007, pp. 1–19.

  • [7] S. C. McConnell, Code Complete, Microsoft Press, 2004.

  • [8] D. Berkholz, “Programming languages ranked by expressiveness,” March 2013. [Online]. Available: http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/ [Accessed: Nov. 28, 2016].

  • [9] Y. Zhang, M. C. Loring, G. Salvaneschi, B. Liskov and A. C. Myers, “Lightweight, flexible object-oriented generics” in Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, Portland, OR, June 13–17, 2015, pp. 436–445. https://doi.org/10.1145/2737924.2738008

  • [10] D. E. Knuth, The Art of Computer Programming: Fundamental Algorithms, Addison-Wesley, 1997.

  • [11] Ž. Vaira and A. Čaplinskas, “Software engineering paradigm independent design problems, GoF 23 design patterns, and aspect design,” Informatica, vol. 22, no. 2, pp. 289–317, Apr. 2011.

  • [12] Z. Anik and O. F. Baykoç, “Comparison of the most popular object-oriented software languages and criterions for introductory programming courses with analytic network process: a pilot study,” Computer Applications in Engineering Education, vol. 19, no. 1, pp. 89–96, March 2011. https://doi.org/10.1002/cae.20294

  • [13] N. Archvadze and M. Pkhovelishvili, “Reforming the trees – C# and F# comparison,” in Proceedings of the 4th International Conference on Problems of Cybernetics and Informatics (PCI), Baku, Azerbaijan, Sep. 12–14, 2012, pp. 1–4. https://doi.org/10.1109/ICPCI.2012.6486287

  • [14] B. M. Brosgol, “A comparison of generic template support: Ada, C++, C#, and Java ™,” in Proceedings of the 15th Ada-Europe International Conference on Reliable Software Technologies (Lecture Notes in Computer Science), Valencia, Spain, June 14–18, 2010, pp. 222–237. https://doi.org/10.1007/978-3-642-13550-7_16

  • [15] R. Lämmel, M. Leinberger, T. Schmorleiz and A. Varanovich, “Comparison of feature implementations across languages, technologies, and styles,” in Proceedings of Software Evolution Week / IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE), Antwerp, Belgium, Feb. 3–6, 2014, pp. 333–337. https://doi.org/10.1109/csmr-wcre.2014.6747188

  • [16] M. Stein and A. Geyer-Schulz, “A comparison of five programming languages in a graph clustering scenario,” Journal of Universal Computer Science, vol. 19, no. 3, pp. 428–456, 2013.

  • [17] N. Togashi and V. Klyuev, “Concurrency in Go and Java: performance analysis” in Proceedings of the 4th IEEE International Conference on Information Science and Technology (ICIST), Shenzen, China, Apr. 26–28, 2014, pp. 213–216. https://doi.org/10.1109/icist.2014.6920368

  • [18] F. Buschmann, K. Henney and D. C. Schmidt, Pattern-Oriented Software Architecture Volume 5: On Patterns and Pattern Languages, Wiley, 2007.

  • [19] R. Batdalov, “Inheritance and class structure,” in Proceedings of the 1st International Scientific-Practical Conference Object Systems – 2010, Rostov-on-Don, Russia, May 10–12, 2010, pp. 92–95.

  • [20] R. Batdalov and O. Nikiforova, “Towards easier implementation of design patterns,” in Proceedings of the Eleventh International Conference on Software Engineering Advances (ICSEA 2016), Rome, Italy, August 21–25, 2016, pp. 123–128.

  • [21] OMG, “OMG Unified Modeling Language™ (OMG UML),” March 2015. [Online]. Available: http://www.omg.org/spec/UML/2.5/PDF [Accessed: Nov. 28, 2016].

  • [22] B. C. Pierce, Types and Programming Languages, MIT Press, 2002.

  • [23] E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Publishing Company, 1995.

  • [24] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad and M. Stal, Pattern-Oriented Software Architecture: A System of Patterns, Wiley, 2013.

  • [25] M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2003.

  • [26] Python Software Foundation, “The Python Language Reference,” Oct. 2016. [Online]. Available: https://docs.python.org/3/reference/index.html [Accessed: Nov. 28, 2016].

  • [27] Mozilla Developer Network, “JavaScript Reference,” November 2016. [Online]. Available: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference [Accessed: Nov. 28, 2016].

  • [28] Perl 5 Porters, “Language Reference.” [Online]. Available: http://perldoc.perl.org/index-language.html [Accessed: Nov. 28, 2016].

  • [29] ISO/IEC, “Information technology – Programming languages – C++,” ISO/IEC standard 14882:2014(E), Dec. 15, 2014.

  • [30] Microsoft Corporation, “C# Language Specification: Version 5.0,” 2012. [Online]. Available: https://www.microsoft.com/en-us/download/details.aspx?id=7029 [Accessed: Nov. 28, 2016].

  • [31] PHP Group, “Language Reference,” 2016. [Online]. Available: http://www.php.net/manual/en/langref.php [Accessed: Nov. 28, 2016].

  • [32] Microsoft Corporation, “The Microsoft® Visual Basic® Language Specification: Version 11.0,” 2016. [Online]. Available: https://www.microsoft.com/en-us/download/details.aspx?id=15039 [Accessed: Nov. 28, 2016].

  • [33] ISO/IEC, “Information technology – Programming languages – Ruby,” ISO/IEC standard 30170:2012(E), April 15, 2012.

  • [34] M. Odersky, P. Altherr, V. Cremet, G. Dubochet, B. Emir et al., “Scala Language Specification: Version 2.11.” [Online]. Available: http://www.scala-lang.org/files/archive/spec/2.11/ [Accessed: Nov. 28, 2016].

  • [35] Google, “The Go Programming Language Specification,” May 31, 2016. [Online]. Available: https://www.golang.org/ref/spec [Accessed: Nov. 28, 2016].

  • [36] JetBrains, “Kotlin Language Documentation.” [Online]. Available: http://www.kotlinlang.org/docs/kotlin-docs.pdf [Accessed: Nov. 28, 2016].

  • [37] R. Johnson, J. Hoeller, K. Donald, C. Shampaleanu, R. Harrop et al., “Spring Framework Reference Documentation,” 2016. [Online]. Available: http://docs.spring.io/spring/docs/5.0.0.M3/spring-framework-reference/htmlsingle/ [Accessed: Nov. 28, 2016].

  • [38] TIOBE, “TIOBE Programming Community Index Definition.” [Online]. Available: http://www.tiobe.com/tiobe-index/programming-languages-definition/ [Accessed: Nov. 28, 2016].


Journal + Issues