АНАЛІЗ ІНСТРУМЕНТІВ МЕТАПРОГРАМУВАННЯ В МОВАХ ПРОГРАМУВАННЯ ЗАГАЛЬНОГО ПРИЗНАЧЕННЯ

Автор(и)

  • Павло Ставицький Вінницький національний технічний університет
  • Вікторія Войтко Вінницький національний технічний університет
  • Олександр Романюк Вінницький національний технічний університет

DOI:

https://doi.org/10.31649/1999-9941-2022-55-3-44-50

Ключові слова:

метапрограмування, генерування коду, директиви препроцесора, макроси, Java, Kotlin, C, C , MetaOCaml, Scala, цитування, зрощування

Анотація

Розглянуто та проаналізовано сучасні методи метапрограмування, що використовуються у мовах загального призначення. Підхід метапрограмування використовується для багатьох сценаріїв роботи з кодом програм, важливим серед них є генерування вихідного коду. Кожна мова програмування включає окремий набір інструментарію для вирішення завдань метапрограмування. Одним з методів метапрограмування є побудова процесорів анотацій, проте тут не визначаються особливості генерування коду. Іншим методом є побудова плагінів компіляторів, що є можливим у мовах програмування типу Kotlin. Інтерфейс плагінів може надавати доступ до багатьох стадій компіляції програм, проте їх недоліком є підвищена складність програм, що значно впливає на швидкість розробки й на швидкодію роботи результуючого програмного забезпечення. Технології типу KotlinPoet та JavaPoet дозволяють генерувати текст вихідних програм з частковим дотриманням безпечної типізації на рівні інструкцій. Недоліком таких технологій є значна відмінність коду програми, що виконує генерування, від вихідного згенерованого коду, що підвищує складність роботи з цим інструментом та загальне когнітивне навантаження. На противагу їм можна використовувати рядки з механізмом інтерполяції, що забезпечують декларативність, проте тут відсутня валідація типів. Мови програмування типу MetaOCaml, Scala реалізують механізми метапрограмування й багатоетапного програмування, зокрема, на рівні синтаксису з використанням конструкцій цитування і зрощування та механізмів вбудовування і макросів. Макроси присутні також у мовах С та С++, вони за допомогою директив препроцесора дозволяють виконувати попереднє перетворення коду перед основною стадією компіляції. Коректне поєднання елементів метапрограмування дозволить створити універсальний підхід до використання функціоналу декларативного метапрограмування, що надасть потужний інструментарій для масштабування обсягів генерованого коду і підвищить якість кінцевого програмного продукту.

Біографії авторів

Павло Ставицький, Вінницький національний технічний університет

аспірант кафедри програмного забезпечення

Вікторія Войтко, Вінницький національний технічний університет

кандидат технічних наук, доцент кафедри програмного забезпечення

Олександр Романюк, Вінницький національний технічний університет

доктор технічних наук, професор, завідувач кафедри програмного забезпечення

Посилання

Juárez-Martínez, Ulises and José Oscar Olmedo-Aguirre, Annotation Processing as Local Variable Crosscutting. 2008.

Grégory Lureau, Ktlint: a great 1st experience. 2020. [Online]. Available: https://www.glureau.com/2020/05/26/Ktlint-Moshi-Introduction/. Accessed on: Sept. 4, 2022.

Theodoros Theodoridis, Tobias Grosser, and Zhendong Su. “Understanding and exploiting optimal function inlining,” 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '22) (2022). Association for Computing Machinery, New York, NY, USA, 977–989.

Medeiros, Flávio M., Márcio Ribeiro, Rohit Gheyi, Sven Apel, Christian Kästner, Bruno Ferreira, Luiz Carvalho and Baldoino Fonseca, “Discipline Matters: Refactoring of Preprocessor Directives in the #ifdef Hell,” IEEE Transactions on Software Engineering, 44 (2018), рр. 453-469.

Oleg Kiselyov, “The Design and Implementation of BER MetaOCaml − System Description,” FLOPS (2014).

Pouya Larjani, “On Meta Programming and Code Generation in F#,” 2010/4/2.

##submission.downloads##

Переглядів анотації: 84

Опубліковано

2022-11-02

Як цитувати

[1]
П. Ставицький, В. Войтко, і О. Романюк, «АНАЛІЗ ІНСТРУМЕНТІВ МЕТАПРОГРАМУВАННЯ В МОВАХ ПРОГРАМУВАННЯ ЗАГАЛЬНОГО ПРИЗНАЧЕННЯ», ІТКІ, вип. 55, вип. 3, с. 44–50, Лис 2022.

Номер

Розділ

Інформаційні технології та теорія кодування

Метрики

Завантаження

Дані завантаження ще не доступні.

Статті цього автора (авторів), які найбільше читають