URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 90084
[ Назад ]

Исходное сообщение
"Релиз интерпретатора языка программирования Perl 5.18"

Отправлено opennews , 20-Май-13 12:35 
После года разработки представлена (http://www.nntp.perl.org/group/perl.perl5.porters/2013/05/ms...) новая стабильная ветка языка программирования - Perl 5.18 (https://metacpan.org/release/RJBS/perl-5.18.0/). В рамках подготовки нового выпуска было изменено около 400 тыс. строк кода, изменения затронули 2100 файлов, в разработке приняли участие 113 разработчиков.


Ветка 5.18 выпущена в соответствии с утверждённым три года назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов - раз в три месяца. 20 июня планируется выпустить первый корректирующий релиз Perl 5.18.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.18.0. Одновременно с выходом Perl 5.18 прекращена поддержки ветки 5.14, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.19, на базе которой в мае 2014 года будет сформирован стабильный релиз Perl 5.20.


Ключевые улучшения (https://metacpan.org/module/RJBS/perl-5.18.0/pod/perldelta.pod), добавленные в Perl 5.18:

-  Переработанная реализация хэшей. Одним из самых заметных изменений является обеспечение рандомизации в используемых хэш-функциях, что положительно влияет на безопасность (например, защитит от  DoS-атак (http://www.opennet.me/opennews/art.shtml?num=35593) через манипуляции с коллизиями хэшей), но приводит к непредсказуемому порядку вывода элементов функциями  keys(), values() и each(). Данное изменение может повлиять на работу приложений, пользующихся недокументированным свойством сохранения порядка записей в разных хэшах (в официальной документации хэши позиционируется как неупорядоченные структуры). Отныне порядок следования идентичных записей в разных хэшах и в одних и тех же хэшах при разных запусках скрипта будут отличаться. Уровень рандомизации может быть настроен через переменную окружения PERL_PERTURB_KEYS (при присвоении значения 0 рандомизация ключей отключается и поведение perl становится как в прошлых выпусках).


Из других изменений можно отметить реализацию возможности использования альтернативных хэш-функций. В качестве алгоритма хэширования по умолчанию задействован ONE_AT_A_TIME_HARD. Кроме того, в состав включено несколько альтернативных алгоритмов, но они, кроме SIPHASH, который считается безопасным, рекомендуются пока только для экспериментов, так как содержат определённые проблемы с безопасностью;


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

<font color="#461b7e">
   no warnings "experimental::feature_name";
   use feature "feature_name";
</font>


-  Поддержка (https://metacpan.org/module/perlrecharclass#Extended-Bracket...) экспериментального расширения в системе регулярных выражений, позволяющего осуществлять сопоставления с использованием расширенных правил пересечения, исключения и объединения множеств символов. Например, '[A-Z - W]' - символы от A до Z за исключением W. Более сложный пример формирования множества символов: '[\p{Latin} & \p{L&} - A-Z]'.  Функциональность совпадает по возможностям с модулем Unicode::Regex::Set (https://metacpan.org/module/Unicode::Regex::Set);

-  Экспериментальная поддержка лексических подпрограмм ("lexical_subs (https://metacpan.org/module/perlsub#Lexical-Subroutines)"), позволяющая определять при помощи выражения "state sub" подпрограммы, видимые только в области лексической видимости блока в котором подпрограмма была создана. В отличие от "my sub" процедуры "state sub" работают заметно быстрее, так как они не создаются при каждом входе в блок и совместно используются между вызовами других подпрограмм;

-  Возможность использования в операторах next, last и redo динамически вычисляемых меток, формируемых в процессе выполнения скрипта на основе произвольного выражения. Ранее любые отличные от константы аргументы next, last и redo воспринимались как пустая строка;

-  В пространство имён "CORE::" включены функции  defined, delete, exists, glob, pos, protoytpe, scalar, split, study и undef;


-  Поддержка Unicode 6.2 (http://www.unicode.org/versions/Unicode6.2.0) и реализация возможности определения собственных имён символов для использования в \N{...}, charnames::vianame() и т.п. При задании имён могут быть задействованы знаки из диапазона Unicode, т.е. имена символов теперь можно определить не только на английском языке. Использование неизвестных имён символов в \N{...} теперь приводит к ошибке, вместо предупреждения. Указание $/ = \N для функции readline() теперь приводит к чтению N-символов, а не N-байт. Проведены заметные оптимизации скорости работы регулярных выражений в которых присутствуют Unicode символы, например, скорость выполнения операции \X увеличилась на 35-40%;

-  Интеграция новых контрольных точек для использования в системе динамической отладки DTrace: op-entry,  loading-file,  loaded-file;

-  Добавлена новая служебная переменная ${^LAST_FH} для доступа к последнему прочитанному файловому дескриптору;
-  Вертикальная табуляция (\cK) теперь отнесена к множеству символов пробела (\s).
-  Обновлены версии большого числа входящих в базовую поставку модулей;

-  Объявлены устаревшими модули: encoding, Archive::Extract,
B::Lint*,
Devel::InnerPackage,
Log::Message*, Module::Pluggable*,
Object::Accessor,
Pod::LaTeX,
Term::UI*. Прекращена поддержка напрямую вызываемых из системной библиотеки функций для проверки класса символов, например, is_uni_alnum и т.п.; Прекращается поддержка платформ Windows CE, z/OS, DG/UX и NeXT;

-  В документацию по использованию модуля Storable  добавлен пункт, предупреждающий о недопустимости десериализации данных, полученных из недоверительных внешних источников, так как в процессе подобной обработки можно организовать выполнение perl-кода и загрузку модулей;


URL: http://www.nntp.perl.org/group/perl.perl5.porters/2013/05/ms...
Новость: http://www.opennet.me/opennews/art.shtml?num=36968


Содержание

Сообщения в этом обсуждении
"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 20-Май-13 12:35 
В тред призываются "хоронители" перла. А я запасаюсь попкорном)

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 13:20 
> В тред призываются "хоронители" перла. А я запасаюсь попкорном)

ну, вот он я. где же хвалёный пёрл6? когда же уже прекратят насиловать труп и осилят?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено sanchous , 20-Май-13 13:25 
надо было подготовиться хоть как-то
про перл6 шутка не модная и давно заезженная
здесь разговор про перл5 сейчас

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 13:33 
а я и не шучу, собственно. понятно, что у перлоидов от упоминания перл6 поппеншмерц. но я всё равно не шучу.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 20-Май-13 13:37 
Я не знаю, мне перл6 не очень-то нужен. Выпустят, посмотрим, что за зверь.
Сейчас пишу на перле 5, мне его хватает с головой.
Про "недостатки" знаю, 100500 раз уже обсасывалось. Повторюсь, меня всё устраивает. Менять на другой скриптовый язык в ближайшее время не планирую, параллельно изучаю C и C++

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено sanchous , 20-Май-13 15:44 
упоминание перл6 доставляет только тролям навроде вас
кому нужен язык для работы, просто используют перл5
перл6 нет, и, видимо, не будет
и что характерно, не сильно-то и надо

> а я и не шучу, собственно. понятно, что у перлоидов от упоминания
> перл6 поппеншмерц. но я всё равно не шучу.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 17:16 
> упоминание перл6 доставляет только тролям навроде вас
> кому нужен язык для работы, просто используют перл5
> перл6 нет, и, видимо, не будет
> и что характерно, не сильно-то и надо
>> а я и не шучу, собственно. понятно, что у перлоидов от упоминания
>> перл6 поппеншмерц. но я всё равно не шучу.

Для новичков не очевидно с чего этого перл6, автор которого ЛариВолл, не является следующей версией после перл5, автор которой всё тот же.
Настанет момент когда он скажет что перл5 уродливый троль - деприкатед, и чё будем делать!??


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено 80е , 21-Май-13 00:23 
>> деприкатед, и
> чё будем делать!??

Вы - делайте, что хотите.
Нам на вас.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 13:42 
> ну, вот он я. где же хвалёный пёрл6? когда же уже прекратят насиловать труп и осилят?

Perl6 - это совершенно другой язык, не имеющий никакого отношения к теме обсуждения.
С тем же успехом вы могли спросить про JS или brainfuck.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 18:42 
> Perl6 — это совершенно другой язык, не имеющий никакого отношения к теме
> обсуждения.

а я вижу в сочетаниях «perl5» и «perl6» четыре совпадающих символа из пяти.

впрочем, это в стиле перлистов: чем бредовей всё, тем лучше. подумаешь, другой язык… а назовём-ка мы его тоже перл! чтобы, когда у нас спрашивают: «а где ваш brave new perl6?!» — можно было хитро отвечать: «а перл6 — это другой язык, не продолжение перла5 вообще. как мы вас всех срезали?!»


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено rshadow , 20-Май-13 20:16 
Все очень просто. Perl6 взялись писать тролли. Из лучших побуждений наверно, но все же ничего хорошего не выходит. Только на форумах троллить могут.

Так что все кто работают на перле ждут perl7.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Anton , 20-Май-13 15:41 
perl6 это новый язык, а не следующая после perl5 версия perl.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено nagual , 20-Май-13 20:30 
> волосы на ладонях от гвидобейсика растут. всем известно. а голых баб лучше
> живьем щупать, нежели в тырнетах смотреть

Ему еще рано, мама не разрешает.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено nagual , 20-Май-13 20:28 
> не путаю. мне просто ассемблером заниматься мама запрещает. говорит, что от этого
> волосы на ладонях растут, и пусть я лучше голых баб в
> интернетах смотрю.

Ты до сих пор живешь с мамой ? 8)


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 20:35 
> Ты до сих пор живешь с мамой ? 8)

и собираюсь продолжать это делать. можешь завидовать.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено AlexAT , 20-Май-13 20:27 
> Питон и перл. Такие дела, мой маленький зеленый друг.

[air@hosting ~]# uname -a
Linux hosting 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[air@hosting ~]# yum remove perl
Removing:
perl                              x86_64             4:5.10.1-131.el6_4              
Removing for dependencies:
MySQL-client                      x86_64             5.5.16-1.rhel6
cronolog                          x86_64             1.6.2-1.alex                    
freetds                           x86_64             0.82-1.alex                    
httpd                             x86_64             2.2.23-alex.1                  
mc                                x86_64             1:4.7.0.2-3.el6                
perl-Module-Pluggable             x86_64             1:3.90-131.el6_4                
perl-Pod-Escapes                  x86_64             1:1.04-131.el6_4                
perl-Pod-Simple                   x86_64             1:3.13-131.el6_4                
perl-libs                         x86_64             4:5.10.1-131.el6_4              
perl-version                      x86_64             3:0.77-131.el6_4                
php                               x86_64             5.3.21-alex.1                

---

Итого: 6/12 - сама перлятина, из freetds/httpd/mysql-client легко выпиливается - как правило зависимости создают либы для самой перлятины или ненужные хелперы, за mc и cronolog не скажу - надо поглядеть. php перла не требует - вываливается из-за httpd и freetds.

Такие дела, мой маленький наивный друг.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено pro100master , 21-Май-13 10:14 
>x86_64 x86_64 x86_64 GNU/Linux

а почему только 3 раза?)


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено sokoloff , 21-Май-13 10:58 
>>x86_64 x86_64 x86_64 GNU/Linux
> а почему только 3 раза?)

