The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Релиз интерпретатора языка программирования Perl 5.18"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от opennews (ok) on 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.dev/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.dev/opennews/art.shtml?num=36968

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от noize (ok) on 20-Май-13, 12:35 
В тред призываются "хоронители" перла. А я запасаюсь попкорном)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Релиз интерпретатора языка программирования Perl 5.18"  –19 +/
Сообщение от arisu (ok) on 20-Май-13, 13:20 
> В тред призываются "хоронители" перла. А я запасаюсь попкорном)

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

15. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от sanchous on 20-Май-13, 13:25 
надо было подготовиться хоть как-то
про перл6 шутка не модная и давно заезженная
здесь разговор про перл5 сейчас
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "Релиз интерпретатора языка программирования Perl 5.18"  –16 +/
Сообщение от arisu (ok) on 20-Май-13, 13:33 
а я и не шучу, собственно. понятно, что у перлоидов от упоминания перл6 поппеншмерц. но я всё равно не шучу.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

107. "Релиз интерпретатора языка программирования Perl 5.18"  –2 +/
Сообщение от 80е on 21-Май-13, 00:23 
>> деприкатед, и
> чё будем делать!??

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

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

22. "Релиз интерпретатора языка программирования Perl 5.18"  +9 +/
Сообщение от Аноним (??) on 20-Май-13, 13:42 
> ну, вот он я. где же хвалёный пёрл6? когда же уже прекратят насиловать труп и осилят?

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

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

71. "Релиз интерпретатора языка программирования Perl 5.18"  –5 +/
Сообщение от arisu (ok) on 20-Май-13, 18:42 
> Perl6 — это совершенно другой язык, не имеющий никакого отношения к теме
> обсуждения.

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

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

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #71 | Наверх | Cообщить модератору

39. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от Anton (??) on 20-Май-13, 15:41 
perl6 это новый язык, а не следующая после perl5 версия perl.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору
Часть нити удалена модератором

97. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от nagual email(ok) on 20-Май-13, 20:30 
> волосы на ладонях от гвидобейсика растут. всем известно. а голых баб лучше
> живьем щупать, нежели в тырнетах смотреть

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

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #90 | Наверх | Cообщить модератору

100. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от arisu (ok) on 20-Май-13, 20:35 
> Ты до сих пор живешь с мамой ? 8)

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

Ответить | Правка | ^ к родителю #96 | Наверх | Cообщить модератору

94. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от AlexAT (ok) on 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.

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

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

118. "Релиз интерпретатора языка программирования Perl 5.18"  –2 +/
Сообщение от pro100master (ok) on 21-Май-13, 10:14 
>x86_64 x86_64 x86_64 GNU/Linux

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

Ответить | Правка | ^ к родителю #94 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #118 | Наверх | Cообщить модератору

120. "Релиз интерпретатора языка программирования Perl 5.18"  –2 +/
Сообщение от pro100master (ok) on 21-Май-13, 11:19 
>>>x86_64 x86_64 x86_64 GNU/Linux
>> а почему только 3 раза?)
> Потому что архитектура i386, это 3 раза по 86

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

Ответить | Правка | ^ к родителю #119 | Наверх | Cообщить модератору

3. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от 1 (??) on 20-Май-13, 12:56 
Хммм ... а z/OS то, почему выпилили ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Релиз интерпретатора языка программирования Perl 5.18"  –5 +/
Сообщение от Аноним (??) on 20-Май-13, 12:57 
Когда уже допилят этот несчастный Regex до полноценного языка программирования высокого уровня?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от Аноним (??) on 20-Май-13, 12:59 
чтобы любой текстушный бред на входе компилировал в бинарь, делающий что-то осмысленное и полезное.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

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

Fortran?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от Ag (ok) on 20-Май-13, 13:07 
Грамматики Perl6 ждут вас. :)
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

95. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от rshadow (ok) on 20-Май-13, 20:28 
Баттхерт при виде регулярного выражения? Хочется немедленно удалить строку и расписать нормальным алгоритмом строк на 100? Попробуйте сменить профессию...
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору
Часть нити удалена модератором

98. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от rshadow (ok) on 20-Май-13, 20:31 
Жрать кактусы отнюдь не в духе перловиков. Ведь их зарплаты выше чем си, питон, пхп,...
Ответить | Правка | ^ к родителю #104 | Наверх | Cообщить модератору

99. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от arisu (ok) on 20-Май-13, 20:34 
> Баттхерт при виде регулярного выражения? Хочется немедленно удалить строку и расписать
> нормальным алгоритмом строк на 100? Попробуйте сменить профессию…

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

Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

7. "Релиз интерпретатора языка программирования Perl 5.18"  –3 +/
Сообщение от codejumper on 20-Май-13, 13:01 
> приводит к непредсказуемому порядку вывода элементов функциями keys(), values() и each()

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

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

