LINUX.ORG.RU

(PragmaticPerl) Выпуск 27

 


0

0

Выпуск 27

В этом номере:

  • От редактора, Вячеслав Тихановский.
  • Отладка приложений на AnyEvent, Владимир Леттиев.
    Отладка асинхронных приложений часто затруднена из-за нелинейного характера выполняемого кода, когда ошибки проявляются под нагрузкой или в каких-то исключительных трудновоспроизводимых ситуациях. Привычные инструменты могут быть неудобны и неинформативны. Если приложение построено на основе AnyEvent, то для него уже существуют готовые рецепты отладки.
  • Операторы Perl 6. Часть 1, Андрей Шитов.
    Обзор префиксных, постфиксных и инфиксных операторов Perl 6
  • Метаоператоры в Perl 6, Андрей Шитов.
    Рассмотрены доступные в языке метаоператоры — операторы, расширяющие синтаксические возможности языка, используя другие операторы
  • Обзор CPAN за апрель 2015 г., Владимир Леттиев.
    Рубрика с обзором интересных новинок CPAN за прошедший месяц.
  • Интервью с Сюзанной Шмидт , Вячеслав Тихановский.
    Сюзанна Шмидт (sushee) — политолог, которая стала Perl-программистом.
★★★★★

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

Ответ на: perl, php, python, ruby от RA

Python плюсы: батарейки,

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

Deleted
()

Pragmatic

Perl

/0

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

Чувак, возьми свои слова обратно! Ты не можешь этого знать наверняка!

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

давай придумаем реальную задачку, выкатим решения и сделаем бенчи. я давно (не так давно как та статья) делал парсер, и вариант на awk(gawk) сливал варианту на перле. Исходя из этого и утверждал. Однако интересно самому что да как сейчас.

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

В вашем любимом python private методы доступны снаружи!

class MyClass:
     def myPublicMethod(self):
             print 'public method'
     def __myPrivateMethod(self):
             print 'this is private!!'
obj = MyClass()

и

>>> obj._MyClass__myPrivateMethod()
this is private!!

Я подумывал о переходе с perl на скриптовый язык с хорошим ООП, но не нашел.

Python — от ООП в его ООП только название. Хочешь писать объектно-ориентированный код — придется так же делать через замыкания, как и в perl. Ну и нафига менять шило на мыло? Причем на весьма тормозное мыло с т.ч. работы с регэкспами.

Ruby — языка более кривого в плане обратной совместимости и тормозного в плане обработки текстов еще поискать надо.

PhP — обилие книг «PhP для идиотов», «PhP для дебилов», «PhP глазами мудака для мудаков» говорит само за себя. Несмотря на то, что сам по себе язык для множества задач весьма неплохо, но в приличном обществе лучше не говорить. что программируешь на нем.

...

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

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

soomrack ★★★★
()

В вашем любимом python private методы доступны снаружи!

Не первый раз вижу, что это упоминается как недостаток. Можно хоть один пример из жизни (не абстрактный), когда конвенции недостаточно при хорошей архитектуре?

Python — от ООП в его ООП только название. Хочешь писать объектно-ориентированный код — придется так же делать через замыкания, как и в perl.

Чиво?

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

Не так. Те, кто хочет делать мелкие проекты — путь делает их хоть на перле. А если проект грозит стать крупным, перл замкнет его на одном разработчике, да и то пока тот помнит, как вся эта хрень работает и почему.

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

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

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

осле вспомнить как работают соотв операторы
В Perl же все эти средства уже встроены в строку

И поэтому, вероятно, не надо помнить как они работают, я правильно понял?

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

в питоне нет «операторов» для re, там вызываются методы

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

Лол perlый код я вспомнил по памяти, хотя имел с ним дело лет 5 назад. Для Python кода нужно все таки в доки заглянуть, но помню что там нужно сначала использовать re.search для условия, а потом re.match для получения подстроки.

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

от хипстеров пользы никакой: они только переписывают, а не пишут новые либы.

+1

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

это по-вашему красиво? «=~ /.../» похоже на брейнфак. тот же питоновский re.match(my_pattern, test_string) с последующей проверкой результата - выглядит более просто, красиво и понятно.

и есть еще такой вопрос, что будет если задать $test = «123123», что попадет в переменную «$1»? выполнится ли команда print?

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

что будет если задать $test = «123123

вернётся пустая строка, "", false.

что попадет в переменную «$1»

это.

выполнится ли команда print?

нет.

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

что-то в этом есть