Потому что архитектура i386, это 3 раза по 86


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено pro100master , 21-Май-13 11:19 
>>>x86_64 x86_64 x86_64 GNU/Linux
>> а почему только 3 раза?)
> Потому что архитектура i386, это 3 раза по 86

да нет, чтобы из i386 получить x86_64 надо начертить круг, встать в его центр и 4 раза произнести "x86_64" ))


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено 1 , 20-Май-13 12:56 
Хммм ... а z/OS то, почему выпилили ?

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 12:57 
Когда уже допилят этот несчастный Regex до полноценного языка программирования высокого уровня?

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 12:59 
чтобы любой текстушный бред на входе компилировал в бинарь, делающий что-то осмысленное и полезное.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено anonymous , 20-Май-13 21:17 
> чтобы любой текстушный бред на входе компилировал в бинарь, делающий что-то осмысленное
> и полезное.

Fortran?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Ag , 20-Май-13 13:07 
Грамматики Perl6 ждут вас. :)

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено rshadow , 20-Май-13 20:28 
Баттхерт при виде регулярного выражения? Хочется немедленно удалить строку и расписать нормальным алгоритмом строк на 100? Попробуйте сменить профессию...

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено rshadow , 20-Май-13 20:31 
Жрать кактусы отнюдь не в духе перловиков. Ведь их зарплаты выше чем си, питон, пхп,...

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 20:34 
> Баттхерт при виде регулярного выражения? Хочется немедленно удалить строку и расписать
> нормальным алгоритмом строк на 100? Попробуйте сменить профессию…

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


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено codejumper , 20-Май-13 13:01 
> приводит к непредсказуемому порядку вывода элементов функциями keys(), values() и each()

