Статья опубликована в рамках: XCI Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 22 сентября 2025 г.)
Наука: Информационные технологии
Секция: Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
Скачать книгу(-и): Сборник статей конференции
дипломов
ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ ТРАНСПАЙЛЕРА PYTHON → 11L → C++
В настоящее время всё большую популярность приобретает язык программирования Python (в мае 2025 года согласно рейтингу TIOBE [1] он обошёл по популярности языки С++ и Java и занимает первое место в этом рейтинге), в том числе при решении олимпиадных задач и задач по спортивному программированию.
При организации большинства соревнований и олимпиад по программированию (Международная студенческая олимпиада по программированию ICPC, соревнования по спортивному программированию Codeforces, международное соревнование по программированию Google Code Jam) используются автоматические проверяющие системы для организации соревнований по программированию. Во всех этих соревнованиях действует ограничение по времени выполнения программ. Например, в задаче «Значения, которые возможно набрать» с сайта Codeforces ограничение по времени на тест составляет 2 секунды [2] и при тестировании системой решения этой задачи на языке Python возникает ошибка «превышено ограничение времени», вследствие чего данную задачу необходимо решать на более высокопроизводительном языке программирования, например, на C++. В качестве альтернативного решения, чтобы не переписывать решённую задачу с языка Python на другой язык программирования, предлагается использовать данный транспайлер.
Компилятор — это компьютерная программа, которая транслирует другие компьютерные программы для их выполнения. [3, p. 1]
Транспайлер — это такой компилятор, который переводит код из одного языка программирования в эквивалентный код на другом языке программирования. [4]
Разработанный транспайлер переводит код на языке Python в код на новом языке программирования 11l [5], который впоследствии переводится в C++. Полученный код затем преобразуется в машинный код компилятором C++.
Следует отметить, что особенностью реализованного транспайлера является то, что он генерирует человекочитаемый код на C++, что упрощает отладку написанной программы.
Реализованный транспайлер поддерживает подмножество языка Python, достаточно большое для решения практически любых олимпиадных задач [6].
Фактически транспайлер Python → 11l → C++ состоит из двух транспайлеров:
1. Транспайлер Python → 11l, который переводит код на языке Python в код на новом языке программирования 11l.
2. Транспайлер 11l → C++, который переводит код на языке 11l в C++.
Разрабатываемый язык программирования 11l является языком общего назначения и сочетает в себе лучшие черты языков С++ и Python, и теоретически может быть использован в тех же областях, где применяются данные языки. Однако на данный момент стандартная библиотека языка не достаточно развита, что несколько ограничивает его область применения. Но уже сейчас новый язык может успешно применяться в следующих областях:
1. Работа с файлами (например, преобразование из одного формата данных в другой, анализ файлов с данными, анализ программного кода и пр.).
2. Скрипты для автоматизации каких-либо задач (в частности, для системного администрирования, для разработки систем автоматического тестирования и т.д.).
3. Решение олимпиадных задач и задач по спортивному программированию.
Ниже представлен программный код олимпиадной задачи «Простое число» на языке Python:
В Таблице 1 представлена эффективность кода, сгенерированного транспайлером Python → 11l → C++ на примере олимпиадной задачи «Простое число» с сайта олимпиадных задач по информатике «Информатикс» informatics.msk.ru Измерение времени работы кода выполнялось с помощью PowerShell.
В некотором смысле язык 11l выступает в роли промежуточного языка, но, так как он очень похож и близок к языку Python (правда семантически, а не синтаксически), то специально изучать его, в общем-то, не требуется.
Таблица 1.
Эффективность кода, сгенерированного транспайлером Python → 11l → C++ (На примере олимпиадной задачи «Простое число»)
Средство исполнения кода |
Время работы программы (для k = 1000000) |
CPython |
20 сек. |
Nuitka |
20 сек. |
Cython |
7.4 сек. |
PyPy |
2.7 сек. |
Shed Skin |
1.4 сек. |
Python → 11l → C++ |
0.73 сек. |
Таблица 2.
Преобразование файла формата RKM в WAV
В Таблице 2 в первом столбце представлен фрагмент кода на языке Python, который реализует преобразование файла формата RKM в WAV. Во втором столбце код на языке 11l автоматически сгенерирован транспайлером для этой же задачи. Стандартно язык Python запускается через интерпретатор эталонной реализации CPython. При запуске этого программного кода через транспайлер Python → 11l → C++ код выполняется быстрее. При измерении времени работы кода через PowerShell результат ускорения операции преобразования файла отмечается примерно в 20 раз.
Python предлагается использовать с транспайлером Python → 11l → C++. Данный транспайлер не поддерживает язык Python полностью, а потому необходимо учитывать особенности его работы при написании программного кода на языке Python, чтобы этот код корректно скомпилировался транспайлером Python → 11l → C++.
Список литературы:
- TIOBE Index | TIOBE - The Software Quality Company [Электронный ресурс]. – URL: https://www.tiobe.com/tiobe-index/
- Задача - 687C - Codeforces [Электронный ресурс]. – URL: https://codeforces.com/problemset/problem/687/C (дата обращения: 16.04.2021)
- Keith Cooper, Linda Torczon. Engineering: A Compiler (2nd Edition) — Morgan Kaufmann, USA, 2012. — 824 p.
- Транспайлер — Википедия [Электронный ресурс]. – URL: https://ru.wikipedia.org/wiki/Транспайлер (дата обращения: 16.04.2021)
- Третьяк А.В., Третьяк Е.В., Верещагина Е.А., Разработка когнитивно-эргономического синтаксиса для нового аппаратно-ориентированного языка программирования, журнал «Современная наука: актуальные проблемы теории и практики. Серия «Естественные и технические науки», №7, 2020 г. URL: http://www.nauteh-journal.ru/index.php/3/2020/%E2%84%9607/55621b40-88a4-4880-8385-a79c7fa6900d
- Третьяк А.В., Верещагина Е.А., Добржинский Ю.В., Захарченко Д.В. Использование транспайлера Python → 11l → C++ при решении олимпиадных задач по программированию, журнал «Современная наука: актуальные проблемы теории и практики». Серия «Естественные и технические науки», №7, 2021
дипломов
Оставить комментарий