ANALYSIS OF MECHANISMS AND EFFICIENCY OF SPECIALIZED LANGUAGES OF FUNCTIONAL PROGRAMMING
DOI:
https://doi.org/10.15802/stp2019/195581Keywords:
functional programming, Halstead metrics, language capabilities, language comparison, specialized functional languages, Erlang Haskel Lisp, F #, ScalaAbstract
Purpose. The authors aim to determine the differences between functional programming languages, to identify the capabilities of the most popular languages by comparing and analyzing them. To identify the main features, it is necessary to consider their data structures, as well as the application scope. The authors also aim to analyze and compare examples from various fields of language application using metrics of the program texts complexity. Methodology. The five most popular specialized functional languages are selected: Erlang, Lisp, F #, Scala and Haskel. An overview of the official documentation was conducted to obtain information on the capabilities of each language; their data structures and the application scope were studied. The experimental research base is formed from texts of the existing open source software systems and matched by similar applications and equal volume of text. Comparative analysis of sample programs is performed using Halsted metrics, which are calculated using specially designed software. The analysis of the received quality assessments is done graphically. Findings. Software has been developed to obtain Halsted metrics for program input texts in functional programming languages such as Erlang, Lisp, F # and Scala. The complexity of the Haskel programming language syntax did not allow the use of metrics to evaluate the text, so only a documentation review was performed. Benchmarking shows the differences between languages and outlines their use. The examples of different volumes from such areas of application as system programming tasks, graphing, mathematical calculations, AI systems, web programming, etc. were compared. Originality. The authors first conducted a comparative analysis of specialized languages using text complexity metrics, which made it possible to establish that Lisp has the smallest vocabulary and code length, Scala text has the most structured form, and F # and Erlang are marked with extra verbosity. Practical value. The findings and measurements will help in selecting the most effective functional programming language for solving specific problems, taking into account differences in applications. The developed software allows making measurements for various program texts when developing and maintaining complex software systems.
References
Dushkin, R.V. (2016). Practice works in Haskell. Moscow: DMK Press. (in Russian)
Odersky, M., Spoon, L., & Venners, B. (2011). Programming in Scala. Piter. (in Russian)
Piter, S.(2017). Practical Common Lisp. Moscow: DMK Press. (in Russian)
Russell, S., & Norvig, P. (2007). Artificial intelligence. The modern approach. 2nd Edition. Moscow: Williams. (in Russian)
Smit, K. (2011). Programmirovanie na F#. Moscow: Simvol–Plyus. (in Russian)
Cesarini, F., & Thompson, S. (2015). Programming in Erlang. Moscow: DMK Press. (in Russian)
Dalorzo, E. Functional Programming with Java 8 Functions. Retrieved from https://dzone.com/articles/functional-programming-java-8
GitHub. Retrieved from https://github.com. (in English)
Halstead, Maurice H. (1977). Elements of Software Science. New York: North Holland. (in English)
Hunt, J. (2018). A Beginner’s Guide to Scala, Object Orientation and Functional Programming. Springer International Publishing. doi: 10.1007/978-3-319-75771-1 (in English)
Michaelson, G. (2011). An introduction to functional programming through lambda calculus. Courier Corporation. (in English)
Peyrott, S. (2016). Introduction to Immutable.js and Functional Programming Concepts. Retrieved from https://auth0.com/blog/intro-to-immutable-js/ (in English)
Finkbeiner, B., Klein, F., Piskac, R., & Santolucito, M. (2019). Synthesizing functional reactive programs. Haskell 2019: Proceedings of the 12th ACM SIGPLAN International Symposium on Haskell, 162-175. doi: 10.1145/3331545.3342601 (in English)
Wang, M. & Owens, S. (2017). Trends in Functional Programming. 18th International Symposium, 149. doi: 10.1007/978-3-319-89719-6
Downloads
Published
How to Cite
Issue
Section
License
- Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution License that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal.
- Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this journal.
- Authors are permitted and encouraged to post their work online (e.g., in institutional repositories or on their website) prior to and during the submission process, as it can lead to productive exchanges, as well as earlier and greater citation of published work (See The Effect of Open Access).