давно обещали, наконец сделали
теперь куча кода, которая полагалось на одинаковый порядок keys() и values() будет вести себя непредсказуемо

> Возможность использования в операторах next, last и redo динамически вычисляемых меток

welcome to spagetti code

> Добавлена новая служебная переменная ${^LAST_FH}

ещё одна возможность написать непонятный код
возможно, пригодится при написании тестов к legacy-модулям

а так молодцы


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Ag , 20-Май-13 13:11 
>> приводит к непредсказуемому порядку вывода элементов функциями keys(), values() и each()
> давно обещали, наконец сделали
> теперь куча кода, которая полагалось на одинаковый порядок keys() и values() будет
> вести себя непредсказуемо

А нефиг полагаться на особенности реализации. В документации про это
было явно сказано.
Хотя видел тексты одного "индийского" дятла (на PL/SQL) где гражданин
полагался на определенный порядок строк в результате SELECT-а
без указания сортировки.
Почти полгода процедура работала "правильно".



"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено oleg , 21-Май-13 09:57 
К сожалению я тоже такое выдел.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено НуфНуф , 20-Май-13 15:37 
В первом же абзаце perldata:
Hashes are unordered collections of scalar values indexed by their associated string key.

Они по-определению неупорядочены.

Так что, если кто-то писал кучу кода, "которая полагалось на одинаковый порядок keys() и values()", то этот кто-то - дурак, не читающий доков.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 18:53 
как показывает практика, доки мало кто читает. одно из самых красивых доказательств тому — не столь давнее изменение поведения memcpy(). стандарт не нарушен, man остался такой же — а у СуперПрограммеров дупы повыворачивало.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено НуфНуф , 21-Май-13 17:05 
В Перл таких не берут.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 21-Май-13 19:08 
> В Перл таких не берут.

их там разводят?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено nagual , 21-Май-13 21:49 
>> В Перл таких не берут.
> их там разводят?

Ну откуда у вас в лексиконе такие слова ? Перлом пользуются высокообразованные люди которые пишут пограммы а не разводят бабушек на выборы гречкой.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 21-Май-13 21:57 
а мне намного более удивительно, что может знать о культуре и высокообразованности человек, которому при виде слова «разводят» первым делом приходит в голову жаргонное значение слова, а не конвенциально-словарное.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено nagual , 21-Май-13 23:57 
> а мне намного более удивительно, что может знать о культуре и высокообразованности
> человек, которому при виде слова «разводят» первым делом приходит в голову
> жаргонное значение слова, а не конвенциально-словарное.

Не судите по себе всех ...


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 22-Май-13 00:55 
да я не о всех, а о тебе. и не по себе — это же не мне в голову приходит первым делом сленговое толкование.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Ag , 20-Май-13 13:04 
Радуют.
А вот с z/OS - неприятный сюрприз.
Хоть и не часто, но требуется мне там Perl.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 20-Май-13 13:08 
Подскажите, где используется данная система?

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Ag , 20-Май-13 13:13 
> Подскажите, где используется данная система?

На IBM mainframe - System/z.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 14:01 
Статуя Капитана Очевидности из чистого серебра в полный рост :D

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 13:23 
> Подскажите, где используется данная система?

в Кровавом Интырпрайзе. Кровавый Интырпрайз любит только зарабатывать, а потратить немного заработанного на модернизацию — не любит. удавится скорее.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 13:44 
> в Кровавом Интырпрайзе. Кровавый Интырпрайз любит только зарабатывать, а потратить немного заработанного на модернизацию — не любит. удавится скорее.

Сменить мейнфрейм на старый пенек, чтобы админам локалхостов не так завидно было?
Действительно, и я бы пожадничал. Пусть локалхосты и дальше завидуют! :D


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 18:46 
тихо, что ты контору палишь? всю еду распугаешь!

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Фигов , 20-Май-13 13:35 
use Perl5.16, Perl5.14 ...

Welcome!


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ACCA , 20-Май-13 18:20 
> А вот с z/OS - неприятный сюрприз.
> Хоть и не часто, но требуется мне там Perl.

Там как был 5.6, так и остался. Даже в z/Linux тоже 5.6.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено лох , 20-Май-13 13:34 
> Объявлены устаревшими модули
> Прекращена поддержка

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


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 13:47 
> теперь хотелось бы услышать перловодов, которые обвиняли питон в отсутствии обратной совместимости, приводя в контрпример перл.

По сравнению с питоном - практически у любого языка хорошая обратная совместимость. В том числе и у перла.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено имя , 20-Май-13 14:07 
И эти люди идут потом в новости про PHP кричать, что он уродливый в том числе оттого, что из него кучу legacy всё никак не выкинут.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 17:18 
> И эти люди идут потом в новости про PHP кричать, что он
> уродливый в том числе оттого, что из него кучу legacy всё
> никак не выкинут.

Набралась куча легаси - замути новый язык, а старый не трожь.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Мяут , 22-Май-13 09:15 
Ну Python2 и Python3 тоже как бы разные ветки языка. :)

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено nagual , 20-Май-13 14:01 
>> Объявлены устаревшими модули
>> Прекращена поддержка
> теперь хотелось бы услышать перловодов, которые обвиняли питон в отсутствии обратной совместимости,
> приводя в контрпример перл.

