Аналіз механізмів та ефективності спеціалізованих мов функціонального програмування

Loading...
Thumbnail Image
Date
2019
Journal Title
Journal ISSN
Volume Title
Publisher
Дніпровський національний університет залізничного транспорту імені академіка В. Лазаряна, Дніпро
Abstract
UKR: Мета. Автори ставлять за мету встановити відмінності функціональних мов програмування, з`ясувати можливості найбільш популярних мов шляхом їх порівняння та аналізу. Для виявлення основних можливостей мов потрібно розглянути їх структури даних, а також сфери застосування. Виконати аналіз та порівняння прикладів із різних сфер використання мов за метриками складності текстів програм. Методика. Відібрано п’ять найпопулярніших спеціалізованих функціональних мов програмування: Erlang, Lisp, F#, Scala та Haskel. Для отримання інформації про можливості кожної мови вивчено їх структури даних, а також сфери застосування, проведено огляд офіційної документації. Експериментальну базу дослідження сформовано з текстів сучасних програмних систем, отриманих із відкритого джерела та підібраних за схожими напрямами застосування й однаковим обсягом тексту. Порівняльний аналіз прикладів програм виконано за метриками Холстеда, які розраховують за допомогою спеціально розробленого програмного забезпечення. Аналіз отриманих оцінок якості виконано графічним способом. Результати. Розроблено програмне забезпечення, яке дозволяє отримати метрики Холстеда для вхідних текстів програм на таких мовах функціонального про-грамування, як Erlang, Lisp, F# та Scala. Складність синтаксису мови програмування Haskel не дозволила використати метрики для оцінки тексту, тому було проведено тільки огляд можливостей за документацією. За допомогою порівняльного аналізу показано відмінність мов та окреслено сфери їх використання. Виконано порівняння прикладів різного об’єму з таких сфер використання, як задачі системного програмування, робота з графікою, математичні розрахунки, системи штучного інтелекту, веб-програмування тощо. Наукова новизна. Автори вперше провели порівняльний аналіз спеціалізованих мов за допомогою метрик складності текстів, який дозволив встановити, що мова Lisp має найменший словник і довжину коду, текст на Scala має найбільш структурований вигляд, а F# та Erlang відзначаються зайвою багатослівністю. Практична значимість. Отримані висновки та виміри допоможуть під час вибору найбільш ефективної мови функціонального програмування для вирішення конкретних завдань з урахуванням відмінностей у сферах застосування. Розроблене програмне забезпечення дозволяє виконувати виміри для різних текстів програм під час розробки та супроводу складних програмних систем.
RUS: Цель. Авторы ставят целью определить отличия функциональных языков программирования, выявить возможности наиболее популярных языков путём их сравнения и анализа. Для выявления основных возможностей нужно рассмотреть их структуры данных, а также сферы применения. С помощью метрик сложности текстов программ провести анализ и сравнение примеров из различных сфер использования языков. Методика. Отобраны пять самых популярных специализированных функциональных языков программирования: Erlang, Lisp, F #, Scala и Haskel. Для получения информации о возможностях каждого из языков изучены их структуры данных, а также сферы применения, проведен обзор официальной документации. Экспериментальная база исследования сформирована из текстов существующих программных систем, полученных из открытого источника и подобранных по схожим направлениям применения и одинаковым объемам текста. Сравнительный анализ примеров программ выполнен по метрикам Холстеда, которые рассчитывают с помощью специально разработанного программного обеспечения. Анализ полученных оценок качества выполнен графическим способом. Результаты. Разработано программное обеспечение, которое позволяет получить метрики Холстеда, для входных текстов программ на таких языках функционального программирования, как Erlang, Lisp, F # и Scala. Сложность синтаксиса языка программирования Haskel не позволила использовать метрики для оценки текста, поэтому было проведено только рассмотрение возможностей по документации. С помощью сравнительного анализа показано различие языков и очерчены сферы их использования. Выполнено сравнение примеров разного объема из таких сфер использования, как задачи системного программирования, работа с графикой, математические расчеты, системы искусственного интеллекта, веб-программирование и т. п. Научная новизна. Авторы впервые провели сравнительный анализ специализированных языков с помощью метрик сложности текстов, который позволил установить, что язык Lisp имеет самый меньший словарь и длину кода, текст на Scala имеет наиболее структурированный вид, а F # и Erlang отмечаются излишней многословностью. Практическая значимость. Полученные выводы и измерения помогут при выборе наиболее эффективного языка функционального программирования для решения конкретных задач с учётом различий в сферах применения. Разработанное программное обеспечение позволяет выполнять измерения для разных текстов программ при разработке и сопровождения сложных программных систем.
ENG: 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 met-rics, 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 meas-urements 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.
Description
І. Сторчак: ORCID 0000-0002-8434-9765; О. Іванов: ORCID 0000-0003-1259-6377
Keywords
функціональне програмування, метрики Холстеда, можливості мов, порівняння мов, спеціалізовані функціональні мови, функциональное программирование, метрики Холстеда, возможности языков, сравнение языков, специализированные функциональные языки, functional programming, Halstead metrics, language capabilities, language comparison, specialized functional languages, Erlang, Haskel, Lisp, F#, Scala, КІТ
Citation
Сторчак І. М., Іванов O. П. Аналіз механізмів та ефективності спеціалізованих мов функціонального програмування. Наука та прогрес транспорту. 2019. № 6 (84). С. 117–129. DOI: 10.15802/stp2019/195581.