welcome to spagetti code

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

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

а так молодцы

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

117. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от oleg email(??) on 21-Май-13, 09:57 
К сожалению я тоже такое выдел.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

75. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от arisu (ok) on 20-Май-13, 18:53 
как показывает практика, доки мало кто читает. одно из самых красивых доказательств тому — не столь давнее изменение поведения memcpy(). стандарт не нарушен, man остался такой же — а у СуперПрограммеров дупы повыворачивало.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

127. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от НуфНуф on 21-Май-13, 17:05 
В Перл таких не берут.
Ответить | Правка | ^ к родителю #75 | Наверх | Cообщить модератору

131. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от arisu (ok) on 21-Май-13, 19:08 
> В Перл таких не берут.

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

Ответить | Правка | ^ к родителю #127 | Наверх | Cообщить модератору

136. "Релиз интерпретатора языка программирования Perl 5.18"  –2 +/
Сообщение от nagual email(ok) on 21-Май-13, 21:49 
>> В Перл таких не берут.
> их там разводят?

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

Ответить | Правка | ^ к родителю #131 | Наверх | Cообщить модератору

137. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от arisu (ok) on 21-Май-13, 21:57 
а мне намного более удивительно, что может знать о культуре и высокообразованности человек, которому при виде слова «разводят» первым делом приходит в голову жаргонное значение слова, а не конвенциально-словарное.
Ответить | Правка | ^ к родителю #136 | Наверх | Cообщить модератору

139. "Релиз интерпретатора языка программирования Perl 5.18"  –3 +/
Сообщение от nagual email(ok) on 21-Май-13, 23:57 
> а мне намного более удивительно, что может знать о культуре и высокообразованности
> человек, которому при виде слова «разводят» первым делом приходит в голову
> жаргонное значение слова, а не конвенциально-словарное.

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

Ответить | Правка | ^ к родителю #137 | Наверх | Cообщить модератору

140. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от arisu (ok) on 22-Май-13, 00:55 
да я не о всех, а о тебе. и не по себе — это же не мне в голову приходит первым делом сленговое толкование.
Ответить | Правка | ^ к родителю #139 | Наверх | Cообщить модератору

8. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от Ag (ok) on 20-Май-13, 13:04 
Радуют.
А вот с z/OS - неприятный сюрприз.
Хоть и не часто, но требуется мне там Perl.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от noize (ok) on 20-Май-13, 13:08 
Подскажите, где используется данная система?
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от Ag (ok) on 20-Май-13, 13:13 
> Подскажите, где используется данная система?

На IBM mainframe - System/z.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

26. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от Аноним (??) on 20-Май-13, 14:01 
Статуя Капитана Очевидности из чистого серебра в полный рост :D
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Релиз интерпретатора языка программирования Perl 5.18"  –5 +/
Сообщение от arisu (ok) on 20-Май-13, 13:23 
> Подскажите, где используется данная система?

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

24. "Релиз интерпретатора языка программирования Perl 5.18"  +3 +/
Сообщение от Аноним (??) on 20-Май-13, 13:44 
> в Кровавом Интырпрайзе. Кровавый Интырпрайз любит только зарабатывать, а потратить немного заработанного на модернизацию — не любит. удавится скорее.

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

73. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от arisu (ok) on 20-Май-13, 18:46 
тихо, что ты контору палишь? всю еду распугаешь!
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

18. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от Фигов on 20-Май-13, 13:35 
use Perl5.16, Perl5.14 ...

Welcome!

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от Аноним (??) on 20-Май-13, 13:47 
> теперь хотелось бы услышать перловодов, которые обвиняли питон в отсутствии обратной совместимости, приводя в контрпример перл.

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

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

28. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от имя on 20-Май-13, 14:07 
И эти люди идут потом в новости про PHP кричать, что он уродливый в том числе оттого, что из него кучу legacy всё никак не выкинут.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

51. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от Аноним (??) on 20-Май-13, 17:18 
> И эти люди идут потом в новости про PHP кричать, что он
> уродливый в том числе оттого, что из него кучу legacy всё
> никак не выкинут.

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

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

143. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от Мяут (ok) on 22-Май-13, 09:15 
Ну Python2 и Python3 тоже как бы разные ветки языка. :)
Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

29. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от Crazy Alex (ok) on 20-Май-13, 15:16 
В перле поддержка прекращается того, что либо некому поддерживать,либо того, что по факту сто лет как не используется. По "идеологическим" причинам ничего не выбрасывается.
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

50. "Релиз интерпретатора языка программирования Perl 5.18"  –2 +/
Сообщение от Аноним (??) on 20-Май-13, 17:17 
> Если вы потрудитесь перечитать новость - поймете сами.

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

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

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

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

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

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

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

