LINUX.ORG.RU

Perl 5.18

 ,


0

4

Сегодня 05.18 состоялся релиз Perl 5.18. Разработка заняла год с момента выпуска предыдущей стабильной версии, при участии 113 авторов.
Из видимых изменений можно отметить следующие:

  • Новый механизм для экспериментальных возможностей (features)
    Начиная с этого выпуска при использовании какой-либо экспериментальной возможности будет выдаваться предупреждение, избавиться от которого можно с помощью стандартного механизма «no warnings» (для чего была добавлена категория experimental)
    no warnings "experimental::feature_name";
    Также стоит отметить, что некоторые из уже привычных возможностей были перенесены в категорию экспериментальных, например оператор smartmatch. Полный список экспериментальных возможностей можно посмотреть в perlexperiment
  • Более строгая рандомизация хешей
    Отдельное внимание было уделено проблеме. известной как Hash Collision Complexity Attack. Несмотря на то, что возможность данной атаки была сведена к нулю начиная с perl 5.8.1 (25-е сентября 2003-го), разработчики пошли дальше (возможно, в связи с недавними событиями вокруг некоторых известных языков, применяемых в веб-разработке) и усовершенствовали механизм рандомизации хешей. Теперь порядок вывода одного и того же хеша отличается от запуска к запуску. Помимо этого каждый хеш имеет свой собственный порядок итерирования, поэтому порядок вывода двух хешей с одинаковыми значениями может отличаться. Также был добавлен ряд новых хеширующих функций, а выбрать конкретную можно на этапе компиляции интерпретатора perl.
  • Бинарные операции над символьными классами в регулярных выражениях
    Это экспериментальная возможность, позволяющая применять к символьным классам бинарные операторы, такие как: & (пересечение), + или | (объединение), - (вычитание), ^ (симметрическая разность). Так, например, можно получить все цифры Тайского или Лаосского написания:
    /(?[ ( \p{Thai} + \p{Lao} ) & \p{Digit} ])/
    
  • Подпрограммы с лексической областью видимости
    Появилась экспериментальная возможность создавать подпрограммы с лексической областью видимости (my sub foo {} или state sub foo {}) и алиасы с лексической областью видимости на подпрограммы текущего пакета (our sub foo {}).

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

Ответ на: комментарий от d_Artagnan

Полностью согласен. Такой говнокод, который делается на перле, среди разработчиков на других ЯП надо еще поискать.

Даже отступы не соблюдают... Это действительно, определенный склад ума.

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

Ниче не поделаешь - неповоротливые консерваторы-политики-олдфаги, питоно-объектно заплывшие жирком, но имеющие мнение, которое они медленно выдавливают из-под неанонимусов (ЧСВ?), не понимая что порой выглядят, как идиоты, всегда были и, боюсь, будут.

Perl требует гибкий, быстрый и свободный от политики ум. UNIX-way, кстати, тоже такой. Для хакеров.

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

Perl не осиливают потому что даже не намереваются, а не потому что не могут.

Мое послание (выше) про неповоротливых консерваторов-политиков для тебя.

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

Да ясно, но я к тому, что сами проблемы там в целом пожирнее, чем плохая рандомизация хешей :-)

Подобавляли бы например какой-нибудь синтактический сахар для нормальной ОО, и поставили бы уже крест на дурацких костылях типа Moose.

Много чего можно придумать, в целом.

Кстати я твой ник где-то видел :) то ли в районе Siemens'ов, то ли уже в районе ондроеда...

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

Доштовиговорите! Любой студент-дельфишлёпер

Нужен гибкий ум и развитый интеллект
гибкий, быстрый и свободный от политики ум

обладает теми же качествами. И пишет код строго точно такой же, который

Для хакеров.

пишут эти самые «хакеры».

Т.е. кипу райтонли говнища с мэджиками, кописпастой и простынями.

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

Perl требует гибкий, быстрый и свободный от политики ум. UNIX-way, кстати, тоже такой. Для хакеров.

Не только гибкий, но и мягкий.

tp_for_my_bunghole ()