А что у вас не работает ? Пример кода напишите.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Crazy Alex , 20-Май-13 15:16 
В перле поддержка прекращается того, что либо некому поддерживать,либо того, что по факту сто лет как не используется. По "идеологическим" причинам ничего не выбрасывается.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено НуфНуф , 20-Май-13 15:51 
> теперь хотелось бы услышать перловодов, которые обвиняли питон в отсутствии обратной совместимости,
> приводя в контрпример перл.

Боюсь в этом споре ничего не изменилось: в питоне действительно отсутствует обратная совместимость между версиями. В перле она есть. Если вы потрудитесь перечитать новость - поймете сами.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 17:17 
> Если вы потрудитесь перечитать новость - поймете сами.

Читать новость - значит отступать от юникс-вея (который описывается принципом "не читал, но осуждаю").


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ДругойАноним , 20-Май-13 17:41 
>> теперь хотелось бы услышать перловодов, которые обвиняли питон в отсутствии обратной совместимости,
>> приводя в контрпример перл.
> Боюсь в этом споре ничего не изменилось: в питоне действительно отсутствует обратная
> совместимость между версиями. В перле она есть. Если вы потрудитесь перечитать
> новость - поймете сами.

ну-ну. перечитываю новость:

"""
...Использование неизвестных имён символов в \N{...} теперь приводит к ошибке, вместо предупреждения. Указание $/ = \N для функции readline() теперь приводит к чтению N-символов, а не N-байт...
"""

опять "перл самый лучший"?! фанатики такие фанатики))


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 18:01 
> """
> ...Использование неизвестных имён символов в \N{...} теперь приводит к ошибке, вместо предупреждения.
> Указание $/ = \N для функции readline() теперь приводит к чтению
> N-символов, а не N-байт...
> """

А теперь сравните это со списком изменений python2 -> python3. Только сковородку подложите, чтобы стул не прожечь =)


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 18:48 
> А теперь сравните это со списком изменений python2 -> python3.

а зачем? питон3 — это другой язык, а не следующая версия питон2. ребятушки, это же ваш любимый аргумент про перл6, и вы так глупо подставляетесь.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Чтец , 20-Май-13 19:02 
Пытаюсь понять почему вы пишете о вещах, о которых не имеете бледного понятия. Perl6 - именно, что другой язык, отличающийся от классического Перла ОЧЕНЬ сильно. Между версиями Питона ничего принципиального не менялось. Если не считать поломаной совместимости, конечно :)

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 20-Май-13 19:24 
может, потому, что у меня не «бледное» понятие.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Grammar , 20-Май-13 16:32 
> теперь хотелось бы услышать перловодов, которые обвиняли питон в отсутствии обратной совместимости, приводя в контрпример перл.

PERL_PERTURB_KEYS (при присвоении значения 0 рандомизация ключей отключается и поведение perl становится как в прошлых выпусках).

Теперь, питоновод, объясни как в питоне вернуть старое поведение хоть для чего-нибудь?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 17:03 
если совместимость python2 и 3, то "six"

если о возможностях в новых версиях:
from __future__ import ...


в остальном философия языка другая, в питоне определенная вещь решается оптимизированно и определенно, он не подталкивает к разброду и шатанию по дебрям.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено www2 , 20-Май-13 17:43 
>определенная вещь решается оптимизированно и определенно

И что это за такая тавтологически определённая вещь?

В Советском Союзе тоже всё было во имя и на благо человека. Некоторые даже догадывались, о каком именно человеке шла речь.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено nagual , 20-Май-13 20:12 
>>определенная вещь решается оптимизированно и определенно
> И что это за такая тавтологически определённая вещь?
> В Советском Союзе тоже всё было во имя и на благо человека.
> Некоторые даже догадывались, о каком именно человеке шла речь.

Тонкий вброс расчитанный на школоту ? Форумом не ошиблись ?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено rshadow , 20-Май-13 20:48 
Он не может ошибиться форумом. Для этого нужно понимать о чем говоришь.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено rshadow , 20-Май-13 20:47 
> from __future__ import ...

Так значит они додумались сделать как в перле

   use feature ...

еще бы так же лаконично смотрелось как в перле


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 20-Май-13 21:35 
>еще бы так же лаконично смотрелось как в перле

кстати, о импортах.

возможна ли в perl конструкция вида import foo as bar

например, заменить штатные регекспы альтернативной версией(например, гугловский re2)?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 20-Май-13 22:25 
В перле регэкспы встроены в ядро. Менять их ни на что не нужно.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 21-Май-13 07:25 
ну-ну. смотрим:

http://snowplow.org/martin/rebench/

~/bench$ perl rebench.pl
Text type:                   two regexps    plain alternate       la alternate   prefix alternate     FOO+ alternate     F+OO alternate  plain FOO BAR BAZ
plain unmatching             15.52 usecs        19.29 usecs        19.29 usecs        19.28 usecs         26.1 usecs        19.29 usecs        8.636 usecs
early FOO BAR                15.47 usecs         19.6 usecs        19.58 usecs        19.58 usecs        26.47 usecs        40.13 usecs        8.614 usecs
early FOO BAR BAZ            2.792 usecs        7.581 usecs        7.533 usecs        7.528 usecs        9.625 usecs        11.92 usecs        2.775 usecs
early FOO MORK MINK          10.89 usecs        7.533 usecs        7.556 usecs        7.519 usecs        9.636 usecs         11.9 usecs        8.621 usecs
end FOO BAR                  15.47 usecs        19.58 usecs        19.56 usecs        19.56 usecs        26.49 usecs        33.84 usecs        8.635 usecs
end FOO BAR BAZ              8.702 usecs        20.81 usecs        20.79 usecs        20.85 usecs        27.66 usecs        35.07 usecs        8.646 usecs
end FOO MORK MINK            15.46 usecs        20.79 usecs        20.81 usecs        20.77 usecs        27.65 usecs        35.07 usecs        8.611 usecs

~/bench$ python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching             22.65 usecs          113 usecs        42.55 usecs         21.3 usecs        307.2 usecs        378.4 usecs        21.28 usecs
early FOO BAR                21.45 usecs        113.3 usecs        51.53 usecs        21.42 usecs        304.8 usecs        375.4 usecs        21.31 usecs
early FOO BAR BAZ            6.704 usecs        34.21 usecs        6.555 usecs        6.678 usecs        91.95 usecs          114 usecs        6.545 usecs
early FOO MORK MINK          6.703 usecs        34.21 usecs        27.84 usecs        6.697 usecs        91.84 usecs        113.7 usecs        21.29 usecs
end FOO BAR                  21.44 usecs        114.5 usecs        42.55 usecs        21.42 usecs        305.2 usecs          376 usecs         21.3 usecs
end FOO BAR BAZ              21.46 usecs        112.9 usecs        21.27 usecs        21.41 usecs        306.5 usecs        374.7 usecs        21.26 usecs
end FOO MORK MINK            21.47 usecs        112.8 usecs        42.53 usecs        21.47 usecs        305.4 usecs        374.9 usecs        21.28 usecs

а теперь меняем всего одну строчку в коде(вместо import re пишем import regex as re):


~/bench$ python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching              14.5 usecs        14.45 usecs        18.41 usecs        14.43 usecs        14.46 usecs        14.42 usecs        10.31 usecs
early FOO BAR                14.57 usecs        14.57 usecs        18.35 usecs        14.63 usecs        19.08 usecs        14.84 usecs        10.27 usecs
early FOO BAR BAZ            6.233 usecs        6.171 usecs        3.374 usecs        5.298 usecs        9.726 usecs        5.563 usecs         3.35 usecs
early FOO MORK MINK          5.777 usecs        5.693 usecs        12.94 usecs        5.351 usecs        10.65 usecs        5.187 usecs        10.27 usecs
end FOO BAR                   14.6 usecs        14.55 usecs        18.37 usecs        14.61 usecs        28.89 usecs        14.83 usecs        10.25 usecs
end FOO BAR BAZ              18.51 usecs        19.78 usecs        10.35 usecs        17.24 usecs        32.33 usecs         16.8 usecs        10.31 usecs
end FOO MORK MINK            17.76 usecs        17.21 usecs        18.36 usecs        17.06 usecs        33.07 usecs        15.25 usecs        10.26 usecs

а теперь import re2 as re:


~/bench$ python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching              1.32 usecs         1.28 usecs        2.633 usecs        1.282 usecs        1.295 usecs        378.8 usecs        1.291 usecs
early FOO BAR                1.359 usecs        1.633 usecs        2.814 usecs        1.402 usecs        1.389 usecs        377.1 usecs        1.394 usecs
early FOO BAR BAZ            1.185 usecs        1.196 usecs        2.613 usecs        1.194 usecs        1.252 usecs        114.2 usecs        1.135 usecs
early FOO MORK MINK          1.221 usecs        1.211 usecs        2.611 usecs        1.237 usecs        1.264 usecs        114.2 usecs        1.388 usecs
end FOO BAR                   1.35 usecs        1.358 usecs        2.757 usecs        1.362 usecs        1.377 usecs        377.4 usecs        1.366 usecs
end FOO BAR BAZ              1.733 usecs        1.719 usecs        3.054 usecs        1.774 usecs        1.742 usecs        382.6 usecs         1.66 usecs
end FOO MORK MINK             1.81 usecs        1.782 usecs        3.076 usecs        1.808 usecs        1.799 usecs        380.8 usecs        1.345 usecs

внезапно, ускорение в ~ 22 раза относительно первоначального варианта и в 10-15 раз быстрее libpcre и цена такого ускорения - поправить строчку импорта.

в более умном варианте это всё надо обернуть в try/except, сделав fallback на более медленную версию(как, кстати, такое сделать в perl?).


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 21-Май-13 07:37 
сравнивать pcre и re2 как минимум некорректно: они не полностью взаимозаменяемы.

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


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 21-Май-13 07:52 
> сравнивать pcre и re2 как минимум некорректно: они не полностью взаимозаменяемы.

да, я в курсе :) и лишь хотел показать пример зачем вообще это нужно и как легко это может быть. т.е. если в решамой задаче такая замена допустим - why not?
как альтернатива, можно звать на помощь jit:

http://morepypy.blogspot.ru/2010/06/jit-for-regular-expressi...


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 21-Май-13 07:56 
дык в перле, в принципе, никто не мешает использовать другие движки. но обычно всем просто лень, потому что патологические случаи научились «нюхом чуять».

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 21-Май-13 09:06 
" This test was performed using stock cygwin installs of perl 5.8.7, python 2.4.1, and ruby 1.8.4 on a 1.2 GHz laptop with 512MB of installed physical memory. Just for fun, I also compiled perl 5.9.3 on cygwin with defaults (except with -O3, since the stock perl had that) and tested that too. In a further fit of insanity, on 2006-03-01 I grabbed the latest bleadperl, (compiled as 5.9.3) and tested that too. "

Вы бы ещё тесты двадцатилетней давности представили.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 21-Май-13 09:09 
> " This test was performed using stock cygwin installs of perl 5.8.7,
> python 2.4.1, and ruby 1.8.4 on a 1.2 GHz laptop with
> 512MB of installed physical memory. Just for fun, I also compiled
> perl 5.9.3 on cygwin with defaults (except with -O3, since the
> stock perl had that) and tested that too. In a further
> fit of insanity, on 2006-03-01 I grabbed the latest bleadperl, (compiled
> as 5.9.3) and tested that too. "
> Вы бы ещё тесты двадцатилетней давности представили.

выше цифры тестов, запущенные на моем десктопе. core i7 3770/32Gb ram, с выключенным энергосбережением.

perl v5.14.2, Python 2.7.4, linux 3.9.2, x86_64


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 21-Май-13 11:49 
эмм...подскажите, а где взять эти re2 и regexp ? Хочу протестировать

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 21-Май-13 17:39 
> эмм...подскажите, а где взять эти re2 и regexp ? Хочу протестировать