74. "Релиз интерпретатора языка программирования Perl 5.18"  –6 +/
Сообщение от arisu (ok) on 20-Май-13, 18:48 
> А теперь сравните это со списком изменений python2 -> python3.

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

Ответить | Правка | ^ к родителю #63 | Наверх | Cообщить модератору

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

81. "Релиз интерпретатора языка программирования Perl 5.18"  –3 +/
Сообщение от arisu (ok) on 20-Май-13, 19:24 
может, потому, что у меня не «бледное» понятие.
Ответить | Правка | ^ к родителю #76 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

47. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от Аноним (??) on 20-Май-13, 17:03 
если совместимость python2 и 3, то "six"

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


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

Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

60. "Релиз интерпретатора языка программирования Perl 5.18"  +4 +/
Сообщение от www2 (ok) on 20-Май-13, 17:43 
>определенная вещь решается оптимизированно и определенно

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

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

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

103. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от rshadow (ok) on 20-Май-13, 20:48 
Он не может ошибиться форумом. Для этого нужно понимать о чем говоришь.
Ответить | Правка | ^ к родителю #88 | Наверх | Cообщить модератору

102. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от rshadow (ok) on 20-Май-13, 20:47 
> from __future__ import ...

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

   use feature ...

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

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

105. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от ragus (ok) on 20-Май-13, 21:35 
>еще бы так же лаконично смотрелось как в перле

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

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

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

Ответить | Правка | ^ к родителю #102 | Наверх | Cообщить модератору

106. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от noize (ok) on 20-Май-13, 22:25 
В перле регэкспы встроены в ядро. Менять их ни на что не нужно.
Ответить | Правка | ^ к родителю #105 | Наверх | Cообщить модератору

110. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от ragus (ok) on 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?).

Ответить | Правка | ^ к родителю #106 | Наверх | Cообщить модератору

111. "Релиз интерпретатора языка программирования Perl 5.18"  +3 +/
Сообщение от arisu (ok) on 21-Май-13, 07:37 
сравнивать pcre и re2 как минимум некорректно: они не полностью взаимозаменяемы.

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

Ответить | Правка | ^ к родителю #110 | Наверх | Cообщить модератору

112. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от ragus (ok) on 21-Май-13, 07:52 
> сравнивать pcre и re2 как минимум некорректно: они не полностью взаимозаменяемы.

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

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

Ответить | Правка | ^ к родителю #111 | Наверх | Cообщить модератору

113. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от arisu (ok) on 21-Май-13, 07:56 
дык в перле, в принципе, никто не мешает использовать другие движки. но обычно всем просто лень, потому что патологические случаи научились «нюхом чуять».
Ответить | Правка | ^ к родителю #112 | Наверх | Cообщить модератору

114. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от noize (ok) on 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. "

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

Ответить | Правка | ^ к родителю #110 | Наверх | Cообщить модератору

115. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от ragus (ok) on 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

Ответить | Правка | ^ к родителю #114 | Наверх | Cообщить модератору

122. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от noize (ok) on 21-Май-13, 11:49 
эмм...подскажите, а где взять эти re2 и regexp ? Хочу протестировать
Ответить | Правка | ^ к родителю #115 | Наверх | Cообщить модератору

128. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 21-Май-13, 17:39 
> эмм...подскажите, а где взять эти re2 и regexp ? Хочу протестировать

pip install regex
pip install re2

Ответить | Правка | ^ к родителю #122 | Наверх | Cообщить модератору

134. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от noize (ok) on 21-Май-13, 21:34 
regex однако впечатлил. Поставить re2 мне не удалось, так как требуется тянуть библиотеку с code.google
Но всё-равно, разрабы молодцы.
Ответить | Правка | ^ к родителю #128 | Наверх | Cообщить модератору

125. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от VVM (ok) on 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/перед запуском теста?

Ответить | Правка | ^ к родителю #115 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #114 | Наверх | Cообщить модератору

123. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от noize (ok) on 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 отношусь нейтрально

Ответить | Правка | ^ к родителю #116 | Наверх | Cообщить модератору

124. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от arisu (ok) on 21-Май-13, 12:04 
(вздыхает) я вообще не считаю Новый Whitespace нормальным языком. и речь я вёл вовсе не о нём. но это всё в принципе не важно, потому что нет у меня сегодня ни настроения ругаться, ни настроения что-либо растолковывать. муть это всё бессмысленная.
Ответить | Правка | ^ к родителю #123 | Наверх | Cообщить модератору

129. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 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.

Ответить | Правка | ^ к родителю #123 | Наверх | Cообщить модератору

135. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от noize (ok) on 21-Май-13, 21:38 
> у них главная беда в том, что они write-only.

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

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

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

Ответить | Правка | ^ к родителю #129 | Наверх | Cообщить модератору

141. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 22-Май-13, 06:48 
>> у них главная беда в том, что они write-only.
> возможно. Но в перле регулярки использовать удобно. Повторюсь, они встроены в ядро
> языка и позволяют делать различные плюшки вида

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

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

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

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

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

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

Ответить | Правка | ^ к родителю #135 | Наверх | Cообщить модератору

142. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от noize (ok) on 22-Май-13, 09:03 
> смысл практический в этом? hardcoded pattern'ы?

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

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

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

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

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

Ответить | Правка | ^ к родителю #141 | Наверх | Cообщить модератору

144. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 22-Май-13, 09:18 
> а в чём вообще смысл использования регулярных выражений?

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

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

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

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

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

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


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

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

Ответить | Правка | ^ к родителю #142 | Наверх | Cообщить модератору

145. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от noize (ok) on 22-Май-13, 10:07 
> достаточно редкие ситуации, когда нет желания писать полноценный парсер или же какие-то простые случаи.

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

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

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

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

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

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

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

Ответить | Правка | ^ к родителю #144 | Наверх | Cообщить модератору

148. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 23-Май-13, 01:20 
> я не знаю как в питоне, но в разработке на перле мне
> периодически, не так уж и редко приходится сталкиваться с подобными задачами.
> И под каждую из задач не напишешь парсер.

например?


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

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

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

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

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

Ответить | Правка | ^ к родителю #145 | Наверх | Cообщить модератору

146. "Релиз интерпретатора языка программирования Perl 5.18"  +2 +/
Сообщение от angra (ok) on 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 болтается на задворках, а не вытеснил другие реализации?

Ответить | Правка | ^ к родителю #144 | Наверх | Cообщить модератору

147. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 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...

Ответить | Правка | ^ к родителю #146 | Наверх | Cообщить модератору

151. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от angra (ok) on 23-Май-13, 08:18 
> 1)вы переоцениваете важность регекспов.

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

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

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

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

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

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

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


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

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

Ответить | Правка | ^ к родителю #147 | Наверх | Cообщить модератору

108. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от rex email(??) on 21-Май-13, 00:50 
можно, но сам не пробовал; задач для которых это критично не было
Ответить | Правка | ^ к родителю #105 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #105 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #121 | Наверх | Cообщить модератору

138. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от angra (ok) on 21-Май-13, 22:03 
> возможна ли в perl конструкция вида import foo as bar

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

Ответить | Правка | ^ к родителю #105 | Наверх | Cообщить модератору

149. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от ragus (ok) on 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 и в рантайме узнавать кто позвал ту или иную функцию, из какой строчки и какими аргументами. если же совсем извращаться, то можно лазить по стэку вызовов и патчить чужой код.

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

Ответить | Правка | ^ к родителю #138 | Наверх | Cообщить модератору

150. "Релиз интерпретатора языка программирования Perl 5.18"  +1 +/
Сообщение от arisu (ok) on 23-Май-13, 01:59 
> так что речь не о хаках, а штатных возможностях языка.

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

Ответить | Правка | ^ к родителю #149 | Наверх | Cообщить модератору

109. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от web on 21-Май-13, 02:55 
такая конструкция в питоне с 2000 года.
Ответить | Правка | ^ к родителю #102 | Наверх | Cообщить модератору

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

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


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

33. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от Аноним (??) on 20-Май-13, 15:23 
по мне, так из перла уже ничего делать не нужно, т.к. наворочено не просто много, а ооочень много! куда не плюнь, везде его применять можно, хоть веб, хоть сервер дшспи написать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

34. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от Аноним (??) on 20-Май-13, 15:31 
вот и суют куда барбос свой хер не совал, почем зря
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

53. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от Аноним (??) on 20-Май-13, 17:20 
> вот и суют куда барбос свой хер не совал, почем зря

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

Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

40. "Релиз интерпретатора языка программирования Perl 5.18"  –1 +/
Сообщение от Anton (??) on 20-Май-13, 15:43 
Жаль что smartmatch объявили экспериментальным (с выдачей warning при его использовании). Возможность удобная.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

126. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от mahoro (??) on 21-Май-13, 16:25 
Он не интерпретатор, а компилятор :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

152. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от iZEN (ok) on 23-Сен-13, 21:10 
Сегодня случайно узнал, оказывается есть версия Perl новее 5.16. Обновил до версии perl-5.18.1_1 и модули p5-*, сейчас пересобираются зависимости. В чём преимущества крайней версии, кто-нибудь ощутил?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

153. "Релиз интерпретатора языка программирования Perl 5.18"  +/
Сообщение от arisu (ok) on 24-Сен-13, 02:46 
> Сегодня случайно узнал, оказывается есть версия Perl новее 5.16.

brilliant!

Ответить | Правка | ^ к родителю #152 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру