А.В. Желудков1, С.Г. Григорьев2
1, 2 Московский финансово-юридический университет МФЮА (Москва, Россия)
1 zhantonv@gmail.com, 2 grigorsg@yandex.ru
Постановка проблемы. В настоящее время известно более 250 языков программирования, которые появились в результате эволюции компьютерных технологий, вызовов, стоящих перед разработчиками, и требований к эффективности и удобству, предъявляемых к написанному программному обеспечению. Каждый новый язык создается с целью решения конкретных задач или преодоления недостатков предыдущих языков. Выбор языка программирования – сложный и нетривиальный вопрос, влияющий на успех проекта. В данной работе предлагается подход, при котором части программного обеспечения можно писать на различных языках программирования и затем автоматизированно перевести их на целевой язык. Существующие решения предлагают или ограниченный набор поддерживаемых языков без явной последовательности действий к их расширению, или получаемый результат требует дополнительных существенных затрат на проверку его работоспособности.
Цель. Создать алгоритм трансляции текста программы, реализованного на различных языках, в единый формат с помощью метода универсальных конкретных синтаксических деревьев и глобального языка программирования, обеспечивающих целостность получаемых результатов.
Результаты. Представлен алгоритм, позволяющий создавать модули программы на наиболее подходящих для этого языках программирования с получением итогового результата на выбранном целевом языке с помощью метода универсальных конкретных синтаксических деревьев и с использованием глобального языка программирования. Приведен пример работы данного алгоритма, где часть исходного текста реализована на Java, а остальная логика – на Prolog. Показаны преимущества использования предложенного подхода: уменьшение времени разработки ПО; решение проблемы выбора языка программирования и стимулирование развития специализированных языков, таких как Prolog.
Практическая значимость. Разработанный алгоритм позволяет совмещать преимущества различных языков программирования в рамках одного продукта путем реализации на них наиболее подходящих блоков кода и трансляции результата к целевому языку с помощью метода универсальных конкретных синтаксических деревьев и глобального языка программирования, обеспечивающих целостность получаемых результатов.
Желудков А.В., Григорьев С.Г. Подход к интеграции языков программирования в рамках одного проекта с использованием глобального языка // Нейрокомпьютеры: разработка, применение. 2025. Т. 27. № 1. С. 56–65. DOI: https://doi.org/10.18127/ j19998554-202501-05
- TIOBE programming community index definition [Электронный ресурс] / URL: https://www.tiobe.com/tiobe-index/programminglanguages_definition/ (дата обращения: 14.12.2024).
- Захаров В.Б., Мальковский М.Г., Мостяев А.И. Проблемы выбора языков программирования при разработке кросс-платформенных приложений // International Journal of Open Information Technologies. 2017. № 7. С. 29–37.
- Григорьев С.Г., Желудков А.В. Глобальный язык как квинтэссенция изоморфизма языков программирования // Современная наука: актуальные проблемы теории и практики. Серия «Естественные и технические науки». 2024. № 1–2. С. 20–28 [Электронный ресурс] / URL: http://www.nauteh-journal.ru/files/04e150c0-5c5b-4d1d-b0e6-725a08954cf5 (дата обращения: 14.12.2024).
- Желудков А.В. Разработка глобального языка программирования с помощью метода универсальных ксд-деревьев // Сб. материалов III региональной с всероссийским участием молодежной науч. конф. «Физико-математические, естественно-научные и социальные аспекты современного развития науки, техники и общества». Казань, 26 мая 2023 г. Казань: ИП Сагиев А.Р. 2023. С. 31–35.
- Грачев Д.А., Лаптев В.В. Разработка многоязыкового редактора на основе семантической модели программы // Вестник АГТУ. Серия: Управление, вычислительная техника и информатика. 2013. С. 191–201.
- Язык программирования Haxe [Электронный ресурс] / URL: URL: https://www.swi-prolog.org/ (дата обращения: 14.12.2024).
- Almeida A., Xavier L., Valente M.T. Automatic library migration using large language models: First results // International Symposium on Empirical Software Engineering and Measurement. Barcelona, Spain. 2024. DOI: 10.1145/3674805.3690746.
- GPT-Migrate [Электронный ресурс] / URL: https://github.com/joshpxyne/gpt-migrate (дата обращения: 14.12.2024).
- Banzhaf W., Nordin P., Keller R.E., Francone F.D. Genetic programming: An introduction on the automatic evolution of computer programs and its applications. San Francisco: Morgan Kaufmann. 1998.
- Turing completeness [Электронный ресурс] / URL: https://www.cs.odu.edu/~zeil/cs390/latest/Public/turing-complete/index.html (дата обращения: 14.12.2024).
- Sherron W. Methods for demonstrating Turing completeness of a programming language [Электронный ресурс] / URL: https://copyprogramming.com/howto/how-to-prove-a-programming-language-is-turing-complete (дата обращения: 14.12.2024).
- Желудков А.В. Условный оператор в глобальном языке программирования // Сб. науч. статей аспирантов «Современные методы и технологии управления, программирования и обработки данных». М.: МФЮА. 2023. С. 50–54.
- Желудков А.В. Глобальный язык программирования как промежуточное звено для трансформации кода между любыми языками // Современное программное обеспечение, математическое моделирование и обеспечение информационной безопасности в компьютерных системах и комплексах. М.: МФЮА. 2024. С. 23–30.
- Серебряков В.А., Галочкин М.П., Гончар Д.Р., Фуругян М.Г. Теория и реализация языков программирования. М.: МЗ-Пресс. 2006.
- Allgower E.L., Schmidt P.H. Computing volumes of polyhedra // Mathematics of Computation. 1986. V. 46. № 173. P. 171–174.
- Schildt H. Java: The complete reference. 12th Ed. New York: McGraw-Hill Education. 2021.
- Swi-prolog [Электронный ресурс] / URL: https://www.swi-prolog.org/ (дата обращения: 14.12.2024).
- Bramer M. Logic programming with Prolog. Springer. 2005.
- Вахитов Р.Х. Пролог Д: Учебная система – интерпретатор // Сб. материалов XV Всеросс. науч.-практич. конф. «Информационные технологии в образовательном процессе вуза и школы» [Электронный ресурс] / URL: https://informatika-vrn.ru/wp-content/uploads/2021/04/sbornikIT_2021.pdf (дата обращения: 14.12.2024).
- Григорьев С.Г., Алексеев М.Н. Программирование в системе Пролог-Д (MS-DOS, MS Windows95/NT). Миасс: Гео-тур. 2007.
- Григорьев С.Г., Уртминцев А.Г. Язык программирования Пролог-Д // Каталог ВДНХ СССР. М. 1988.
- Григорьев С.Г., Уртминцев А.Г. Пролог-Д и учебные экспертные системы // Всесоюзный семинар «ПЭВМ в учебном процессе». М.: ИПИАН СССР. 1989.
- Рзун И.Г., Казначеева Е.А. Проблемы становления отечественных языков программирования // ЕГИ. 2014. № 2(4). С. 12–17.
- Пирогов А.А., Акишкин Р.М., Гончаренко И.В., Семка Э.В., Турецкая Е.В. Реализация цифрового фильтра Баттерворта с использованием библиотек языка программирования Python // Радиотехника. 2023. Т. 87. № 8. С. 54–58. DOI: https://doi.org/ 10.18127/j00338486-202308-09.