в общем я согласен с тем, что когда говорят руби имеют ввиду RoR. С моей колокольни очень сложно найти работу на руби без rоr. В том же питоне без веба, достаточно вакансий, хотя да, в остальных хотят Джангу.

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

это по-вашему красиво?

Это оператор связывания скаляра с шаблоном поиска, что такого? Его и использовать не надо, если необходимое значение хранится в $_

perl -e 'while(<>) {print if /^(.*)t/}'

и есть еще такой вопрос, что будет если задать $test = «123123», что попадет в переменную «$1»? выполнится ли команда print?

Пустая строка будет.

выполнится ли команда print?

нет

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

не в защиту руби

Хороший или плохой изык - дело вкуса и садомазохизма.

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

Мде, надо чаще обновлять странички, знал бы я тогда, что ответ уже написан :)

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

скорость в скриптовых не так важна

Программы пишутся не для машин, а для людей. Если пишешь скрипт/парсер/что угодно для себя, выбирай что душе ближе. Но есть ты в проекте, то тут в игру вступают другие правила. Например такие как простота поддержки. Дай новому челу в коменде фиксить перловый код, так его в дурку заберут через неделю ;-) В руби/питон с эти все гораздо лучше.

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

то есть перл ни для чего больше как парсинг тексов не годиться?

krasoffski
()
Ответ на: скорость в скриптовых не так важна от krasoffski

скорость в скриптовых не так важна

т.е. всё еще важна? :-D

Дай новому челу в коменде фиксить перловый код, так его в дурку заберут через неделю ;-) В руби/питон с эти все гораздо лучше.

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

Deleted
()
Ответ на: скорость в скриптовых не так важна от krasoffski

Дай новому челу в коменде фиксить перловый код, так его в дурку заберут через неделю ;-)

Если выучить пистон, то после можно ничего не учить. Это как с бейсика на яву :)

Норм. программер разберется и в коде, и в поставленной задаче. А дальше может либо наворачивать на перле, либо на чем-то более подходящим.

gh0stwizard ★★★★★
()
Ответ на: Мне вот интересно от krasoffski

не понял логики

нормальных иде нет

А что, 10 - 15 лет назад они были? Не было! Значит Perl всегда был мертв? IDE есть, Komodo IDE, например. Инструмент надо выбирать по целям проекта - где он и в каком окружении будет работать. И чем руби лучше? Наконец перестал тормозить? А еще?

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

это по-вашему красиво? «=~ /.../» похоже на брейнфак

Вы просто еще не привыкли к синтаксису. Он весьма лаконичен - удобен для набора. Вас же мозг не взрывается когда Вы видите фигурные скобки { } вместо паскакалевских begin end? Или тоже мучаетесь?

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

Слишком много лишних слов. Правильный вопрос ставится так: «А скажите, perl6 - уже?»

anonymous
()
Ответ на: скорость в скриптовых не так важна от krasoffski

Дай новому челу в коменде фиксить перловый код, так его в дурку заберут через неделю ;-)

Я поддерживал perl-код и пишу новый код уже давно, в дурку не забрали.

В руби/питон с эти все гораздо лучше.

Если субъективно, то - возможно. Но объективно все гораздо хуже. Есть ряд задач которые очень бестолково решаются на руби,питон,java,c# и подобных недоязыках. Это слишком топорные языки от отличии от Си, С++ и Perl. Поэтому я выбираю более совершенные инструменты, но я - это я. А про других говорят что «кому и кобыла - невеста» :-)

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

А скажите, perl6 - это уже компилирующий язык?

Кругом неосиляторство. Вы вероятно не в курсе, но perl5 тоже компилирующий, и при желании можно в файл сбросить скомпилированный образ. Но если вам и этого мало, то вероятно вам поможет perldoc B.

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

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

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

Хватит флейм разводить. У самого-то сколько лет программерства на одном/двух основных ЯП? Сколько лет опыта написания и поддержки более-менее серьезного ПО на других ЯП?

Нету идеального ЯП. Что касается перла, то имхо он где-то посредине после сишки, плюсов, явы. Среди интерпретаторов возглавляет пятёрку.

У вас какие-то есть факты, опыт, примеры из жизни, чтобы рассуждать дальше, чем «думаю, бла-бла-бла»?

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

Взять питон, руби, да тот же го, раст для которых активно пилят плагины для елипс/идеи. Про перл только новости о выходе журнала...

Идите гуглите, можно ли перл описать в BNF. Как выясните, то поймете почему клепают овердофига плагинов под другие ЯП, а под перл все нет и нет.

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