Re: Доштовиговорите! Любой студент-дельфишлёпер

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

Т.е. кипу райтонли говнища с мэджиками, кописпастой и простынями.

Ты имеешь мнение - и это [наверное] хорошо. Но надо сначала понять чего ты стоишь сам чтобы решить чего стоит твое мнение. Мы оттолкнемся от твоего заявления про «райтонли», а позже вернемся к твоему заявлению о хакерах и об интеллекте определив все сопутствующие диагнозы относительно моей или твоей личности. Нам же надо оценить какого уровня годности перед нами заявители (и я и вы), верно?

Т.е. кипу райтонли говнища с мэджиками, кописпастой и простынями.

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

1. Ты говоришь про код который ты не можешь разобрать. То есть ты смотришь на участок кода и не можешь понять, так?

2. Или ты говоришь про код ПТУ-шника из мухосранска который строит программу методом копипастинга участов кода своих сокурсников?

3. Или ты говоришь про код недопрограммистов - офисных хомячков, которые пришли в программирование ради бабла и не владеют связанными (математическими) дисциплинами чтобы заниматься этой деятельностью профессионально, способные лишь дерганию методов объекта, html-верстке и правильному форматированию в «ворде» ?

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

Perl требует гибкий, быстрый и свободный от политики ум. UNIX-way, кстати, тоже такой. Для хакеров.

Не только гибкий, но и мягкий.

Как понимать? Детально распишите что имеете ввиду.

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

Не обращай внимания, это он растекается.

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

Хаха. Ха.

Мы тоже в столовой дельфишлёперам в суп плюём. Оне брезговают и уходят. Заставляем перлистов доедать.

Да, мы такие. Программисты

У вас быдлячий юмор, следовательно вы - быдляки, а не программисты.

anonymous ()

Или ты говоришь про код недопрограммистов - офисных хомячков, которые пришли в программирование ради бабла

Зачем вы так грязно ругаетесь? Здесь все идейные и проверенные товарищи.

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

Зачем вы так грязно ругаетесь? Здесь все идейные и проверенные товарищи.

Отвали, быдлоид. Тебе был задан вопрос.

anonymous ()

надо сначала понять

Не надо разводить и уводить обсуждение в угодную тебе область демагогии и пустозвонства.

Все очевидно.
- Структурированный код лучше, чем неструктурированный.
- Читаемый код лучше, чем нечитаемый.
- Сложный код всегда можно сделать простым. Простой код лучше, чем сложный.
- Портабельный код лучше, чем непортабельный.
- Документированный код лучше недокументированного.
Все!

А теперь идем на CPAN и что видим в ресент аплодз?
Boost::Geometry
Код простой (хуле - обертка над бустом!), вроде бы портабельный, почти читаемый (кроме @EXPORT), но не структурированный (наличие магии и копипасты)

Может быть File::CachingFind?
Код вроде бы простой, но уже нечитаемый (угребищный стиль ближе к концу файла), неструктурирован, и из-за хардкода путей - непортабелен.

Хватило бы одного примера, чтобы разнести твои построяния об «уме и гибкости» в прах, но я привел целых два. Нет идеального кода от этих твоих перл-хакеров с гибким умом. НЕ-ТУ. Вот на примере этих двух проектов которые я выдернул - вижу код средненького быдлокодера.

И это тот код который в публичном доуступе. А точ творится на внутренних проектах? Трэш и содомия. Часто даже модульность отсутствует, не то что стиль или там портабельнось.

Это перл-какеры, а не перл-хакеры...

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

Не надо разводить и уводить обсуждение в угодную тебе область демагогии и пустозвонства.

Много на себя берете.

Все очевидно. - Структурированный код лучше, чем неструктурированный. - Читаемый код лучше, чем нечитаемый. - Сложный код всегда можно сделать простым. Простой код лучше, чем сложный. - Портабельный код лучше, чем непортабельный. - Документированный код лучше недокументированного. Все!

Верно. А кто спорил?

