Реализация нового многопарадигменного (функционально-императивного) языка программирования El, разработанного на кафедре вычислительной техники Новосибирского государственного технического университета, в виде компилятора связана с необходимостью поиска способов решения ряда сложных проблем. Текущая версия компилятора лишь частично реализует функциональные возможности языка и генерирует далеко не оптимальные исполняемые коды. В настоящей работе рассматриваются задачи эффективной компиляции El-программы с учетом необходимости реализации новых высокоуровневых структур данных (двусторонние списки, векторы со специальными формами доступа и ряд других) и управляющих структур языка, которые позволяют единообразно определять циклические и ветвящиеся вычислительные процессы, а также заложенных в языке механизмов для явного управления изменчивостью переменных. Кратко рассмотрены задачи совершенствования и развития компилятора, организованного по классической мультиплатформенной схеме, в которой front-end (лексический, синтаксический и семантический анализаторы) преобразует транслируемую программу в псевдокод единого формата, а в качестве back-end, превращающего псевдокод в исполняемый код для разных платформ, используется эффективная инфраструктура построения компиляторов LLVM. Выполнение всех возможных операций над элементами высокоуровневых структур данных (списки, кортежи, векторы), а также над числами произвольной точности вынесено в библиотеку поддержки времени выполнения и, соответственно, может быть глубоко оптимизировано. Для этой структуры сформулированы намеченные пути решения задачи разработки и улучшения компилятора путем глубокого реформирования и оптимизации цепочки преобразований транслируемой программы, реализуемой front-end. На начальном этапе планируется реализовать новый компилятор для двух платформ: Linux и Windows.
1. Себеста Р.В. Основные концепции языков программирования: пер с англ. – 5-е изд. – М.: Вильямс, 2001. – 672 с.
2. Малявко А.А. Функционально-императивный язык программирования El // Научный вестник НГТУ. – 2018. – № 1 (70). – С. 117–136. – DOI: 10.17212/1814-1196-2018-1-117-136.
3. Чезарини Ф., Томпсон С. Программирование в Erlang. – М.: ДМК Пресс, 2012. – 488 с.
4. Компиляторы: принципы, технологии и инструментарий: пер. с англ. / А.В. Ахо, М.С. Лам, Р. Сети, Д.Д. Ульман. – 2-е изд. – М.: Вильямс, 2008. – 1184 с.
5. C++ Programming Language: website. – URL: https://devdocs.io/cpp/ (accessed: 28.05.2021).
6. Малявко А.А. Использование веб-приложений и веб-технологий при разработке учебного программного обеспечения для изучения методов трансляции // Современное образование: технические университеты в модернизации экономики России: материалы Международной научно-методической конференции, 27–28 января 2011 года. – Томск: ТУСУР, 2011. – С. 45–46.
7. CLion: web-сайт. – URL: https://www.jetbrains.com/ru-ru/clion/ (дата обращения: 28.05.2021).
8. Лопес Б.К., Аулер Р. LLVM: инфраструктура для разработки компиляторов. – М.: ДМК Пресс, 2015. – 342 с.
9. GCC online documentation: web-сайт. – URL: https://gcc.gnu.org/onlinedocs/ (accessed: 28.05.2021).
10. Хантер Р. Проектирование и конструирование компиляторов: пер. с англ. / предисл. В.М. Савинкова. – М.: Финансы и статистика, 1984. – 232 с.
11. LLVM Language Reference Manual: web-сайт. – URL: https://llvm.org/docs/LangRef.html (дата обращения 05.03.2021).
12. Ахо А.В., Хопкрофт Д., Ульман Д.Д. Структуры данных и алгоритмы. – М.: Вильямс, 2000. – 384 с.
13. Володин А.М., Дрождин В.В. Разнообразие структур данных // Известия ПГПУ им. В.Г. Белинского. – 2009. – № 13 (17). – С. 79–83.
14. Структура данных – вектор: web-сайт. – URL: https://russianblogs.com/article/11141566726/ (дата обращения: 28.05.2021).
15. Кортежи. – URL: https://lawbooks.news/programmirovanie_964/korteji-68448.html (дата обращения: 28.05.2021).
16. Структуры данных. – URL: http://www.realcoding.net/articles/struktury-dannykh.html (дата обращения: 28.05.2021).
Зеленчук Н.А., Приставка Е.Д., Малявко А.А. Компилятор с языка программирования EL: усовершенствование и развитие // Безопасность цифровых технологий. – 2021. – № 2 (101). – С. 9–19. – DOI: 10.17212/2782-2230-2021-2-9-19.
Zelenchuk N.А., Pristavka Е.D., Maliavko А.A. Kompilyator s yazyka programmirovaniya EL: usovershenstvovanie i razvitie [Compiler from El programing language: improvement and development]. Bezopasnost' tsifrovykh tekhnologii = Digital technology security, 2021, no. 2 (101), pp. 9–19. DOI: 10.17212/2782-2230-2021-2-9-19.