pip install regex
pip install re2


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 21-Май-13 21:34 
regex однако впечатлил. Поставить re2 мне не удалось, так как требуется тянуть библиотеку с code.google
Но всё-равно, разрабы молодцы.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено VVM , 21-Май-13 13:28 
> выше цифры тестов,
> perl v5.14.2, . . . , linux 3.9.2, x86_64

Ядро предпоследнее -- актуально v3.9.3 2013-05-19

Perl 5.14.X -- специально?  

( Заодно: почему .2 ? v5.14.2 ? Даже у ActivePerl -- v5.14.4.1405 )

уже года два 5.16 , интересно было бы посмотреть цифры для новейшего 5.18


Итого: Perl часть теста -- практически не очень актуальна

Кстати, делали ли reboot системы imm.before/перед запуском теста?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 21-Май-13 09:14 
> Вы бы ещё тесты двадцатилетней давности представили.

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

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


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 21-Май-13 12:01 
>> Вы бы ещё тесты двадцатилетней давности представили.
> да хоть столетней — бэктрекинговые движки просто в силу алгоритма будут тормознее,
> непредсказуемей и с завидной радостью заваливающиеся в «тёмные углы». универсальней,
> с большим количеством фич — и тормознее. если только это не
> «комбинированый» движок, который в бэктрекинг «сваливается» только
> по необходимости.
> но демонстрация-то была даже не этого, а того, что в перле есть
> Единственно Верный Движок, увы, который так просто на другой не заменишь.
> такой дизайн. кисмет.

прежде чем сказать глупость, проверили бы сами. Я не поленился и тоже скачал скрипты и прогнал тесты. Тесты показали, что работа регулярок в перле в разы(в некоторых местах до 8-ми раз) быстрее, чем в питоне.
Но это не самое печальное. Печально то, что работа тестового python-скрипта в 10(!!) раз медленне, чем работа тестового perl-скрипта. o_O

time perl rebench.pl
...
real    0m2.985s
user    0m2.948s
sys    0m0.008s

time python rebench.py
...
real    0m23.362s
user    0m22.977s
sys    0m0.136s

Даже не знаю, стоит ли этого того, чтобы с понтом дела заявлять "а ничего, зато у нас есть 100500 библиотек для работы с регулярками и ещё мы можем написать динамическую опердень вида import foo as bar".
Я теперь понимаю, почему мой коллега, python-разработчик крайне негативно относится к регулярным выражениям.

P.S. к языку Python отношусь нейтрально


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 21-Май-13 12:04 
(вздыхает) я вообще не считаю Новый Whitespace нормальным языком. и речь я вёл вовсе не о нём. но это всё в принципе не важно, потому что нет у меня сегодня ни настроения ругаться, ни настроения что-либо растолковывать. муть это всё бессмысленная.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 21-Май-13 17:50 

> прежде чем сказать глупость, проверили бы сами. Я не поленился и тоже
> скачал скрипты и прогнал тесты. Тесты показали, что работа регулярок в
> перле в разы(в некоторых местах до 8-ми раз) быстрее, чем в
> питоне.

всё это есть в тестах выше. но я уже писал, что:

import regex as re и с LOOPS=10000 цифры уже такие:


~/bench$ time perl rebench.pl
Text type:                   two regexps    plain alternate       la alternate   prefix alternate     FOO+ alternate     F+OO alternate  plain FOO BAR BAZ
plain unmatching              15.5 usecs        19.47 usecs        19.35 usecs        19.27 usecs        26.09 usecs        19.34 usecs        8.721 usecs
early FOO BAR                15.38 usecs        19.61 usecs        19.53 usecs        19.54 usecs        26.49 usecs        40.17 usecs         9.69 usecs
early FOO BAR BAZ            2.886 usecs        7.477 usecs        7.498 usecs        7.465 usecs        10.05 usecs        12.98 usecs        2.823 usecs
early FOO MORK MINK          11.23 usecs        7.931 usecs        7.869 usecs        7.763 usecs        9.971 usecs        12.24 usecs        8.833 usecs
end FOO BAR                   15.8 usecs        19.86 usecs        19.53 usecs         19.5 usecs        26.36 usecs        33.92 usecs        8.624 usecs
end FOO BAR BAZ               8.63 usecs        20.67 usecs        20.68 usecs        20.62 usecs        27.62 usecs        35.01 usecs        8.639 usecs
end FOO MORK MINK            15.42 usecs        20.69 usecs        20.86 usecs        20.65 usecs        28.32 usecs        35.13 usecs         8.66 usecs

real    0m8.313s
user    0m8.283s
sys     0m0.024s

~/bench$ time python rebench.py
Text type:              prefix alternate    plain alternate        two regexps     FOO+ alternate     F+OO alternate       la alternate  plain FOO BAR BAZ
plain unmatching             14.54 usecs        14.49 usecs        18.34 usecs        14.42 usecs        14.64 usecs        14.66 usecs        10.23 usecs
early FOO BAR                14.55 usecs         14.5 usecs        18.27 usecs        14.55 usecs        19.18 usecs        15.09 usecs         10.2 usecs
early FOO BAR BAZ            4.788 usecs        4.726 usecs        3.358 usecs        4.816 usecs        9.614 usecs        6.057 usecs        3.317 usecs
early FOO MORK MINK          5.112 usecs        5.068 usecs        12.84 usecs        5.183 usecs        9.639 usecs        5.872 usecs        10.18 usecs
end FOO BAR                  14.48 usecs        14.45 usecs        18.22 usecs        14.59 usecs         28.7 usecs        15.96 usecs        10.19 usecs
end FOO BAR BAZ              14.73 usecs        14.92 usecs        10.28 usecs        14.78 usecs        30.31 usecs        18.04 usecs        10.26 usecs
end FOO MORK MINK            15.53 usecs        15.12 usecs        18.31 usecs        16.44 usecs        30.15 usecs        17.61 usecs        10.23 usecs

real    0m6.537s
user    0m6.534s
sys     0m0.002s

> Я теперь понимаю, почему мой коллега, python-разработчик крайне негативно относится к регулярным
> выражениям.

у них главная беда в том, что они write-only.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 21-Май-13 21:38 
> у них главная беда в том, что они write-only.

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