А теперь идем на CPAN и что видим в ресент аплодз? Boost::Geometry Код простой (хуле - обертка над бустом!), вроде бы портабельный, почти читаемый (кроме @EXPORT), но не структурированный (наличие магии и копипасты)

Код простой. Протабельный. Читаемый. Структурированный. Идет с документацией и даже с лицензией и контактом автора. Даже есть пример для использования.

Может быть File::CachingFind? Код вроде бы простой, но уже нечитаемый (угребищный стиль ближе к концу файла), неструктурирован, и из-за хардкода путей - непортабелен.

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

Хватило бы одного примера, чтобы разнести твои построяния об «уме и гибкости» в прах, но я привел целых два. Нет идеального кода от этих твоих перл-хакеров с гибким умом. НЕ-ТУ. Вот на примере этих двух проектов которые я выдернул - вижу код средненького быдлокодера.

Много на себя берете второй раз. Все что вы тут привели - это газификация лужи, не более. Все ваши доводы - пустословие.

И это тот код который в публичном доуступе. А точ творится на внутренних проектах? Трэш и содомия. Часто даже модульность отсутствует, не то что стиль или там портабельнось.

Снова на себя много берете. Вы не понимаете простую вещь - качество кода завист не от языка а от программиста.

Это перл-какеры, а не перл-хакеры...

Очередной отстой с вашей стороны.

anonymous ()

Кстати, а есть дистрибутивы Линукса с выпиленным Перлом? В Дебиане сразу уходят dbus, lilo, cups, avahi, samba, fuse, git, sbcl (o_0) и, лавинообразно, вся система.

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

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

Поддерживаю.

Вы не понимаете простую вещь - качество кода завист не от языка а от программиста.

Вот именно.

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

Кстати, а есть дистрибутивы Линукса с выпиленным Перлом?

О, вижу яйцо. Танцор, ты?

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

Все что вы тут привели - это газификация лужи

Не видеть очевидного - очевидный признак слива дискуссии. С чем вас и поздравляю!

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

Поддерживаю

Вы, похоже, или сисадмин или молодой, не слишком опытный программер-одиночка.

Вот именно.

Более того, и я согласен с приведенным предложением.

Но этот товарищ сперва заявляет, что разрабы на перле едва ли не сверхлюди, а после тыкания в конкретные «грязные» места голословно заявляет, что все ok на самом деле. И вы туда же. Что более чем странно.

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

Не видеть очевидного - очевидный признак слива дискуссии. С чем вас и поздравляю!

Ой, вы снова лоханулись :). Я вам то же самое могу сказать. Вы уперлись прямо как танцор в яйца. Думаю тут микроскоп не нужен чтобы разобраться кто и как слился.

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

Но этот товарищ сперва заявляет, что разрабы на перле едва ли не сверхлюди, а после тыкания в конкретные «грязные» места голословно заявляет, что все ok на самом деле. И вы туда же. Что более чем странно.

Да нет там грязных мест. Все ясно и понятно. А может вы неосилятор - девственница?

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

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

Да. Достаточно прочитать «code complete»...

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

Да. Достаточно прочитать «code complete»...

Снова лол. Внезапно: достато почитать наши сообщения :)

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

Это будет через сотни лет после смерти пистона и похапоэ. Когда умрёт последний хороший программист.

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

когда его уже закопают.

Гораздо полезнее будет закопать всех «закапывателей».

А с Perl всё в порядке. Жив и ещё поживёт. И многих переживёт.

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

Perl требует гибкий, быстрый и свободный от политики ум. UNIX-way, кстати, тоже такой.

Навскидку хочется согласиться, но ведь unix-way - удобен для простых случаев: когда есть явная декомпозиция. В случае экстраполяции на полноценный язык - уже возникают сомнения.

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

В случае экстраполяции на полноценный язык - уже возникают сомнения.

А зачем вообще так экстраполировать? Я, например, всегда пользовался, пользуюсь и буду пользоваться перлом для решения кучи маленьких простых задач именно в стиле Unix-way. А писать что-либо более-менее серьёзное и крупное на перле я так и не осмеливался за всё время работы с ним. Как-то всё другие инструменты смотрелись более уместно.

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

