Почему невозможно создать практический конвертер исходного кода Perl в Python? - PullRequest
4 голосов
/ 03 августа 2010

Было бы неплохо, если бы существовала программа, которая автоматически преобразует код Perl в код Python, делая результирующую программу Python такой же читаемой и поддерживаемой, как исходная, не говоря уже о том, чтобы работать так же.

Наиболее очевидное решение - просто вызвать perl через утилиты Python:

#!/usr/bin/python
os.exec("tail -n -2 "+__file__+" | perl -")
...the rest of file is the original perl program...

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

Такое преобразование, очевидно, очень сложно. Твердость преобразования зависит от количества возможностей Perl и синтаксических конструкций, которые не имеют легко читаемых, неоспоримых эквивалентов Python. Я считаю, что большое количество таких функций делает такое автоматическое преобразование невозможным практически (в то время как существует теоретическая возможность).

Итак, не могли бы вы назвать идиомы и синтаксические возможности Perl, которые не могут быть выражены в Python, такими же краткими, как в исходном коде Perl?

Редактировать : некоторые люди связывали инициаторы Python-to-Perl и на этой основе выводили, что также должно быть легко писать Perl-to-Python. Тем не менее, я уверен, что преобразование в Python требует большего спроса; до сих пор этот конвертер еще не написан - пока обратное уже было! Что только укрепляет мою уверенность в невозможности написания хорошего конвертера для Python.

Ответы [ 11 ]

0 голосов
/ 03 августа 2010

NullUserException в основном суммировал его - это, безусловно, можно сделать; это было бы просто огромное усилие, чтобы сделать это. Некоторые утилиты преобразования языков, которые я видел, компилируются на промежуточный язык (например, CIL .NET), а затем декомпилируют его на нужный язык. Я не видел ни одного для Perl в Python. Однако вы можете найти конвертер Python в Perl здесь , хотя он вряд ли пригодится вам, если вы не попытаетесь создать свой собственный, и в этом случае он может дать полезную ссылку.

Редактировать: если вам просто нужна точная функциональность в скрипте Python, PyPerl может вам пригодиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...