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

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

Как известно, производительности эталонной реализации 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
  • Проголосовать: не нравится

»
18 месяцев назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

This is awesome! If it's refined more, the usage for python in CP might potentially increase waaaay more.

»
18 месяцев назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

wow, that is nice. I am willing to help. just tell me how I can help I already shared the post with my frindes

  • »
    »
    18 месяцев назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    You can make a collection of Codeforces problems, which can not be solved with Python (CPython and PyPy) because of exceeding time/memory limit, but can be solved with this transpiler.

    • »
      »
      »
      18 месяцев назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Ok I have encountered about 5 problems that gave me TLE and got accepted with c++. where should I put their links?

»
18 месяцев назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

It sounds great! If python can be faster, more users will like python!

»
14 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Ого! Я впечатлён! Обязательно попробую этим воспользоваться :D