Навскидку хочется согласиться, но ведь unix-way - удобен для простых случаев: когда есть явная декомпозиция. В случае экстраполяции на полноценный язык - уже возникают сомнения.

Perl - сильно многогранен. Проблема современных программистов в том что потенциал перла выходит за рамки их возможностей. Пользуются те кто «способен этот инструмент удержать в руках и направить его». Сколько я помню - Perl хорош для всех случаев. Два случая где Perl - не лучший выбор:

- там где уместнее Си

- там где уместнее Asm

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

А все это нытье про нужности синтаксического сахара, нечитаемости - ЭТО ВСЕ ЛИЧНЫЕ ПРОБЛЕМЫ ПРОГРАММИСТИКОВ. С Perl это связано лишь постольку поскольку именно об него они ломают зубы. За это Perl они ненавидят, но уважают при этом :)

anonymous ()

Ни разу он не Unix-way. Принципы KISS нарушены вдоль и поперёк. Одну и ту же «гибкую мысль» позволяет выразить минимум тремя способами. Писать «Войну и мир» на таком можно, а вот программировать... разве что только для таких же «гибких» заказчиков. Perl однозначно привязан к стилю мышления. Его сторонники - жуткие маргиналы, в том смысле, что людей с таким стилем мышления ничтожное меньшинство. Из дистрибутивов выпилить обязательно!

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

Ни разу он не Unix-way. Принципы KISS нарушены вдоль и поперёк. Одну и ту же «гибкую мысль» позволяет выразить минимум тремя способами. Писать «Войну и мир» на таком можно, а вот программировать... разве что только для таких же «гибких» заказчиков. Perl однозначно привязан к стилю мышления. Его сторонники - жуткие маргиналы, в том смысле, что людей с таким стилем мышления ничтожное меньшинство. Из дистрибутивов выпилить обязательно!

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

У каждого ЯП есть политика которую он как бы «навязывает» пользователю (программисту). Политика Perl в TIMTOWTDI, то есть это такая политика которая оставляет программисту свободу выбора. В этом вся его суть. Если свобода выбора для вас непосильная ноша - ищите себе то что будет ограничивать вашу свободу. Не приемлите TIMTOWTDI - не ходите в Perl, он не для вашего (рабского?) менталитета. Свобода - это прежде всего ответственность.

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

Принципы KISS нарушены вдоль и поперёк

Бестолковое заявление. KISS - это обращение к программисту.

anonymous ()

Один раз кульхацкер прогу написАл.

Больше он ее даже и не прочитал.

«Типичная программа на Перле выглядит так, как будто программист бился головой об клавиатуру; и чаще всего оно так и есть» (c)

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

KISS - это ЕРЖ глэм-метал группа, использующая рунический сдвоенный зигель (см. взаимоисключающие параграфы.)

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

«Чаще всего понтуются люди своими материальными ценностями. Эту смысловую окраску несет именно слово „хвастаться“. Также понт бывает по интеллекту или по уровню развития. Для такой разновидности в народе есть словечко „умничать“. Так в современном языке понт объединяет проявления первого и второго.» (с) http://shkolazhizni.ru/archive/0/n-1434

Так, что если нет п.1, то остается только п.2.

Однако, не надо изучать «пирамиду Грэма», чтобы бызвать неиллюзорный бугурт умника фразой «If you are so clever, show me your money»(с).

Так, что умничать будете в собесе.

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

Ты верно делаешь что не заявляешь своей позиции - до тебя докопаться нельзя. Но ты приводишь заявления которые в обиходе у «массы». Я бы мог тебе разложить чего ты стоишь вот за это цитирование:

Один раз кульхацкер прогу написАл.

Больше он ее даже и не прочитал.

«Типичная программа на Перле выглядит так, как будто программист бился головой об клавиатуру; и чаще всего оно так и есть» (c)

