Блог пользователя alextretyak

Автор alextretyak, история, 23 месяца назад, По-русски

Как известно, производительности эталонной реализации Python (CPython) и даже JIT-компилятора PyPy порой недостаточно для решения задач (решение не укладывается в ограничение по времени).

Представляю вашему вниманию транспайлер, который переводит Python-код в C++ таким образом, что производительность сгенерированного кода практически не уступает "ручной" реализации решения задачи на C++.

Вот ссылка на страницу проекта: https://11l-lang.org/transpiler/ru

Поддерживается не весь Python, а его подмножество, достаточное для решения практически любых задач по спортивному программированию (данный транспайлер был проверен на имеющихся решениях для более чем 500 задач на Codeforces различной сложности).

Недостатком проекта является существенное количество нюансов и особенностей, которые необходимо учитывать при написании программного кода на языке Python, чтобы он корректно скомпилировался данным транспайлером. Но я считаю, жить с этим можно. Не такая уж большая плата за возможность решать на Python те задачи, с которыми на данный момент справляются только C/C++ и другие компилируемые языки. (Большинство этих нюансов и особенностей перечислены в данном руководстве.)

Единственной альтернативой данному транспайлеру с сопоставимой скоростью является по сути только Cython, но там вообще приходится код практически переписывать, чтобы добиться сопоставимой производительности. А код решения задачи ‘Простое число’, приведенный на странице https://11l-lang.org/transpiler/ru, компилируется данным транспайлером как есть, в отличие от Cython.

Если наберётся достаточно большое количество участников Codeforces, поддерживающих данный проект, то не исключена возможность его добавления к поддерживаемым компиляторам в Codeforces [наряду с PyPy, который хоть и уступает данному транспайлеру в производительности, но обладает лучшей поддержкой Python].

Полный текст и комментарии »

  • Проголосовать: нравится
  • +55
  • Проголосовать: не нравится