Ушла эпоха
Примерно в начале двухтысячных много программировал на Перле. Сейчас его заслуженно не любят, а в те времена на нём делалось много веба. С того времени прошла пара десятилетий, но меня почему-то всё не отпускает — время от времени интересуюсь что происходит с этим языком.
Вообще, Перл я любил, но была одна вещь, от которой меня некисло бомбило — это синтаксис передачи параметров в функции. Полюбуйтесь:
print sub {
my ($a, $b) = @_;
return $a + $b;
}->(1, 2);
Язык помещает параметры в специальную переменную @_ (с символа «собачки» в Перле начинаются массивы), откуда их можно достать любыми способами, которые подходят для массива. Всратейший синтаксис с кучей граблей. Самые очевидные — в случае копирования единственного параметра забыть скобки вокруг переменной и получить вместо параметра длину массива аргументов. Так устроен Перл — при присваивании массива скаляру мы получаем его длину.
Самые аккуратные ребята могли бы задавать так называемые «прототипы», где в специальных значках выражалось что функции хотелось бы получить на вход, например вот так: $$$;$. Но такое в чужом коде я видел только в учебниках, так как этот птичий язык мало кто помнил.
И вот недавно я читаю, что в версии 5.36 зарелизили синтаксис сигнатур, позволяющий явно определить параметры функции, полюбуйтесь какая красота:
use v5.36;
sub range($from, $to, $step = 1) {
my $current;
return sub {
($from, $current) = ($from + $step, $from);
return undef if $current > $to;
return $current;
}
}
my $iter = range(0, 256);
while (defined (my $v = $iter->())) {
print $v, "\n"
}
Теперь всё как у всех — аргументы сразу имеют нормальные имена, а чтобы понять что у нас опциональное, не надо считать количество знаков в прототипе.
Не знаю зачем Перл до сих пор ковыряют, но времена у нас нынче самые неожиданные, вдруг он по какой-то нелепой причине опять ворвётся в тренды.
Ну, когда ворвется, тогда и вспомним. Удачного пути, «Перл»!
Да, я его тоже непонятно зачем помню ) Странно, 20 лет прошло, а помнится хорошо)
Пока еще есть большая база унаследованного кода. Поэтому кому-то приходится ковырять. Но новых проектов, конечно, уже не начинают.
Для чего-то его совершенствуют же.
так разве сам автор не потерял к нему интерес переименовав perl 6 в raku?
Так там два Перла существуют, а не один ) Первый — Perl 5, второй — Raku (бывший Perl 6), оба развиваются параллельно многие годы. Переименование сделано не из-за потери интереса, а из-за того, что Perl 6 превратился в другой язык, совершенно несовместимый с Perl 5.
Да кому нужен этот «Перл»?
Задаюсь тем же вопросом.
Перл-перл
а?