Допустим ты не подумал. Но дальше еще лучше - ты предметно не разбираясь в вопросе приводишь общеупотребительные и общепринятые у большинства стереотипы суждения. А как насчет думать своей головой? Сможешь позицию свою сформулировать и выстоять здесь за эту позицию? Я именно из-за этого отслеживаю тред - чтобы найти тех кто представляет ценность, тех чья позиция имеет основание. Как думаешь, какая ценность обычного среднестатистического generic-а ?

А давай я тоже приведу цитату:

Если вы заметили, что вы на стороне большинства, это верный признак того, что пора меняться.

Марк Твен

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

Попоболь мучает?
Ах, бедняжка.

Кстати попробую немного унять вашу банальную боль.

Предыдущий эталон корявости кода был написан на Java.

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

Яркий пример того, как свое говно малиной пахнет.

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

Perl не осиливают потому что даже не намереваются, а не потому что не могут.

А зачем тогда берутся, если не намереваются?

Или сначала намереваются, а потом перестают? :)

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

Сложный код всегда можно сделать простым

Ой ли? Не слишком ли обобщаешь?

anonymous ()

Конечно Perl непонятен. Сегодняшние «программисты» не считают нужным знать ингриш. Для таких конструкции:

 chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
будут таинственными и загадочными

anonymous ()

Когда там уже появятся нормальные человеческие монады?

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

качество кода завист не от языка а от программиста.

Правильнее будет: «качество кода зависит НЕ ТОЛЬКО от языка, НО И от программиста».

Регулярки на Перле читаемее питоньих (особенно если речь об инлайновых s///). В остальном разница убийственна и не в пользу Перла. Я почему перешел на Питон — потому что сложную систему с перспективой расширения невозможно сразу писать на Перле, приходится рисовать UML и писать куски псевдокода. Так вот в какой-то момент было замечено, что мой псевдокод уж очень напоминает Питон. Решил попробовать — в итоге прототипировал на Питоне и «компилировал» в перловку. Понятно, что это стало промежуточным шагом для смены основного ЯП.

Перл хорош, но it's time to move on.

P.S.:

sub echo { my $foo = shift; print "$foo\n"; }
vs.
def echo(foo): print foo
Причем в перле еще и надо руками проверять, передан ли аргумент.

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

%lang% требует гибкий, быстрый и свободный от политики ум. UNIX-way, кстати, тоже такой. Для хакеров.
%lang% - сильно многогранен. Проблема современных программистов в том что потенциал %lang% выходит за рамки их возможностей. Пользуются те кто «способен этот инструмент удержать в руках и направить его». Сколько я помню - %lang% хорош для всех случаев.

Зачем в теме про perl вы описываете лисп? :3

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

Да, Perl умеет быть лаконичным, но, увы, обычно в ущерб ясности и предсказуемости. Что будет, если в функцию передать не один, а ноль или два и более аргументов? Никакой проверки нет. Дебажить это — кошмар. Никакие тесты не спасут, если функция просто съедает всё, что дают, не выкидывая исключений. Поэтому в реальных условиях приходится проверять длину массива аргументов (руками или через нагромождение абстракций из CPAN).

Потом, надо знать, что shift — это не переменная, а функция, причем без аргументов она по умолчанию выдергивает значение из @_, а @_ — это список аргументов функции, в контексте которой вызвана функция shift. Понятно, что опытный перловод знает это и многое другое, а иной перловод, пожалуй, даже кичится своими познаниями тайных болотных тропинок, но, спрашивается, на хрена эти витиеватости, если мы пишем не литературный труд в духе постмодернизма, а логику работы приложения? Сам язык должен способствовать чистоте и ясности текста.

ООП в perl5 — просто боль. Либо куча мозголомного boilerplate code, либо то же самое под слоем вымученных абстракций. Реальная бизнес-логика тонет в этой каше. При том, что я сторонник очень осторожного использования ООП только при явной необходимости, совсем-то без него тоже нельзя.

Кстати, say теперь не только в шестёрке?

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

Более того:

use Function::Parameters qw(:strict);
 
fun foo($bar, $baz) {
    return $bar + $baz;
}

А эти ребята продолжают прелюдно обмазываться какашками, показывая свою некомпетентность и предвзятость.

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