LINUX.ORG.RU

Есть строкодробилка на замену Перлу?

 , , ,


1

10

Добрый день, ЛОР.

Шёл 2018 год. И некоторые (в т.ч. на ЛОРе) считают, что Перл мёртв.

А что вы можете посоветовать более современное и удобное для задач обработки строк и текстовых файлов? Стоит ли смотреть в сторону Питона, например? Мне показалось, что он более многословен и менее заточен под такие задачи, но могу ошибаться. Сравнением быстродействия применительно к строкообработке кто-нибудь занимался?

Upd: может быть, есть альтернативы, сравнимые по лаконичности, но не настолько write-only, как Перл? Ибо в комментариях правильно подметили особенность

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

★★★★★

Последнее исправление: hobbit (всего исправлений: 5)

Если скрипт не одноразовый, то конечно питон.

RazrFalcon ★★★★★
()

Тебя волнует мнение лоровских аналитиков? Нет, не мёртв, изкоробки во всех дистрах. Что еще надо? Я использую руби почти для всех сабжевых задач просто по фану, перл для скриптов в сотню строк не более.

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

Я использую руби почти для всех сабжевых задач просто по фану

А в руби есть что-то, что делает его для «сабжевых задач» удобнее перла? Или фан — единственная причина?

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

Не знаю насколько оно удобнее, кому как. Руби как язык приятнее, имхо. Перл - это такой awk-переросток (что иногда как раз и требуется).

bread
()
Последнее исправление: bread (всего исправлений: 1)

Все умрут, а AWK останется. Язык развивается, для текста хорош. Последний релиз от 25.02.2018г. Но а так да, регекспы есть везде.

Deleted
()

Мы у себя Python используем, но у нас вопрос скорости остро не стоит, поэтому не мерили кто быстрей.

sambo ★★
()

Some people, when confronted with a problem, think «I know, I'll use regular expressions.» Now they have two problems.

anonymous
()

У питона приятнее синтаксис, чем у перла, на котором легко и непринужденно можно писать такое, что потом месяц будешь вспоминать и пытаться понять что это и как оно работает. Скорость ХЗ. Если критична условный скрипт на C будет быстрее, если грамотно сделать.

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

перла, на котором легко и непринужденно можно писать такое, что потом месяц будешь вспоминать и пытаться понять что это и как оно работает

Да, есть такое. Тоже в свои старые скрипты подолгу пялюсь.

Это одна из причин, по которым ищу альтернативы (забыл это в ОП указать).

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

Но а так да, регекспы есть везде.

Золотые слова. Если вообще не напрягаться, можно и на QtCore налабать программу, целиком состоящую из вызовов методов QFile, QRegExp и QTextCodec. И будет работать, даже довольно эффективно - вот только код получится ну очень громозкий, много воды, суть ускользает.

hobbit ★★★★★
() автор топика

11 лет пишу кровавый ынтырпрайз на Perl. Переползаю на Python и не вижу проблем, вполне годная замена.

Если критична скорость, то лучше самому все измерять на своих use cases.

outtaspace ★★★
()

Долго писал на perl. Потом по инерции одноразовую скриптоту и всякие микро-проектные утилиты. Но в результате для всего этого перекатился на ruby.

Чище синтаксис, попроще инструменты, больше удобных методов.

Иногда только 4fun пишу одноразовые подделки и почти всегда однострочники вместо sed, awk и прочего.

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

anonymous
()

Ну обычно быстрота распределяется примерно так: си < ш < всё остальное < питон < раби-перл < авк, но зависит от того как и что писать и где сравнивать. Ещё сейчас luajit очень популярен для скриптов. В общем, смотри что больше нравится, если просто хочется приключений бери какой-нибудь https://crystal-lang.org/.

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

Быстрота чего? Реализации строк и регекспов? Тут могут быть самые неожиданные результаты. Хотя все это до лампочки пока у тебя скрипт отрабатывает за несколько секунд. Я бы скорей задумался над стабильностью, чтобы написанное не развалилось через пару лет. Тут решает перл, всё остальное недостаточно окаменело.

bread
()

Ruby считается оч.хорошим для этих целей, даже книжонка есть на эту тему «Text Processing with Ruby»(легко гуглится)

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

Разница будет очень заметна, когда этот скрипт запускается несколько тысяч раз за секунду. Сишный успеет, питоновый уже нет. Хотя в питоне регулярки сишные и достаточно быстрые. Конечно у каждой библиотеки регекспов свои достоинства и недостатки.

стабильностью, чтобы написанное не развалилось через пару лет

Если на уровне обработки строк, то у меня есть скрипты для 3 питона, написанные 10 лет назад, которые работают и сегодня и вероятно будут в будущем, так же есть скрипты написанные раньше, которые работают и сегодня со вторым питоном. Наверняка даже можно почти безболезненно использовать 2to3, но в 3 питоне наконец нормальные строки появились и я не могу гарантировать что все хаки из 2 будут работать. Ну и потом, тривиальные исправления не страшны.

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

anonymous
()

Поставил я себе как-то задачу, написать парсер для выхлопа данных роутеров на скриптоте. Питон разумеется, отбросил первым. Третий стал ещё многословнее чем второй. Эдакая микрожабка. Выбор был между руби и перлом. Перл выиграл из за наличия более качественных библиотек (не пришлось писать коннекторы, парсеры вывода и тп) и отличной документации. В стандартной руби библиотеке не описаны юз кейсы многих опций, нет примеров. Написал за неделю прототип. Потом шлифовал и документировал в свободное время, это уже было не к спеху. В общем, уже не первый раз смотрю что можно взять вместо перла, и вижу только перл6.

Deleted
()

А что вы можете посоветовать более современное и удобное для задач обработки строк и текстовых файлов?

Что ты имеешь в виду под «современным», я не знаю. А в остальном, как и 30 лет назад, комплект из shell / sed / awk / grep и прочих UNIX-way утилит весьма удобен для задач обработки строк и текстовых файлов. Полный список утилит можно глянуть в стандарте POSIX.

сравнимые по лаконичности, но не настолько write-only, как Перл?

Чем больше лаконичности, тем более write-only, очевидно же.

И на перле можно писать не write-only код, если не стремиться к предельной лаконичности.

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

И на перле можно писать не write-only код, если не стремиться к предельной лаконичности.

Если язык позволяет писать w/o, то 99.9% программистов так и будут писать в итоге :D



По сабжу, строки в Питоне не должны быть медленнее, чем в Перле. Питон, вообще, в целом, сильно быстрее. Вот в чём Perl рулит по сравнению с альтернативами, очень быстрым стартапом. Т.е. если дёргать в bash-цикле вызов скрипта, то Perl рулит. Python стартует заметно медленнее.

Ну и если скорость нужна (при управлении памятью), то Golang рулит :)

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

Если язык позволяет писать w/o, то 99.9% программистов так и будут писать в итоге :D

Ну так то 99.9%, а то hobbit. :D

Я, в последние годы, даже микро-скрипты для себя стараюсь писать с учётом того, что через пару лет мне захочется их прочитать и понять. Да что там скрипты, даже конфиги. Глупо создавать самому себе трудности, если подумать.

Но, с таким подходом, я, наверное, никогда не смогу работать в каком-нибудь энтерпрайзе.

Кстати, оффтоп: родилась мысль, что единственный разумный способ, которым можно использовать код джунов — это прочитать и переписать. Ну и отдать джуну на изучение переписанный код потом, чтобы он когда-нибудь перестал быть джуном.

anonymous
()

CL-PPCRE - превосходит по скорости перл в 40 раз, поскольку на стадии компиляции преобразует регесп в парсер.

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

Но, с таким подходом, я, наверное, никогда не смогу работать в каком-нибудь энтерпрайзе.

Вот поэтому там и приживаются языки, пусть и невыразительные, но на которых сложнее писать криво, от Java до Golang. Хотя, вот, JS тоже удивительно прижился, а он ещё более w/o, чем Perl :D

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

Не мёртв, а стабилен. :-)

стабильно лежачь, тогда уж :D

PexuOne
()

Тексты удобно обрабатывать в R.

anonymous
()

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

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

Питон разумеется, отбросил первым. Третий стал ещё многословнее чем второй. Эдакая микрожабка

у тебя какой-то неправильный питон

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

у тебя какой-то неправильный питон

Да нет, всё верно. Питон, жаба, голанг, кобол — это всё языки, хорошо подходящие для того, чтобы отдать писать код полуграмотному индусу за миску риса. Результат получится многословен и невыразителен, но зато его можно будет прочитать, понять и поправить, при необходимости.

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

строки в Питоне не должны быть медленнее, чем в Перле

я гарантирую, реализация строк в питоне - полное г

MyTrooName ★★★★★
()
Ответ на: яп R от sqq

R для вычислений.

peregrine ★★★★★
()

Ответ: Python 3. Во-первых, предсказуемое поведение, в том числе и для win32. Во-вторых, целая куча живых и поддерживаемых модулей на все случаи жизни.

Впрочем, если соблюдать Perl Best Practices и пользовать Perl::Critic, то write-only код у тебя просто не получится писать.

По лаконичности - замены нет.

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

3.6. Какой правильный?

3.6 - неправильный. правильный - 3.6

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

так же есть скрипты написанные раньше, которые работают и сегодня со вторым питоном

Недолго им осталось. Начинай уже сейчас переписывать.

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