LINUX.ORG.RU

Перенос кода Perl на Python

 ,


0

3

Несомненно, заложенная в архитектуру языка Perl гибкость привела к естественному накоплению кода, который технически работает, однако очень хрупок при изменениях и труден для понимания. Проблема может усложняться тем, что авторы кода уже недоступны, так как перешли на работу в другой отдел или компанию. Помимо этого, требования к вашему продукту могли поменяться, либо оказалось, что новая версия используемого вами API доступна только на Python. В этот момент начинается эпохальная работа по переносу кода Perl на Python. В данной статье вы познакомитесь с некоторыми теоретическими аспектами работы с унаследованным кодом, в том числе узнаете, чего делать не стоит.

>>> Подробности

Не стоит.. Переносить код с Perl на Python? :)

takino ★★★★★
()

Про невозможность восстановления идеи из кода.. Все зависит от структуры кода. Если писал идиот с раздутым ЧСВ, то комментариев там не будет, зато будут жуткие регекспы, коротко и непонятно решающие задачу. Если писал программист, то комментариев для восстановления идеи хватит даже без просмотра кода. Разницу между идиотом и программистом вычислите сами.

Абсолютно тот же результат можно получить на любом языке. На C++, который я в-основном использую, для усиления непонятности хорошо переопределить операторы, и помудрить с классами. При отсутствии комментариев сильно осложняет жизнь читателя :)

Мой шеф как-то написал data transformation на Perl, в один regexp. Этим он заменил пять или шесть строк моего кода. Проблема только в одном: мы вчетвером пытались понять, будет оно работать или нет. Когда запустили - работает. Шеф прикалывается, что я на перле пишу на C. Зато работает так же, и любой может понять - как. По скорости одинаково, кстати.

HappySquirrel
()

perl очень популярен в среде настоящих хэкеров, а они совсем не дураки, чтобы писать на всяком говне типа питона или явы.

anonymous
()
Ответ на: комментарий от HappySquirrel

>Мой шеф как-то написал data transformation на Perl, в один regexp

мы вчетвером пытались понять

Теперь ты понял, почему он - шеф, а вы - мелкие сошки?

anonymous
()

IBM - толстый троль. Не понимаю, как можно себя так не уважать, чтобы публиковать такие «заметки»... Всё, стухли «бизнес машины»? Такое ощущение, что год-два и их кто-то купит.

matumba ★★★★★
()
Ответ на: комментарий от Reset

> Ага, а когда речь заходит о многопоточности пейтон сливает в чистую.

Use multiprocessing, Luke! Вот тебе ссылочка: http://docs.python.org/library/multiprocessing.html - там и поддержка пулов и обмен данными между процессами. А треды в питоне стоит использовать только в задачах ограниченных скоростью ввода-вывода.

Кстати, а есть ли для перла асинхронные фреймворки типа питоновских gevent, tornado, twisted?

anti_social
()
Ответ на: комментарий от anti_social

Кстати, а есть ли для перла асинхронные фреймворки типа питоновских gevent, tornado, twisted?

use EV;

Reset ★★★★★
()
Ответ на: комментарий от anonymous

Кто сказал, что не читабельный?
Синтаксис позволяет писать красиво и читабельно - все зависит уже от автора.
А принудительно заставлять использовать пробелы, имхо, не хорошо. Тем более что и на python-е можно создать запутанный и не читабельный код, было бы желание.
Использовать его вместо паскаля для обучения детей - это да, за это полностью за.

anonymous
()
Ответ на: комментарий от x-term

не в питоне ли есть блокировки какие-то в многопоточности? о которых я наслышан, правда в реализациях поверх JVM и т.п. такой блокировки нету...

I-Love-Microsoft ★★★★★
()

Статья ни очём

Согласен с большинством. А почему соб-сно говоря перенос Perl->Python? Почему не Python->C? Видимо, аффтар только что изучил Python и от такой собственной мега-крутости решил осчастливить всех набором изречений из лексикона КО. По поводу Perl-а. Вполне себе хороший язык, не без изъяна, как и все. На мой взгяд, единственный его недостаток - это прикрученный через /dev/ass ООП.

yura-vn
()
Ответ на: комментарий от I-Love-Microsoft

Опять про GIL :) Про него лень даже писать, все есть в google. От него есть и плюсы и минусы. А вот как насчет потокобезопасности модулей? Perl и python без модулей бесполезны, если конечно вы не пишите hello world.

x-term ★★
()

У перла жуткий синтаксис. Те программисты которые провинились в этом мире, мучаются в аду. Черти заставляют их писать на перле! Питон же прикрасен по синтаксису!

firefoxlis
()
Ответ на: комментарий от x-term

ясно... но все же отсутствие нормального эффективного небольшого JIT-компилятора для питона делает меня грустным пингвинчиком (с) sp...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от firefoxlis

Те программисты которые провинились в этом мире, мучаются в аду. Черти заставляют их писать на перле!

Читать же, не писать. А черти пишут для них адские однострочнички.

anonymous
()
Ответ на: комментарий от anonymous

> А черти пишут для них адские однострочнички.

черти заставляют их читать собственные перлы. с выражением.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

ясно... но все же отсутствие нормального эффективного небольшого JIT-компилятора для питона делает меня грустным пингвинчиком (с) sp...

Обычно критичные к скорости выполнения фрагменты принято переписывать на C или Fortran.

Используйте pypy, если для вас это критично.

Vudod ★★★★★
()
Ответ на: Статья ни очём от yura-vn

> Статья ни очём

Согласен с большинством.

ты точно читал комментарии?

anonymous
()

Статья? Да это эссе, не более. Сылка «оригинал статьи» ведёт на 404. Фэйк.

SOmni ★★
()
Ответ на: Статья ни очём от yura-vn

>На мой взгяд, единственный его недостаток - это прикрученный через /dev/ass ООП.

Когда /dev/hands являются линком на /dev/ass любой ООП покажется недостатком. Вообще, перловский ООП также своебразен как в PHP, C++. Просто привыкать надо :)

gh0stwizard ★★★★★
()
Ответ на: комментарий от anonymous

> какому идиоту могла прийти идея о возможности переноса перлового кода на что-нибудь еще?

А что функционалом делать? Не о переносе, а о переписывании.

sv75 ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

> но все же отсутствие нормального эффективного небольшого JIT-компилятора для питона

Он видимо теоретически невозможен. То есть будет тот же интерпретатор %))

sv75 ★★★★★
()
Ответ на: комментарий от sv75

> А что функционалом делать?

тогда речь идет не о «переписывании перлового кода», а о реализации требуемого функционала на _подставить_нужное_. переписывать код - это маразм. да, я видел многих, кто писал на питоне так, как будто они все еще пишут на перле/пых-пых. тут уж, конечно, ничего не поделаешь - против природы ничего не сделаешь.

anonymous
()
Ответ на: комментарий от anonymous

> видел многих, кто писал на питоне так, как будто они все еще пишут на перле/пых-пых

это именно те люди, которых так бесят отступы, как элемент синтаксиса :)))

anonymous
()
Ответ на: комментарий от Reset

> Синтаксис зависящий от отсутпов это не синтаксис, а %уета. Кто-нибудь случайно вместо таба пробел или наоборот поставит и полдня дебага обеспечены.

Эмм на самом деле оно просто с ошибкой вылетит. Учите матчасть.

В перле есть изкоробочный xs

Да, именно он и есть говно жуткое.

Это в пейтоне только принято писать портянки с таблицами методов руками, а потом рукам заворачивать/разворачивать Py_Object в твои родные объекты.

Эх, дюрёвня. Погуглите vtypes, cython, swig, boost::python штоле.

yk4ever
()
Ответ на: комментарий от gh0stwizard

> Вообще, перловский ООП также своебразен как в PHP, C++. Просто привыкать надо :)

Нет, не надо. Похапе и перл надо просто выкинуть в мусорку, ввиду наличия ОЧЕВИДНО более хороших альтернатив в том же весе.

С крестами сложнее, они тоже жутки, но для многого незаменимы. Приходится терпеть.

yk4ever
()
Ответ на: комментарий от yk4ever

Эх, дюрёвня. Погуглите vtypes, cython, swig, boost::python штоле.

Я знаю про туеву хучу этих разнородных костылей.

Reset ★★★★★
()
Ответ на: комментарий от HappySquirrel

>Разницу между идиотом и программистом вычислите сами.

мы вчетвером пытались понять

ну и кто оказался идиотом? ;)

у нас практически каждый пишет на перле, как на... в результате все приходится переписывать тем, кто пишет на перле, как на перле

chg ★★★★★
()
Ответ на: комментарий от sv75

>> то есть скажем веб приложения на перле я надеюсь никто не пишет?

В 90-ые все писали.

Некоторые до сих пор пишут.

dave ★★★★★
()
Ответ на: комментарий от firefoxlis

Нет, не так. В раю пишут на перле, а в аду его читают.

ugoday ★★★★★
()

Дебильная статья. Необходимость переписывать код возникает только в одном случае - когда за 5 рублей программист на перле должен и программировать на перле, и сажать самолеты, и делать электропроводку. Платить надо людям нормально, а не выё***ться и тогда не надо будет нанимать поинэров за 1 рубль переписывать годами работающий код. Как говорится «если одна женщина родит ребенка за 9 месяцев, то 9 женщин сделают это за 1 месяц» - именно такая логика ПМ-ов ведет к потребности переписывать код с языка А на язык Б. Хорошо когда это наколенные скрипты - это реально переписать, а что посложнее, вот куй перепишешь. И дело тут не в write-only перле, а в том, что найти программитсов знакомых с предметной областью и найти людей которые поставят им ТЗ, это мля не фибоначчи на хаскеле вычислять, это денег стоит и денег немалых. Про это аффтор этой говёной статейки почему не пишет? КГ/АМ короче.

cathode
()
Ответ на: комментарий от cathode

>Дебильная статья. Необходимость переписывать код возникает только в одном случае - когда за 5 рублей программист на перле должен и программировать на перле, и сажать самолеты, и делать электропроводку. Платить надо людям нормально, а не выё***ться и тогда не надо будет нанимать поинэров за 1 рубль переписывать годами работающий код. Как говорится «если одна женщина родит ребенка за 9 месяцев, то 9 женщин сделают это за 1 месяц» - именно такая логика ПМ-ов ведет к потребности переписывать код с языка А на язык Б. Хорошо когда это наколенные скрипты - это реально переписать, а что посложнее, вот куй перепишешь. И дело тут не в write-only перле, а в том, что найти программитсов знакомых с предметной областью и найти людей которые поставят им ТЗ, это мля не фибоначчи на хаскеле вычислять, это денег стоит и денег немалых. Про это аффтор этой говёной статейки почему не пишет? КГ/АМ короче.

Это вообще не статья :) Так высер какой-то :)

anonymous
()

Зачем трогать то, что и так прекрасно работает? Новые проекты писать на более простом и понятном языке ещё есть смысл. А старые зачем трогать? И кстати Python ждёт великая миграция с 2.x на 3.x.Пока она не завершилась, нет смысла переносить какой-либо код на питон. А то потом прийдётся ещё раз повторять фокус с переносом с 2.x на 3.x, ведь они не совместимы... И есть же Ruby,Scheme и JavaScript. Не Python единным... Мне JS например больше нравиться, он простой как 2 копейки, и интуитивно понятный(всё-таки C-like синтаксис - великая вешь).

lucentcode ★★★★★
()
Ответ на: комментарий от lucentcode

Не обязательно трогать старые проекты что бы переносить код из языка в язык. Лет 8 назад потребовалось создавать отчеты в формате Word97 из утилиты на Python-е. Вариант через OLE тормозил, html Word97 не открывает, либ для работы с xls файлами напрямую для Python-а не было. Зато, были такие библиотеки Perl и Java. Мысль о вызове другого интерпретатора не понравилась и за пару дней был портирован Perl Spreadsheet::WriteExcel. ЗЫ: pyXLWriter вещь, конечно, сейчас бесполезная, но его довольно быстро растащили и сделали чисто Python-овские библиотеки :)

anonymous
()

Как самый умный в этом треде, я скажу, что менять шило на мыло смысла нет. Питон хорош для мелких проектов, а как начинают возникать вопросы с производительностью и деплоем на большую серверную ферму, тут петончек ложится, как пенис у испуганного школьника. Почитайте уже про java, в SUN были эксперты мирового класса в области хайлоад систем.

Всем чмоки и симпафки в этом треде, wbr, ваш Лелик.

anonymous
()
Ответ на: комментарий от YogSagot

и он уже пишет им статьи.
ничего, скоро разовьется и будет руководить всей фирмой :)

tazhate ★★★★★
()
Ответ на: комментарий от anonymous

Вот и я говорю, что менять одно на другое нет смысла. Работает проектик на Perl-пусть работает. А когда проект вырастает из пелёнок, все равно на Java переходить прийдётся(если это приложение десктопное, то возможен переход на C/C++/C# в зависимости от целей разработки). А Perl/Python/Ruby и компания идеальны для небольших проектов и быстрого создания прототипов будущих приложений, не более.

lucentcode ★★★★★
()

Четыре страницы каментов уже настрочили, а ни одного довода, за чем вообще переносить программы с перла на питон так и не прозвучало.

Таки зачем?

AVL2 ★★★★★
()
Ответ на: комментарий от tensai_cirno

> В мокрых снах, разве что.

Не бушуйте, юноша.

На language shootout Python 3 в большинстве тестов быстрее перла.

Перл - устаревшее никому не нужное гуно, которое живёт только за счёт кучи легаси-кода в недрах линупса плюс за счёт большого и толстого CPAN. Никаких собственных достоинств у него нету.

yk4ever
()
Ответ на: комментарий от AVL2

> Четыре страницы каментов уже настрочили, а ни одного довода, за чем вообще переносить программы с перла на питон так и не прозвучало.

Таки зачем?

Перл 1) весьма плох с инженерной точки зрения 2) умер

yk4ever
()
Ответ на: комментарий от router

> «я решил перенести код, почесал лесую пятку и подумал три мысли». К одной даже пример из шести строк кода, из которых 2 строки комментариев и один shabang

да на ibm dw все материалы такие

их видимо студенты за пиво им пишут

anonymous
()
Ответ на: комментарий от yk4ever

>language shootout

Python 3


Я же сказал, только не в мокрых снах.

tensai_cirno ★★★★★
()
Ответ на: комментарий от dotbg

> с много процессорностью у питона ещё не айс, правда, у перла не лучше :)

Что мешает на четырёх процессорной машине запустить 4 процесса на Питоне?

pythonist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.