Безопасность цифровых технологий

БЕЗОПАСНОСТЬ ЦИФРОВЫХ ТЕХНОЛОГИЙ

БЕЗОПАСНОСТЬ
ЦИФРОВЫХ ТЕХНОЛОГИЙ

English | Русский

Последний выпуск
№2(2025) Апрель - Июнь 2025

Компилятор с языка программирования EL: усовершенствование и развитие

Выпуск № 2 (101) Апрель - Июнь 2021
Авторы:

Зеленчук Никита Андреевич ,
Приставка Екатерина Дмитриевна ,
Малявко Александр Антонович ,
DOI: http://dx.doi.org/10.17212/2782-2230-2021-2-9-19
Аннотация

Реализация нового многопарадигменного (функционально-императивного) языка программирования El, разработанного на кафедре вычислительной техники Новосибирского государственного технического университета, в виде компилятора связана с необходимостью поиска способов решения ряда сложных проблем. Текущая версия компилятора лишь частично реализует функциональные возможности языка и генерирует далеко не оптимальные исполняемые коды. В настоящей работе рассматриваются задачи эффективной компиляции El-программы с учетом необходимости реализации новых высокоуровневых структур данных (двусторонние списки, векторы со специальными формами доступа и ряд других) и управляющих структур языка, которые позволяют единообразно определять циклические и ветвящиеся вычислительные процессы, а также заложенных в языке механизмов для явного управления изменчивостью переменных. Кратко рассмотрены задачи совершенствования и развития компилятора, организованного по классической мультиплатформенной схеме, в которой front-end (лексический, синтаксический и семантический анализаторы) преобразует транслируемую программу в псевдокод единого формата, а в качестве back-end, превращающего псевдокод в исполняемый код для разных платформ, используется эффективная инфраструктура построения компиляторов LLVM. Выполнение всех возможных операций над элементами высокоуровневых структур данных (списки, кортежи, векторы), а также над числами произвольной точности вынесено в библиотеку поддержки времени выполнения и, соответственно, может быть глубоко оптимизировано. Для этой структуры сформулированы намеченные пути решения задачи разработки и улучшения компилятора путем глубокого реформирования и оптимизации цепочки преобразований транслируемой программы, реализуемой front-end. На начальном этапе планируется реализовать новый компилятор для двух платформ: Linux и Windows.


Ключевые слова: язык программирования, программа, компилятор, стандартная библиотека, высокоуровневые структуры данных, вектор, список, кортеж, цепочка преобразований, постфиксная форма записи, псевдокод, LLVM
Зеленчук Никита Андреевич
Новосибирский государственный технический университет, лаборант кафедры вычислительной техники,
nikitazelenchuk@yandex.ru
Orcid: 0000-0001-5975-7276

Приставка Екатерина Дмитриевна
Новосибирский государственный технический университет, лаборант кафедры вычислительной техники,
pristavka_katya@mail.ru
Orcid: 0000-0001-9970-0055

Малявко Александр Антонович
кандидат технических наук, Новосибирский государственный технический университет, кандидат технических наук, доцент кафедры вычислительной техники,
a.malyavko@corp.nstu.ru
Orcid: 0000-0003-2672-7753

Список литературы

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).

Просмотров аннотации: 918
Скачиваний полного текста: 439
Просмотров интерактивной версии: 0
Для цитирования:

Зеленчук Н.А., Приставка Е.Д., Малявко А.А. Компилятор с языка программирования EL: усовершенствование и развитие // Безопасность цифровых технологий. – 2021. – № 2 (101). – С. 9–19. – DOI: 10.17212/2782-2230-2021-2-9-19.

For citation:

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.