|
|
|
4.7, Anonymus (?), 20:23, 27/05/2014 [^] [^^] [^^^] [ответить]
| +6 +/– |
Я тоже не пойму зачем портить классику. Придумали же вон, LLVM, любой школьнег теперь может любой язык себе замастырить.
| |
|
|
2.4, Аноним (-), 20:06, 27/05/2014 [^] [^^] [^^^] [ответить]
| +1 +/– |
>Директива "use locale" теперь может применяться с локалями UTF-8 (ранее поддерживались только однобайтные локали)
Это круче в 2014-м
| |
2.8, angra (ok), 20:30, 27/05/2014 [^] [^^] [^^^] [ответить]
| +8 +/– |
И наконец-то сжалились над товарищами с квадратно-гнездовым мышлением, приходящими с других ЯП, и запилили для них костыль. Осталось добавить в ядро какую-нибудь надстройку над ООП вроде moo, а то дефолтное ООП беднягам тоже мозг выносит.
| |
|
3.10, freehck (ok), 20:38, 27/05/2014 [^] [^^] [^^^] [ответить]
| +6 +/– |
В общем-то да, это ведь всего-то лишь синтаксический сахар. К тому же, парсинг параметров при помощи @_ на мой взгляд есть штука куда более гибкая, чем может то предложить сигнатурная модель объявления функции.
| |
|
4.39, еще 1 аноним (?), 09:08, 28/05/2014 [^] [^^] [^^^] [ответить]
| +3 +/– |
И более запутанная. Пример наглядно показывает как 4 строчки вырождаются в 1 (понятно что в откомпиленном те же 4 строчки и остались). На мой взгляд сигнатурный способ позволяет уже на этапе написания избежать кучи ошибок. Но заметьте, никто старый способ не выпилил, поэтому дело вкуса и необходимости. Хочется писать по-старому / нужно парсить переменное количество аргументов - пишите, никто вам не запрещает
| |
|
5.45, Pilat (ok), 12:31, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> И более запутанная. Пример наглядно показывает как 4 строчки вырождаются в 1
> (понятно что в откомпиленном те же 4 строчки и остались). На
> мой взгляд сигнатурный способ позволяет уже на этапе написания избежать кучи
> ошибок. Но заметьте, никто старый способ не выпилил, поэтому дело вкуса
> и необходимости. Хочется писать по-старому / нужно парсить переменное количество аргументов
> - пишите, никто вам не запрещает
Всё равно новая версия перла станет актуальной только через несколько лет - когда до дистрибутивов дойдёт, так что вопрос академический. Да и надо как-то решить вопрос с объявлением параметров с помощью старого Function::Parameters, MooseX::Declare и н ового метода и понять на практике что будет при смешивании этих стилей, что будет видно в отладчиках и профайлерах, что будет делать с тавими функциями EPIC в Eclipse, как будет форматировать perltidy, и куча вопросов которые сходу не приходят в голову. Вообще нововведение выглядит очень хорошим, странно что так долго его вводили.
Не хватает Best Practice как руководства по новым возможностям перла, что рекомендуется использовать, что нет.
| |
|
6.65, Аноним (-), 14:50, 31/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
>> И более запутанная. Пример наглядно показывает как 4 строчки вырождаются в 1
>> (понятно что в откомпиленном те же 4 строчки и остались). На
>> мой взгляд сигнатурный способ позволяет уже на этапе написания избежать кучи
>> ошибок. Но заметьте, никто старый способ не выпилил, поэтому дело вкуса
>> и необходимости. Хочется писать по-старому / нужно парсить переменное количество аргументов
>> - пишите, никто вам не запрещает
> Всё равно новая версия перла станет актуальной только через несколько лет -
> когда до дистрибутивов дойдёт, так что вопрос академический.
Думаю, будет уже в OpenBSD 5.6 (ноябрь 2014) или 5.7 (май 2015). Эта ОС едва ли не больше прочих полагается на Perl; в первую очередь — в подсистеме управлении пакетами.
| |
|
5.46, Q2W (?), 12:45, 28/05/2014 [^] [^^] [^^^] [ответить]
| +1 +/– |
Вообще-то пример из статьи плохой, т.к. используй прототипы уже 100 лет, как можно написать так:
sub foo($$)
{
my($left, $right) = @_;
return $left + $right;
}
А если экономить на кол-ве строчек, так вообще можно так:
sub foo($$){shift+shift}
| |
|
6.66, Аноним (-), 14:52, 31/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Вообще-то пример из статьи плохой, т.к. используй прототипы уже 100 лет, как
> можно написать так:
> sub foo($$)
> {
> my($left, $right) = @_;
> return $left + $right;
> }
> А если экономить на кол-ве строчек, так вообще можно так:
> sub foo($$){shift+shift}
Прототипы были придуманы для другого: не для экономии или удобства, а для возможности создания функциональных аналогов встроенным функциям Perl вроде push().
| |
|
5.51, TheAthlete (?), 13:55, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
На самом деле старый способ не выпилили, т.к. парсер не может выявить использование @_ в подпрограммах на этапе компиляции, т.к. некоторые части программы могут определяться только на этапе исполнения. Например, при выполнении eval кода, содержащегося в строке:
sub foo {
eval 'say for @_';
}
Dave Mitchell также привёл пример с выполнением кода в регулярных выражениях:
$pat = qr/(?{ print "[$_]\n" for @_ })/;
sub f($str, $pat) { $str =~ $pat }
Поэтому пока переменная @_ по-прежнему доступна в функциях с сигнатурой.
См. http://pragmaticperl.com/issues/13/pragmaticperl-13-сигнатура-функции-в-perl-
| |
|
|
3.11, Аноним (-), 20:39, 27/05/2014 [^] [^^] [^^^] [ответить]
| –7 +/– |
Вам охота в каждой функции вручную проверять количество аргументов, присваивать значения по умолчанию и т. д.? Вам заняться больше нечем? Кроме того, при наличии явной сигнатуры можно проверять правильность вызова функций на этапе трансляции, а не отлавливать ошибки в редко используемых кусках кода во время исполнения.
| |
|
4.12, www2 (??), 20:49, 27/05/2014 [^] [^^] [^^^] [ответить]
| +2 +/– |
>Кроме того, при наличии явной сигнатуры можно проверять правильность вызова функций на этапе трансляции, а не отлавливать ошибки в редко используемых кусках кода во время исполнения.
Разочарую вас, но кроме сигнатур в Perl ещё есть прототипы функций. С их помощью можно проверять правильность вызова функций на этапе трансляции. Более того, я всегда ими пользуюсь и отлавливаю такие ошибки.
| |
|
|
6.22, angra (ok), 23:09, 27/05/2014 [^] [^^] [^^^] [ответить]
| +2 +/– |
В доке их тоже рекомендуют не использовать и даже объясняют причины. В первую очередь из-за того, что многие их используют не по назначению, а для этой самой дурацкой проверки количества аргументов.
| |
|
7.68, www2 (??), 16:58, 06/06/2014 [^] [^^] [^^^] [ответить]
| +/– |
> В доке их тоже рекомендуют не использовать и даже объясняют причины. В
> первую очередь из-за того, что многие их используют не по назначению,
> а для этой самой дурацкой проверки количества аргументов.
Почему же дурацкой? Как perlcritic аргументирует свою неприязнь к такой проверке?
И не только количество проверяется, но и тип - скаляр, массив или хэш. Массив или хэш, правда, можно указать только один и только в конце, но и то хорошо. Кроме того, можно отделить точкой с запятой необязательные аргументы. Вполне себе полезный функционал, за неимением лучшего.
| |
|
|
|
4.15, angra (ok), 21:24, 27/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
>вручную проверять количество аргументов
Не занимаюсь подобными глупостями.
>присваивать значения по умолчанию
Очень редко нужно
>при наличии явной сигнатуры можно проверять правильность вызова функций на этапе трансляции
И получить ложную уверенность в ее правильности. Спасибо, мне не нужно. Перепутать порядок следования аргументов куда легче, чем забыть их количество.
Единственное, что мне слегка надоедает писать, это строки типа
my $self=shift;
Я даже знаю несколько способов как этого избежать, но применять их мне еще более лениво :)
| |
|
|
2.17, АнониМ (ok), 21:58, 27/05/2014 [^] [^^] [^^^] [ответить]
| +3 +/– |
>Шел 2014-й год.
это синтаксический сахар для новичков.
зря добавили - старый путь он приводил к пониманию, как в перле работают функции, чего там происходит и т.п., а теперь это понимание прячут, что не есть гуд.
все нововведения окромя возможно copy-on-write со строками в 20 версии имно ниочем.
| |
|
|
2.9, angra (ok), 20:32, 27/05/2014 [^] [^^] [^^^] [ответить]
| –2 +/– |
Скорее всего так и останется чисто исследовательским проектом без практической реализации.
| |
2.16, Угу (?), 21:37, 27/05/2014 [^] [^^] [^^^] [ответить] | +1 +/– | В современном мире программное обеспечение становится достаточно большим и сложн... большой текст свёрнут, показать | |
|
3.33, Аноним (-), 04:08, 28/05/2014 [^] [^^] [^^^] [ответить]
| +2 +/– |
Запор прямой кишки лечится, не надо так мучиться как ты тут :)
| |
|
2.28, kurokaze (ok), 23:58, 27/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> А когда же Perl 6 !?
# tail /usr/portage/dev-lang/rakudo/ChangeLog
[...]
*rakudo-2009.12 (08 Jan 2010)
08 Jan 2010; Patrick Lauer <patrick@gentoo.org> +rakudo-2009.12.ebuild
4 года уже какбы
| |
|
3.38, angra (ok), 09:05, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
Вот только для практического применения rakudo, как впрочем и остальные реализации, не годится - тормозит просто дичайше. Они с самого начала оправдывались, что сначала сделаем все фичи, а уже потом оптимизации. То, что скорость надо будет поднять минимум на три порядка их не смущало. Последние пару лет оптимизируют. У них даже получилось ускорится на порядок, звучит круто, но только пока не вспоминаешь, что perl5 все еще на два порядка быстрее. Так что в для практиков perl6 скорее всего так и не появится.
| |
|
4.48, kurokaze (ok), 12:51, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Вот только для практического применения rakudo, как впрочем и остальные реализации, не
> годится - тормозит просто дичайше.
И чего? Жабка тоже тормозит по сравнению с нативом, а используют.
> два порядка быстрее. Так что в для практиков perl6 скорее всего так и не появится.
Тут дело имхо не в скокрости, а в том что народу хватает того что есть. Когда не хватает на скорость плюют.
Вот на руби жалуются что тормозит, а я например (на локальном core-i7 для своих задач) этого не очущаю
| |
|
3.52, TheAthlete (?), 14:04, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
Где вы такое увидели?
На сайте rakudo.org:
Announce: Rakudo Star Release 2014.04
This is the first Rakudo Star release with support for the MoarVM backend (all module tests pass on supported platforms) along with experimental support for the JVM backend (some module tests fail).
Т.е. они задеплоиили поддержку в качестве бэкэнда MoarVM и экспериментальную поддержку JVM. По-моему неплохо
| |
|
|
1.19, Аноним (-), 22:28, 27/05/2014 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Да ладно, вам, зубоскалы!
Сигнатуры *давно* существовали, просто в качестве необязательных модулей, к-е можно было прикрутить к перлу. Например, https://metacpan.org/pod/Function::Parameters . Кому надо - использовал, кому не надо - не использовал.
Сейчас это в ядре перла сделали очень аккуратно, чтобы не поломать обратную совместимость, т.е. чтобы код 25-летней давности продолжал работать на современной версии интерпретатора.
| |
|
2.29, kurokaze (ok), 23:59, 27/05/2014 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Сейчас это в ядре перла сделали очень аккуратно, чтобы не поломать обратную
> совместимость, т.е. чтобы код 25-летней давности продолжал работать на современной версии интерпретатора.
бидонистам этого не понять, для них это ересь
| |
|
3.31, Аноним (-), 01:23, 28/05/2014 [^] [^^] [^^^] [ответить]
| –4 +/– |
>бидонистам этого не понять, для них это ересь
Orly? а ЧЕГО ЖЕ ТОГДА :
>>прекращена поддержка ветки 5.16
дЖва года прошло - и снова всё переписывай?
| |
|
4.32, rob pike (?), 01:39, 28/05/2014 [^] [^^] [^^^] [ответить]
| +4 +/– |
>прекращена поддержка ветки 5.16
Это означает что не будет 5.16.4, 5.16.5 и так далее.
| |
|
5.34, Аноним (-), 04:11, 28/05/2014 [^] [^^] [^^^] [ответить]
| –3 +/– |
>>прекращена поддержка ветки 5.16
> Это означает что не будет 5.16.4, 5.16.5 и так далее.
Ну я и говорю - как и в питоне, уже нет 1.*, 2.[123].* ...
| |
|
6.36, chinarulezzz (ok), 05:09, 28/05/2014 [^] [^^] [^^^] [ответить]
| +9 +/– |
версий нет, но код то есть. И этот код сам не перепишется под новые версии питона 3.*, 4.*, 5.*, а в перле и переписывать не надо, всё и так работает.
| |
|
7.60, Аноним (-), 17:27, 28/05/2014 [^] [^^] [^^^] [ответить]
| –3 +/– |
> версий нет, но код то есть. И этот код сам не перепишется
> под новые версии питона 3.*, 4.*, 5.*, а в перле и
_как_и_в_перле_ :)
> переписывать не надо, всё и так работает.
И не надо звиздеть что оно само. А если "с лёгким напильником" - дык и у змеев есть 2->3 конвертер и тоже почти работающий :)))
| |
|
8.61, Аноним (-), 17:39, 28/05/2014 [^] [^^] [^^^] [ответить] | +1 +/– | Ты не уловил снова Идет развитие ветки 5 xx - это значит код в версии 5 xx рабо... текст свёрнут, показать | |
|
|
6.49, kurokaze (ok), 12:54, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Ну я и говорю - как и в питоне, уже нет 1.*,
> 2.[123].* ...
Когда вы говорите, такое впечатление что вы бредите (с)
dev-lang/python
Available versions:
(2.6) [M]2.6.8-r3 [M]~2.6.9
(2.7) 2.7.5-r3 ~2.7.5-r4 2.7.6 ~2.7.6-r1
(3.2) 3.2.5-r3 ~3.2.5-r4
(3.3) 3.3.2-r2 3.3.3 ~3.3.4 ~3.3.5
(3.4) ~3.4.0_rc1 ~3.4.0_rc3 ~3.4.0
[I] dev-lang/perl [...] 5.16.3(0/5.16)
| |
|
|
|
3.41, Аноним (-), 10:53, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
Еще как понять. Ты же не думаешь, что на python3 только из-за тормозов никто не переходит?
| |
|
|
1.35, Аноним (-), 04:20, 28/05/2014 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Поздравляю перловщиков!
Хоть сам уже юзаю редко, но приятно что не бросили :)
| |
1.37, Аноним (37), 08:04, 28/05/2014 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я так понял что модули CGI::* уходят в собственный цикл разработки и останутся?
Или замена на нечто другое?
| |
|
2.44, Pilat (ok), 12:23, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Я так понял что модули CGI::* уходят в собственный цикл разработки и
> останутся?
> Или замена на нечто другое?
Да просто сама модель web-сервисов как CGI скриптов уходит из моды, Mojolicious отлично маскирует всю CGI обработку, да и писать на нём проще чем создавать кучу CGI. Я уже и забыл когда нужен был CGI.pm .
| |
|
|
4.54, Pilat (ok), 14:32, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Catalyst ещё круче
Принципиального значения не имеет, В любом случае CGI нечасто сейчас используется.
Кстати, насчёт "круче" - а где об этом почитать можно? Сравнение. Пока я знаю только то, что Catalist включает Moose и DBIC - что с моей точки зрения минус, а не плюс.
| |
|
5.55, Andrey Mitrofanov (?), 14:52, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
> Кстати, насчёт "круче" - а где об этом почитать можно? Сравнение. Пока
Ну, %D почитай modernperlbooks.com/mt/2014/01/the-limits-of-a-programming-language-vision.html
> я знаю только то, что Catalist включает Moose и DBIC - | |
|
6.56, Pilat (ok), 14:54, 28/05/2014 [^] [^^] [^^^] [ответить]
| +/– |
>> Кстати, насчёт "круче" - а где об этом почитать можно? Сравнение. Пока
> Ну, %D почитай modernperlbooks.com/mt/2014/01/the-limits-of-a-programming-language-vision.html
Там разве про Catalist vs Mojolicious ?
| |
|
7.57, Andrey Mitrofanov (?), 15:14, 28/05/2014 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Там разве про Catalist vs Mojolicious ?
Там про то, то реагировать на "Catalyst ещё круче" вопросом "где об этом почитать" в новости про релиз перла неправильно. Или я опять тэги пропустил.
| |
|
8.58, Pilat (ok), 15:17, 28/05/2014 [^] [^^] [^^^] [ответить] | +1 +/– | Если встретился человек, знающий что Catalist круче Mojo, грех не спросить ... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
3.67, Antonio (??), 17:49, 04/06/2014 [^] [^^] [^^^] [ответить]
| +/– |
show me queues at "POE, Coro, AnyEvent, и еще пара десятков модулей." plz
| |
|
4.70, Аноним (-), 23:37, 10/03/2015 [^] [^^] [^^^] [ответить]
| +/– |
Coro::Channel, у POE и AnyEvent вообще другая модель, если нужна именно многопоточность, то есть forks - эмулирующий все апи threads на нормальных форках, т.к. threads это эмуляция форков для венды.
| |
|
|
|
1.62, Kodir (ok), 17:39, 28/05/2014 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Эх, стоило не пописать на Перле лет 10, как уже совсем другие вещи! Coro, Catalist, сигнатуры... Надо освежить память и написать очередной многопоточный веб-сервер.
| |
|