my $var = "this is text";
if ($var =~ qr/^(this).+(text)$/) {
    print "$1\t$2\n";
}

напечатает "this text".
Возможно, использование регулярок в питоне связано с тем, что они не вписываются в общую концепцию языка и питонщики ими редко пользуются. Но перловики их(регэкспы) используют в полный рост, главное - не перебарщивать.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 22-Май-13 06:48 
>> у них главная беда в том, что они write-only.
> возможно. Но в перле регулярки использовать удобно. Повторюсь, они встроены в ядро
> языка и позволяют делать различные плюшки вида

смысл практический в этом? hardcoded pattern'ы?

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

нет смысла в регекспах внутри языка. совсем. да, ими можно парсить json/html/xml и чёрта в ступе. но в самом языке они не нужны.

>Но перловики
> их(регэкспы) используют в полный рост, главное - не перебарщивать.

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

вот если вам надо ускорить кусок кода на perl, что вы будете делать?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 22-Май-13 09:03 
> смысл практический в этом? hardcoded pattern'ы?

а в чём вообще смысл использования регулярных выражений?

> нет смысла в регекспах внутри языка. совсем. да, ими можно парсить json/html/xml и чёрта в ступе. но в самом языке они не нужны.

никто в здравом уме не будет парсить JSON/XML/HTML с помощью регулярок. Для этого уже сто лет как написаны отдельные модули

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

опять таки, для чего нужны регулярные выражения? Мой ответ - для работы с текстом. Для работы с бинарными данными используются другие средства.
Если надо ускорить кусок перлового кода, то существует ровно 2 способа:
1. Переписать(отрефакторить) указанный кусок не используя тяжёлые конструкции
2. Переписать данный код на C и подключить с помощью XS


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 22-Май-13 09:18 
> а в чём вообще смысл использования регулярных выражений?

достаточно редкие ситуации, когда нет желания писать полноценный парсер или же какие-то простые случаи.

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

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

> Для работы с бинарными данными используются другие средства.

а что именно для этого есть в perl?

в python, например, есть штатный модуль struct.


> Если надо ускорить кусок перлового кода, то существует ровно 2 способа:
> 1. Переписать(отрефакторить) указанный кусок не используя тяжёлые конструкции
> 2. Переписать данный код на C и подключить с помощью XS

3. можно еще распараллелиться
4. в случае с python есть cython(да, для нормального ускорения нужна статическая типизация).
5. в случае с python есть pypy и его jit. тут переписывать вообще не надо.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено noize , 22-Май-13 10:07 
> достаточно редкие ситуации, когда нет желания писать полноценный парсер или же какие-то простые случаи.

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

> в python, например, есть штатный модуль struct.

в перле не дураки сидят, pack и unpack тоже имеется

> 3. можно еще распараллелиться

Это усложняет разработку, но да, согласен. Это вариант.

> 4. в случае с python есть cython(да, для нормального ускорения нужна статическая типизация).
> 5. в случае с python есть pypy и его jit. тут переписывать вообще не надо.

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


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 23-Май-13 01:20 
> я не знаю как в питоне, но в разработке на перле мне
> периодически, не так уж и редко приходится сталкиваться с подобными задачами.
> И под каждую из задач не напишешь парсер.

например?


>> 3. можно еще распараллелиться
> Это усложняет разработку, но да, согласен. Это вариант.

никакого усложнения. если изначально писать нормально и использовать map.

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

ну вот там ниже есть пример десятикратного ускорения с переходом на pypy.
си - это когда уже совсем всё плохо.

а вот что в перле грустно, так это http://perldoc.perl.org/threads/shared.html#BUGS-AND-LIMITAT...


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено angra , 22-Май-13 16:39 
> ну так работа с текстом - это не такая частая задача, чтобы
> делать регекспы частью языка.

Смешно. Настолько смешно, что даже объяснять что-либо не хочется.

> более того, цифры выше - это не про скорость, а про сравнительно
> легкий способ ускориться не переписывая всё. (собственно, это тесты сишного кода/библиотек,
> а не языка).

Если вы не умеете пользоваться всей мощью регексов это не значит, что этого не умеют другие. А регексы re2 весьма сильно ограничены и код переписывать под них придется. Ну или воспользоваться модулем, который умеет fallback в стандартные регексы

>> Для работы с бинарными данными используются другие средства.
> а что именно для этого есть в perl?
> в python, например, есть штатный модуль struct.

Нравится по граблям топтаться? pack/unpack встроенны в perl и конечно же имеют больше возможностей чем питоновские из struct

> 3. можно еще распараллелиться

Или поставить более мощный процессор, или дать больше памяти, или увеличить пропускную способность IO. Это экстенсивный путь, мы не о нем.

> 4. в случае с python есть cython(да, для нормального ускорения нужна статическая
> типизация).

Это конечно тоже имеет право на жизнь, но как по мне, ускорять надо не программу в целом, жертвуя возможностями языка, а проблемный кусок кода. И ситуация, когда работоспособность кода на ЯП зависит от используемого транслятора, мне не кажется верным подходом. Кстати для perl давным давно была возможность превращать весь код в C, но она толком никому не была нужна и ее забросили, зато создали несколько различных способов подключать C код.

> 5. в случае с python есть pypy и его jit. тут переписывать
> вообще не надо.

Если там так все хорошо, то почему pypy болтается на задворках, а не вытеснил другие реализации?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 23-Май-13 01:01 

> Если вы не умеете пользоваться всей мощью регексов это не значит, что
> этого не умеют другие. А регексы re2 весьма сильно ограничены и
> код переписывать под них придется. Ну или воспользоваться модулем, который умеет
> fallback в стандартные регексы

еще раз:
1)вы переоцениваете важность регекспов.
2)пример выше про легкость замены, а не о совместимости. т.е. там, где это допустимо.

более того, можно использовать одновременно оба движка, в том числе разнеся их по разным cpu.

> Нравится по граблям топтаться? pack/unpack встроенны в perl и конечно же имеют
> больше возможностей чем питоновские из struct

о, можно подробнее про грабли? и чего нет в питоновском struct?