Идите гуглите, можно ли перл описать в BNF.

BNF - хорошо, но это не идеал. Очевидно же что нужно более совершенное решение.

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

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

padre: http://search.cpan.org/~plaven/Padre-1.00/

Eclipse: http://www.epic-ide.org/ http://code.google.com/p/perlipse/

Komodo: http://www.activestate.com/Products/komodo_ide/

vim: http://www.vim.org/scripts/script.php?script_id=556

emacs: http://www.emacswiki.org/cgi-bin/wiki/CPerlMode

На perl, си и с++ я пишу код без IDE (если вы думаете что невозможно без IDE поддерживать масштабные проекты, то я вам скажу что мне удается успешно разбираться в коде таких крупных проектов как Linux-ядро и интерпретатора perl5). Но на топорных Java, Ruby, Python, C#, VB я бы точно офигел писать без IDE код, это вообще недоязыки.

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

Отвечу на ваш коментарий, дабы больше не разводить флейм - это будет последний мой комент в этой теме.

У самого-то сколько лет программерства на одном/двух основных ЯП?

В общем не меньше 7+ лет. Начиная от FBD/Structured text заканчивая go, хотя последний пока только для себя. В проде нигде не использовался.

У вас какие-то есть факты, опыт, примеры из жизни, чтобы рассуждать дальше, чем «думаю, бла-бла-бла»?

Грубовато спросили, но отвечу. Я не хотел никого лично обижать, просто высказываю свое мнение, основанное на личном опыте. У вас опыт другой, следовательно и мнение другое. 1. Перл достойный язык, и у него есть (с моей стороны была) своя ниша. Но вот те программы, которые нужно было мне поддерживать году этак в 2007, были еще тем ужасом (обработка текста в одной интернет провайдер компании). После них я зарекся больше на перл не смотреть. Слишком много было неочевидного поведения для меня на тот момент + ужасный синтаксис (дело вкуса). Хотя да, как язык для написания *скриптов* (не проектов) в максимально сжатые сроки равных ему нет. 2. *Никто* из моих одногруппников (человек 30) не спользует перл сейчас. Хотя треть смотрела на питон/руби. Да и на работе перловиков человек 5-7 от силы (так как найти их еще та проблема).

3. Скажу так, есть тестовые задания для приема на работу. Задания можно выполнять на любом скриптовом языке, будь то перл/руби/питон. Как правило результаты шлют люди которые серьезно или вообще не использовали эти языки в проде ранее. Так вот из всех 30+ заданий, что я проверял, на перле было сделано только 2 или 3. Причем 2 из тех что делали на перле сделали и на python. Остальные не паряться и делают на питоне. Вопрос к вам, почему не перле? При вопросе у этих трех, на чем бы они хотели прогать в будущем только один ответил перл. Второй ответил что в перле разобаться со сколярам у него заняло почти столько же времени, сколько разобраться в питоне и выполнить задание на нем (питоне). Хотя оба языкуа для него были новые. До этого он прогал на с++/руби.

4. В лабах для студентов преподают руби а не перл, что тоже для меня показательно.

В мире энтерпраза, где нужно «ехать а не шашечки», перл сремительно теряет позиции.

Среди интерпретаторов возглавляет пятёрку.

Это улыбнуло. По какому рейтингу, если не секрет? Из того, что я нагуглил он далекооо не возглавляет пятерку скриптовых:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

http://lang-index.sourceforge.net/

http://jaxenter.com/the-top-20-programming-languages-the-githut-and-tiobe-ran...

http://langpop.com/

http://pypl.github.io/PYPL.html

Не флейма ради добавлю, что меня радует, что он уступает позиции таким языкам как питон/руби/го.

krasoffski
()
Ответ на: комментарий от Jopich
$test = "test"
if ( $test =~ /^(.*?)t/ ) {
    print $1;
}

Я бы написал это так:

($test = "test") =~ /^(.*?)t/ && print $1;

Но в вашем примере выражение /^(.*?)t/ сохранает в $1 минимально возможное "", возможно вы имели ввиду /^(.+?)t/o ?

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

Поздравляю с выбранным цветом фломастера.

С «умирает» согласен. Однако, умирает только в РФ/СНГ. Мониторьте jobs.perl.org время от времени (бывают затишья и всплески), записывайте названия контор и сравните с тем, что есть на рынке России/СНГ. И снова спросите себя, епрст, неужто у нас г-кодеры кругом? :)

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