В работе обсуждается тенденция взаимопроникновения идей и технологий функциональной и императивной парадигм программирования в современные их реализации. Предлагается новый функционально-императивный язык программирования El, во многом похожий на функциональный язык Erlang, но отличающийся от него рядом особенностей. Приводится краткое описание лексики, синтаксиса и семантики языка El. Выделяются его основные отличительные черты и характеристики: чистые функции, функции первого и высшего порядка, анонимные функции, замыкания, перегрузка сигнатур функций, локальность сбора мусора, императивность выполнения операций в теле функции, высокоуровневые типы данных и операции над ними, вариативность статической и динамической типизации, а также иммутабельности переменных по выбору программиста, наличие примитивных и высокоуровневых типов данных и операций над ними, немногословность, простота и удобство управляющих конструкций, возможность явного определения циклов вместо более дорогостоящих рекурсивных вызовов функций, которые, впрочем, тоже можно использовать. Описывается типовая структура файла, содержащего программный модуль; приводится перечень и назначение его секций, определения функций, все виды управляющих операторов языка, сводка существенных отличительных характеристик языка. Описывается текущее состояние разработки и реализации транслятора программ с языка El для разных целевых платформ с использованием инфраструктуры компиляторов LLVM.
1. Себеста P. Основные концепции языков программирования. – М.: Вильямс, 2001.
2. Кауфман В.Ш. Языки программирования. Концепции и принципы. – М.: ДМК-Пресс, 2011. – 464 с.
3. Филд А., Харрисон П. Функциональное программирование. – М.: Мир, 1993. – 637 с.
4. Wadler P. Why no one uses functional languages // ACM SIGPLAN Notices. – 1998. – Vol. 33 (8). – P. 23–27.
5. Городняя Л.В. Парадигмальная декомпозиция определения языка программирования // Научный сервис в сети Интернет: труды XVIII Всероссийской научной конференции, (19–24 сентября 2016 г., г. Новороссийск). – М.: ИПМ им. М.В. Келдыша, 2016. – С. 115–127.
6. Davis A. What's new in Java 8: an unofficial guide [Electronic resource]. – May 7, 2014. – URL: https://leanpub.com/whatsnewinjava8/read (accessed: 21.03.2018).
7. Ахмечет В. Функциональное программирование для всех [Электронный ресурс] // RSDN Magazine. – 2006. – N 2. – URL: http://rsdn.org/article/funcprog/fp.xml (дата обращения: 21.03.2018).
8. Armstrong J. Programming Erlang: software for a concurrent world. – 2nd ed. – Dallas, Texas: The Pragmatic Bookshelf, 2013.
9. Чезарини Ф., Томпсон С. Программирование в Erlang. – М.: ДМК Пресс, 2012. – 487 с.
10. Десять решений проблемы stop the world при использовании автоматической сборки мусора [Электронный ресурс]. – URL: https://eax.me/stop-the-world/ (дата обращения: 21.03.2018).
11. Малявко А.А. Формальные языки и компиляторы: учебное пособие для вузов. – М.: Юрайт, 2017. – 429 с.
12. Малявко А.А. Использование веб-приложений и веб-технологий при разработке учебного программного обеспечения для изучения методов трансляции // Современное образование: технические университеты в модернизации экономики России: материалы Международной научно-методической конференции. – Томск: Изд-во ТУСУР, 2011. – С. 45–47.
13. Лопес Б, Аулер Р. LLVM: инфраструктура для разработки компиляторов. – М.: ДМК Пресс, 2015. – 342 с.
14. Сен А. Создание действующего компилятора с помощью инфраструктуры LLVM. Ч. 1 [Электронный ресурс]. – URL: https://www.ibm.com/developerworks/ru/library/os-createcompilerllvm1/index.html (дата обращения: 21.03.2018).
15. Сен А. Создание действующего компилятора с помощью инфраструктуры LLVM. Ч. 2 [Электронный ресурс]. – URL: https://www.ibm.com/developerworks/ru/library/os-createcompilerllvm2/index.html (дата обращения: 21.03.2018).
Малявко А.А. Функционально-императивный язык программирования El // Научный вестник НГТУ. – 2018. – № 1 (70). – С. 117–136. – doi: 10.17212/1814-1196-2018-1-117-136.
Maliavko A.А. Funktsional'no-imperativnyi yazyk programmirovaniya El [The functional-imperative programming language El]. Nauchnyi vestnik Novosibirskogo gosudarstvennogo tekhnicheskogo universiteta – Science bulletin of the Novosibirsk state technical university, 2018, no. 1 (70), pp. . doi: 117–136. doi: 10.17212/1814-1196-2018-1-117-136.