>> 3. можно еще распараллелиться
> Или поставить более мощный процессор, или дать больше памяти, или увеличить пропускную
> способность IO. Это экстенсивный путь, мы не о нем.

если у вас в системе 32cpu и они ничем не загружены - почему бы и нет?


>> 4. в случае с python есть cython(да, для нормального ускорения нужна статическая
>> типизация).
> Это конечно тоже имеет право на жизнь, но как по мне, ускорять
> надо не программу в целом, жертвуя возможностями языка, а проблемный кусок
> кода.

ну так о куске кода и речь. профайлером нашли горячий кусок, вынесли в модуль, а дальше cython. тем более, что cython с ключём '-a' сгенерирует красивый отчёт и подскажет, что надо типизировать в первую очередь.

> И ситуация, когда работоспособность кода на ЯП зависит от используемого
> транслятора, мне не кажется верным подходом. Кстати для perl давным давно
> была возможность превращать весь код в C, но она толком никому
> не была нужна и ее забросили, зато создали несколько различных способов
> подключать C код.

ну так cython так и умеет. только ускорение от прямой трансляции невелико, потому и забросили в perl.

>> 5. в случае с python есть pypy и его jit. тут переписывать
>> вообще не надо.
> Если там так все хорошо, то почему pypy болтается на задворках, а
> не вытеснил другие реализации?

откуда ж мне знать? народ весьма консервативен.


~/bench$ python levbench.py
st1 == 7800 bytes, st2 == 8580 bytes
27.2362930775
~/bench$ pypy levbench.py
st1 == 7800 bytes, st2 == 8580 bytes
2.71952915192

один и тот же код, взятый тут:

http://en.wikibooks.org/wiki/Algorithm_Implementation/String...


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено angra , 23-Май-13 08:18 
> 1)вы переоцениваете важность регекспов.

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

> 2)пример выше про легкость замены, а не о совместимости. т.е. там, где
> это допустимо.

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

> более того, можно использовать одновременно оба движка, в том числе разнеся их
> по разным cpu.

У вас явно сдвиг на тему параллельности, прочитали "умную" книжку и везде теперь видите гвозди?

> о, можно подробнее про грабли? и чего нет в питоновском struct?

Перл богаче питона по возможностям, его идеология "есть много способов снять шкурку с кошки", в отличии от питоновской "есть только один одобренный фюрером способ снятия шкурки с кошки". Но вы раз разом пытаетесь найти в perl отсутствие возможностей из python. По поводу конкретно pack - просто сравните мануалы по обоим.


> если у вас в системе 32cpu и они ничем не загружены -
> почему бы и нет?

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


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено rex , 21-Май-13 00:50 
можно, но сам не пробовал; задач для которых это критично не было

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Фигов , 21-Май-13 11:34 
http://search.cpan.org/~dgl/re-engine-RE2-0.11/lib/re/engine...

Наслаждайся.

ЗЫ
На YAPC::2012 чувак делал про это движок довольно подробный доклад. Думаю можешь найти в сети.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 21-Май-13 17:54 
> http://search.cpan.org/~dgl/re-engine-RE2-0.11/lib/re/engine...
> Наслаждайся.
> ЗЫ
>  На YAPC::2012 чувак делал про это движок довольно подробный доклад. Думаю
> можешь найти в сети.

ну хоть один хороший и правильный коммент :))


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено angra , 21-Май-13 22:03 
> возможна ли в perl конструкция вида import foo as bar

В perl возможно все, чаще всего минимум двумя способами. Спрашивать, есть ли в perl что-то из python, можно только смеху ради. Конкретно эта фича легко реализуется за счет того, что таблицы символов это просто хеши и работает конструкция вида %Bar::=%Foo::


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено ragus , 23-Май-13 01:35 
>> возможна ли в perl конструкция вида import foo as bar
> В perl возможно все, чаще всего минимум двумя способами. Спрашивать, есть ли
> в perl что-то из python, можно только смеху ради. Конкретно эта
> фича легко реализуется за счет того, что таблицы символов это просто
> хеши и работает конструкция вида %Bar::=%Foo::

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


>>> import os
>>> globals()['oos'] = os
>>> del globals()['os']
>>> oos

<module 'os' from '/usr/lib/python2.7/os.pyc'>

но это всё - игры с внутренними структурами интерпретатора.

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

так что речь не о хаках, а штатных возможностях языка.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 23-Май-13 01:59 
> так что речь не о хаках, а штатных возможностях языка.

у перла хаки — штатная возможность же.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено web , 21-Май-13 02:55 
такая конструкция в питоне с 2000 года.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Фигов , 20-Май-13 13:37 
Главное достижение - никаких революций, молодцы.

И это правильно. Работать надо, а не код из-за версий перелопачивать.



"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 15:23 
по мне, так из перла уже ничего делать не нужно, т.к. наворочено не просто много, а ооочень много! куда не плюнь, везде его применять можно, хоть веб, хоть сервер дшспи написать.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 15:31 
вот и суют куда барбос свой хер не совал, почем зря

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 17:20 
> вот и суют куда барбос свой хер не совал, почем зря

Это вы про shell-скрипты?


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Anton , 20-Май-13 15:43 
Жаль что smartmatch объявили экспериментальным (с выдачей warning при его использовании). Возможность удобная.

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено Аноним , 20-Май-13 17:19 
> Жаль что smartmatch объявили экспериментальным (с выдачей warning при его использовании).
> Возможность удобная.

Ну так присоединитесь к проекту и отладьте ее до стабильного состояния, делов-то.


"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено mahoro , 21-Май-13 16:25 
Он не интерпретатор, а компилятор :)

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено iZEN , 23-Сен-13 21:10 
Сегодня случайно узнал, оказывается есть версия Perl новее 5.16. Обновил до версии perl-5.18.1_1 и модули p5-*, сейчас пересобираются зависимости. В чём преимущества крайней версии, кто-нибудь ощутил?

"Релиз интерпретатора языка программирования Perl 5.18"
Отправлено arisu , 24-Сен-13 02:46 
> Сегодня случайно узнал, оказывается есть версия Perl новее 5.16.

brilliant!