После года разработки опубликован релиз новой стабильной ветки языка программирования Perl - 5.42. При подготовке нового выпуска было изменено около 280 тысяч строк кода (без документации и автоматически сгенерированного кода - 93 тысячи), изменения затронули 1500 файлов, в разработке приняли участие 64 разработчика...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63519
где-то в обломках 20+летней давности:sub all{@_==grep$_,@_}
sub one{1==grep$_,@_}
sub none{!grep$_,@_}
sub any{!&none}
WhiteDragon,ты? Нашёл твой qxp.pm недавно. ;)Ты где сейчас работаешь?
миац местный админю
а с кем имею честь?
Да так, аноним обычный :), просто вспомнил тебя из IRC.
ну на #perl я по прежнему болтаюсь
Ну таки да. Почему бы и не засунуть на уровень языка действительно полезные макросы? (Да знаю я, что это процедуры, но фактически такие однострочники можно считать другой формой записи макросов, если это не обёртка)
если мне склероз не изменяет, я их себе слепил увидев их в perl6, когда он только только
и вроде бы я ниразу ими не воспользовался :)
но то, что это засунут прямо в язык - это хорошо
засунули бы еще бы чтото в духе:sub find(&@){no strict 'refs';local(*{(caller).'::a'})=\(my$a=$_[1]);&{$_[0]}||($a=$_)for(@_[2..$#_]);$a}
sub first(&@){$_[0]->()&&return$_ for@_[1..$#_]}
Шикарный синтаксис!
Прям все просто, понятно и совсем нет лишних закорючек.
И эти люди гонят на другие языки...
>Шикарный синтаксис!Как всегда, местные ыксперыды ничего кроме синтаксиса не видят. А я скажу, что самое плохое тут не синтаксис, а семантика. Хотя я не знаю перла, но определённые места выглядят явно подозрительно.
>no strict 'refs';Тормоза придумали трусы.
>local(*{(caller).'::a'})=Удачи в IDE воспользоваться поиском по коду.
>$_[1]Экономия на аргументах в ущерб читаемости. Опять же, удачи в статическом анализе. Анонимных кортежей крайне желательно избегать, особенно если у элементов одинаковый тип. Иначе понять, что где лежит - не получится.
>[оверквотинг удален]
> что самое плохое тут не синтаксис, а семантика. Хотя я не
> знаю перла, но определённые места выглядят явно подозрительно.
>>no strict 'refs';
> Тормоза придумали трусы.
>>local(*{(caller).'::a'})=
> Удачи в IDE воспользоваться поиском по коду.
>>$_[1]
> Экономия на аргументах в ущерб читаемости. Опять же, удачи в статическом анализе.
> Анонимных кортежей крайне желательно избегать, особенно если у элементов одинаковый тип.
> Иначе понять, что где лежит - не получится.если видишь no strict 'refs' значит до закрывающей блок скобки лучше ничего не трогать - это будет внутренняя магия
вся эта кухня с выключением стрикта и дерганьем a из коллера - это вполне себе нормально для внутренних модулей
ну у меня это тоже внутренний модуль
в боевой код такое не идет, само собой
>> $_[1]
> Экономия на аргументах в ущерб читаемостиКагбэ, для перловщика $_ - это один из краеугольных камней, поэтому никаких проблем с читаемостью "$_[1]" в принципе быть не может.
>поэтому никаких проблем с читаемостью "$_[1]" в принципе быть не может.Что это такое? Сколько всего аргументов? Какого они типа?
https://perldoc.perl.org/variables
Просвещайся
Короче - никакого. В перл типизации нет.
> Короче - никакого. В перл типизации нет.Правильнее - не "никакого", а "любого". А так - да, поздравляю. Ты заметил, что у амбара нет стены.
> Шикарный синтаксис!
> Прям все просто, понятно и совсем нет лишних закорючек.
> И эти люди гонят на другие языки...Автор не зря побеждал в конкурсах по запутанному программированию на си.
В синтаксисе вся суть верблюда...
> sub find(&@){no strict 'refs';local(*{(caller).'::a'})=\(my$a=$_[1]);&{$_[0]}||>>($a=$_)for(@_[2..$#_]);$a}
> sub first(&@){$_[0]->()&&return$_ for@_[1..$#_]}У кого более забористый синтаксис: Rust или Perl?
> У кого более забористый синтаксис: Rust или Perl?Перл побеждает с большим отрывом.
Синтаксису раста до него еще деградировать и деградировать...
Это лаконичнов. Вам не понять.
А, что тут непонятного?... Лаконичность ценой доп.рисков ошибок и нечитабельности другими, плохой читабельности другими хорошо знающими язык, как и ухудшением своей вычитки. Зато код чуть лаконичней...
> доп.рисков ошибок и нечитабельности другими, плохой читабельностиКак это доказать в логике или цифрах?
очевидно написать максимально близкую реализацию одной и той же задачи на трех языках, дать фокус группам (знающая перл / не знающая перл, но другие ЯП / не знающая ЯП вообще) и попросить объяснить что делает код. Вторая итерация - тоже самое, но попросить найти логическую ошибку.но вообще тебе ко всяким статистикам-методологистам с такими вопросами.
А смысл? С любым языком, который фокус-группа не знает, очевидно будут ошибки. Будь то хоть С++, Rust или даже (сюрприз!) Python - да, и он тоже до многих неочевидностей для не знающих доковылял.
Вы с другой стороны посмотрите, что бы наделать ошибок надо сперва хорошо по граблям походить. А далее снижение кол-во ошибок до минимума. Если, конечно же, человек не бросил.
> Вы с другой стороны посмотрите, что бы наделать ошибок надо сперва хорошо
> по граблям походить. А далее снижение кол-во ошибок до минимума. Если,
> конечно же, человек не бросил.я? не, я не бросил, для меня перл - основной инструмент
у APL
у перла же TMTOWTDI
perlstyle гласит Just because you CAN do something a particular way doesn't mean that you SHOULD do it that way. Perl is designed to give you several ways to do anything, so consider picking the most readable one.в моем случае я такие однострочники шлепал просто в формате перочинного ножа, чтобы были под руками
не нужно понимать что в них написано, считайте, что это уже компиленный бинарь
Самое забавное, что это как раз логичный и читаемый синтаксис, в отличие от раста.
> Самое забавное, что это как раз логичный и читаемый синтаксис, в отличие от раста.Да-да, $#_ очень логично и очень читабельно)) Прям совсем не writeonly йезычог.
Не зря попурность перла настолько упала.
$#_ максимально читаемо, кроме шуток. В расте ты бросив один взгляд на код, не сможешь понять, что он делает.
>> Самое забавное, что это как раз логичный и читаемый синтаксис, в отличие от раста.
> Да-да, $#_ очень логично и очень читабельно))Ну вообще-то да, читабельно. Нужно только мыслить в логике Perl.
Смотри, значит, как это работает:
- всё, что начинается на @ -- это массив
- всё, что начинается на $ -- это скаляр
- @_ -- это массив, который содержит все переданные в функцию аргументы
- $#_ -- это скаляр, который содержит индекс последнего элемента массива @_
- $_[$i] -- это скаляр, который возвращает $i-й элемент массива @_Таким образом, получаем вполне читаемый синтаксис:
sub print_args {
for (my $i = 0; $i <= $#_ ; $i++) {
print "$_[$i]\n";
}
}
> всё, что начинается на @ -- это массив
> всё, что начинается на $ -- это скалярДопустим логично.
> $#_ -- это скаляр, который содержит индекс последнего элемента массива @_
Как это следует из предыдущих утверждений?))
>Как это следует из предыдущих утверждений?))Вам плохо объясняют. Переменные в перле содержит сигил и имя. Сигил - это старнные непонятные символы, имя - привычная вещь в других языках.
Сигил перменных - это $
Сигил массивов - это @
Если у переменной поменять сигил, то интерпретатор будет иначе обрабатывать код. Например,$size = @array;
Это получить размер массива. Запись
$#имя_переменной
это ещё один способ получить тот же результат. Есть много разных способов сделать это.
Есть специальное имя переменной - подчёркивание. Это некая специальная перменная по умолчанию, в данном случае - аргумент функции. Если мы хотим обратится к ней, то пишем @_
$#_ - это размер этой самой переменной по умолчанию.
$_[индекс] - это обращение к элементу массива переменной по умолчанию.
В зависимости от того, нужно ли получить сам массив, его размер или его элемент - используется разный сигил.
Ну и куча разных подобных условностей.
C 5.36 параметрам функций можно давать человеческие имена, а не распаковывать их из @_
> C 5.36 параметрам функций можно давать человеческие имена, а не распаковывать их из @_Вряд ли перловики прям в диком восторге от этого.
Для понимания. Раньше писали вот так:
sub my_function {
my ($first, $second, @rest) = @_;
<...>
}После 5.36 стало можно делать так:
sub my_function ($first, $second, @rest) {
<...>
}Небольшой улучшайзинг, но не киллер-фича.
Из подобных улучшайзингов и складывается мнение о языке. Чем их больше, тем лучше мнение. Perl, увы, далёк от этого. Слишком там много было/осталось подобных костылей.
Вообще-то это не костыль, а часть философии - функция может получить произвольное число аргументов любого типа, и вести себя по-разному в зависимости от. Например, по-разному обработать четное или нечетное число аргументов, или скажем проверить тип у последнего аргумента, и в зависимости от него тоже что-то сделать, или считать его опциональным - при том, что перед опциональным тоже может быть переменное число аргументов.В других языках для такого пришлось бы определять несколько функций с одним и тем же именем, но разными сигнатурами, и то не всякий язык позволил бы засунуть переменное число аргументов *в середину* этих аргументов, т.е. с обязательными или тем более опциональными аргументами в хвосте. А в Перле - можно делать что угодно. Особенно удобно это в построении каких-нибудь RPC, когда нижний уровень не обязательно знает, что там будет в обработчиках повыше.
> $size = @array;
> Это получить размер массива. Запись
> $#имя_переменной
> это ещё один способ получить тот же результат.Ну вообще-то нет. Они на единицу отличаются - нумерация индексов-то с нуля.
В баше что-то похожее, вроде ни разу проблем не возникало. Ты просто знаешь, как это сделать и что оно означает. Вот регулярные выражения, особенно жадные и с группировками, могут быть неочевидными.
Оно и не должно никак следовать. Это еще одно определение просто.
И как мне теперь ЭТО развидеть?
$#_ как раз самое простое. А вот что такое ||>>? Как это вообще гуглить? У хаскелистов это хотя бы функцией было бы, которую можно в Hoogle поискать.
Чатгпт уже придумали, не тормози.
> Чатгпт уже придумали, не тормози.Спасибо, опять убедился в полной беспомощности нейробалаболов:
> - `||>>` – this is **not a standard Perl operator**.
> - In standard Perl, you can have `||` (logical OR) or `>>` (bitwise shift), but `||>>` is not valid.
> - It might be a typo, or it could be a **custom operator** defined elsewhere in the codebase or in a module.
> - `($a=$_)` – assigns the current element to `$a`.
> - `for(@_[2..$#_])` – loops over all arguments after the first two.
>
> But again, the `||>>` is invalid syntax unless it's defined somewhere else (e.g., via a custom operator or through a module like `overload`, `AUTOLOAD`, etc.).И потом ещё несколько раз то же самое с другим порядком слов. И вот ради этих LLM-ок предали нормально работавшие алгоритмы поиска гугла :(
У тебя какой-то странный чатгпт:Yes – it really is valid Perl (though, I admit, it’s a bit of a head-scratch‐inducing one-liner). What you’re seeing as “`||>>`” is not a mysterious new operator called `||>>`, it’s actually two separate operators back to back:
1. `||` (logical or)
2. `>>` (bit-wise right shift)Because the shift operator (`>>`) has higher precedence than `||`, the parser sees
&{ $_[0] } # call your test/callback sub
|| >>( $a = $_ ) # if the callback returned false, do “>>($a=$_)”Now you might ask, “Okay, but how does `>>( $a = $_ )` make any sense as a shift?” Here’s the tiny Perl quirk that makes it do what the author wants:
- When you write a binary operator like `X >> Y` but omit the left operand, Perl defaults that “left operand” to `$_`.
- So `>>( $a = $_ )` becomes `$_ >> ( $a = $_ )`.What side-effect are they after? By writing it this way they both
• update the variable `$a` to the current `$_`, and
• return that same value (so the whole `||` chain yields that element).Put in more conventional form, the `for` loop is doing roughly
```perl
for my $x ( @_[2..$#_] ) {
if ( $_[0]->() ) { # call the block
return ; # short-circuit if it was true
}
else {
$a = $x; # otherwise remember this $x
return $a; # and return it
}
}
```… and at the end of the sub, you get back whatever was last stored in `$a`.
So in summary:
* `||>>` is **not** a magic operator.
* It is parsed as `( ... ) || ( >>(...) )`.
* `>>( $a = $_ )` uses the rule “missing left‐operand in a shift defaults to `$_`,” so you end up doing `$_ >> ($a = $_)`.
* The real goal is the side‐effect in `($a = $_)` and then returning that value when the test block fails.
Автор этого фрагмента - известный в перловых кругах велосипедист, так что в норме такого перлового кода вообще-то быть не должно.
> У кого более забористый синтаксис: Rust или Perl?Ты шутишь что-ли, или не видел кода на Rust в глаза? У Rust синтаксис аналогичный плюсам, даже чуть проще.
Пойду-ка полежу полчасика с закрытыми глазами...
>sub find(&@){no strict 'refs';local(*{(caller).'::a'})=\(my$a=$_[1]);&{$_[0]}||>($a=$_)for(@_[2..$#_]);$a}
>sub first(&@){$_[0]->()&&return$_ for@_[1..$#_]}Хитрожопый ты наш, ты же специально написал однострочники. Такие примеры ради лулзов прведены на Лурке. На самом деле, по-читаемости, синтаксис Перла намного лучше чем у Раста.
> На самом деле, по-читаемости, синтаксис Перла намного лучше чем у Раста.Ахаха. Ну да, ну да.
И это раст ругают за закорючки. Хоть в перловке почти весь код закорючки.
>>sub find(&@){no strict 'refs';local(*{(caller).'::a'})=\(my$a=$_[1]);&{$_[0]}||>($a=$_)for(@_[2..$#_]);$a}
>>sub first(&@){$_[0]->()&&return$_ for@_[1..$#_]}
> Хитрожопый ты наш, ты же специально написал однострочники. Такие примеры ради лулзов
> прведены на Лурке. На самом деле, по-читаемости, синтаксис Перла намного лучше
> чем у Раста.не, я это для себя писал - просто перочинный ножик, это было задолго до того патча бармина на лоре, который я, кстати, мгновенно разобрал (гуглите старые логи #perl руснета)
погугли qxp.pm, там есть даже дичь, которая все операторы функциями делает, например после use qxp; можно сказать '*'->(\@a,\@b,\@c) и на выходе получить массив произведений $a[0]*$b[0]*$c[0] и так до конца самого жирного массива
собственно там есть функция zip, которую я также подсмотрел в p6 на этапе его вылупления, однако же тамже автоматом есть и функция &,
тобишь zip(\@a,\@b) это тоже самое, что и ','->(\@a,@b) ну или, если вдруг так больше нравится: &,(\@a,\@b)
там даже есть функа с именем # которую как sub # не объявить, зато как *#=sub{} очень дажену и до кучи предлагаю понять что за хрень и нафига функа yuki
Мне на собеседовании подсунули похожую мутатень, типа, где ошибка?
С просил:
- Это у вас так пишут?
- Да. Это наш код. (С гордостью)
- Прощайте.
> Мне на собеседовании подсунули похожую мутатень, типа, где ошибка?
> С просил:
> - Это у вас так пишут?
> - Да. Это наш код. (С гордостью)
> - Прощайте.ну в продакшн такое пихать конечно не стоит, но как тест на скиловость, почему бы и да
опятьже если это основной код, если это какаято либа, лезть в которую не стоит - ну и хрен бы с ней
просто это низкоуровневый перл (кстати еще далеко не сильно низкоуровневый, можно закопаться глубже)
> но как тест на скиловость, почему бы и даИ какой смысл в таком тесте? Нанимая перловика, прежде всего нужно убедиться что он так писать ни при каких обстоятельствах не будет.
> лезть в которую не стоит - ну и хрен бы с ней
Ха-ха, это прям определение любого кода не перле.
ну не знаю, меня такой код не пугает
я могу писать как обслуживаемый код, так и не обслуживаемый
в частности я могу лютую дичь писать просто для себя, как художник
на полном серьезе у меня есть проэкты в которых всеравно никого никогда не будет и я просто отвожу душу: я пишу так, как писать ненадо
Это потому, что вы - вменяемый, поэтому для прода писать необслуживаемый код не будете. Но то вы. А где гарантия, что другой перловик такой же? Вот поэтому к Perl и такое отношение - write only.
ну это уже переход на личности
в былые времена на #perl спокойно развлекались и в перлгольф и писали нормальный, читабельный код
собственно я не знаю ниодного перлушника, который бы вот только так и писал
любой, у которого хватит мозгов рисовать такую дичь, да еще и понимать, что это, зачем и почему - в прод это совать не будет
перл это не только про программирование, но еще и про творчество
Какой же всё-таки выразительный, и при этом отвратный язык. Я очень рад что прошел в юности (в нулевых) через коммерческую разработку на нём, это много дало в понимании того как не надо делать. Единственная моя ошибка с этим связанная после - я потом (в десятых, уже в нормальной компании) вызвался переписывать легаси с перла (потому что был один из немногих в компании кто этот перл ещё помнил). Вот это конечно был ад, израиль и выгорание. Надо было сказать что никакого перла я уже не помню, и ищите любых оставшихся в конторе причастных к тому что это было допущено в прод, и пусть они сами переписывают как хотят.
> Вот это конечно был ад, израиль и выгорание.Сейчас тебе любой ИИ это сделает без проблем.
Год 2025й от рождества христова, кодеры всё ещё не определились с кодировками файлов. Когда определятся, там уже и о строках подумать можно будет.Впрочем, booking.com наглядно показал, что язык реализации — десятое дело для любого коммерчески успешного проекта. Жаль, до кодеров это дойдёт приблизительно никогда.
Может я хочу файл с кодом сразу в нескольких кодировках CP1251/KOI8-R/UTF-8. Технически это возможно. Но нужно научить интерпретатор определять их на ходу.
> Технически это возможно.Возможно, но зачем?
Для чего вообще такое может понадобится? Какой реальный сценарий?
> Может я хочу файл с кодом сразу в нескольких кодировкахЯ про продакшен, а не про локалхост очередного Тэрри Дэвиса.
use Encoding ?
не пробовал на лету менять ничего конечно, я, если за пределы ascii выхожу, то это utf8, соответсвенно у меня только use utf8 и все
> Впрочем, booking.com наглядно показал, что язык реализации — десятое дело для любого коммерчески успешного проекта.Ну ничего себе. Как раз наоборот - они сейчас тратят деньги и время чтобы переписать перловое легаси на нормальные ЯП. Подумаешь, код написан на закорючках для которых разработчиков на рынке нет, ерунда какая - главное что проект коммерчески успешен. Потом, количество коммерчески успешных проектов как раз прекрасно показывает годится язык для прода или нет. В одном не взлетевшем коммерческом проекте на перле я сам участвовал (не могу сказать что он загублен прям таки языком, но загублен некомпетентным коммерческим и техническим руководством, а только такое Perl для прода и могло выбрать). И чсх, если посмотреть на 20 лет в прошлое, никто не скажет что тогда его выбор был оправдан. Он был убогим тогда, а нормальных языков был в достатке. Просто надо было хоть чуть-чуть понимать в разработке чтобы его никогда ни для чего не использовать.
Именно так. Главное, что проект коммерчески успешен, благодаря чему у компании есть деньги для любых переписываний на любых языках. В отличие от всего того, что не взлетело, хоть и было написано на самом правильном языке с самой правильной архитектурой. А секрет прост: людям надо решение их проблем, такое, чтобы было дешевле заплатить за него, чем мучаться самому. Как ни крути, язык программирования на успех если и влияет, то весьма опосредованно.> не могу сказать что он загублен прям таки языком, но загублен некомпетентным коммерческим и техническим руководством
Начал с хорошего понимания сути проблемы…
> только такое Perl для прода и могло выбрать)
Но не удержался и скатился до ad hominem. Почему? Ну про это классики психологии много писали, повторяться не буду.
> Именно так. Главное, что проект коммерчески успешен, благодаря чему у компании есть деньги для любых переписываний на любых языкахВидимо ты никогда коммерческой разработкой не занимался. На пустопорожнее переписывание денег никто и никогда не даст. У бизнеса для них есть 100500 более полезных вложений, от маркетинга до увеличения зарплаты генеральному. Переписывают только от безысходности, и если бы до момента переписывания в компании доживали некомпетентные существа, позволившие писать продуктовый код на каком-то перле, они бы это оплачивали из своих премий.
> На пустопорожнее переписывание денег никто и никогда не дастПереписывать можно по-разному. Загнать в скомпилированный бинарник какую-то вычислительно-тяжёлую функциональность, которую можно выделить как некий цельный фрагмент - это дело зело богоугодное.
> если бы до момента переписывания в компании доживали некомпетентные существа, позволившие писать продуктовый код на каком-то перле, они бы это оплачивали из своих премий.В эту фразу носом бы тыкать также ещё фанатов питона и прочих "удобных для быстрой разработки" интерпретируемых языков.
> В эту фразу носом бы тыкать также ещё фанатов питона и прочих "удобных для быстрой разработки" интерпретируемых языков.Ещё один сильный задним числом. Пока ты делаешь правильно с первого раза, иные успевают по пять разных идей накидать на чём быстрее, увидеть, что они не работают, и двинуться дальше. А если взлетит, то будет денежка нанять такого вот как ты на зарплатку переписывать на расте или на чём ты там дока.
Ещё один быстронакидыватель стриггерился.
Не будет денежки никого нанимать, потому что все пять идей будут похоронены тормозами и жором ресурсов в продакшоне.
> все пять идей будут похоронены тормозами и жором ресурсов в продакшонеТочно. Никому не известный мёртвый проект Facebook был написан на PHP. И не взлетел, был похоронен тормозами и жором ресурсов. Другой проект — Dropbox — пал жертвой Питона. Что внутри GCP творится — это вообще не рассказать словами (потому что NDA подписал), но жестами могу намекнуть на гигантских неядовитых змей. И так — что ни возьми. Если бы не было альтернатив на идеальных языках программирования с идеальной архитектурой — даже не знаю, что бы мы делали…
А ничо, что ФБ свой пхп запилил, имменно потому что тот, которы был, их не устраивал? Про Dropbox и прочее рассуждать не буду, т.к. вообще не в курсе, что там да как.
А ничо что ФБ свой пхп запилил именно потому что у него уже были на это деньги? А откуда взялись деньги?
Инвестиции? Нет, не слышал.
Чтобы инвестиции были, надо чтобы было что показать инвестору. И он не будет ждать 20 лет пока Идеал Идеалович закончит продумывать оптимальное расположение файлов проекта на диске. Такие дела. Стулья можно и утром, но деньги вперёд.
Чтобы знать, что решение не тянет миллион пользователей в пикосекунду надо сперва найти столько пользователей. Задним числом все умные, но тебя там, где решения принимались не было. И быть не могло.
То есть, твои проекты рассчитаны на тебя, любимого и ещё полтора васяна. Ок.
Я вижу, что ты и программы на идеальных языках писать мастер, и архитектор не слабый, да и в бизнесе человек не последний. Ок.
> Потом, количество коммерчески успешных проектов как раз прекрасно показывает годится язык для прода или нет.Да нет никакой корреляции в данном аспекте. Коммерческая успешность проекта зависит от грамотной аналитики и чутья стейкхолдеров. А язык, на котором оно реализуется -- зависит от того, какие люди у вас в арсенале: будет у вас в руках команда сильных джавистов -- будете проект на джаве пилить, а будет под рукой команда сильных шарпистов -- будете на шарпах. Ну а кто с большей вероятностью окажется рядом -- зависит от распространённости языка.
> не могу сказать что он загублен прям таки языком, но загублен некомпетентным коммерческим и техническим руководством
95% проектов погибают именно по этой причине
Не будет, и Пол Грэм в свое время отлично это описал - они смотрели, кого нанимают конкурирующие стартапы. Если это были мейнстримные языки типа Java или шарпов - можно было не беспокоиться о конкуренции совершенно.
Пол писал про весьма специфическую штуку в весьма специфическом контексте — конкурирующие стартапы. И суть его эссе была именно в том, что Лисп позволяет очень быстро итерировать при высокой производительности результата. Поэтому пока ребята на Яве выстраивают иерархию классов, лиспер успевает наконсить в десять этажей, увидеть что пользователям нужно что-то совершенно иное, выкинуть и наконсить ещё десять. Но при этом удачи найти лиспера, тем более двух. Я с CL работал на одном-единственном проекте шесть лет назад. Мне до сих пор время от времени пишут хедхантеры с предложениями, хотя в моём резюме ни слова ни про Лисп.
> Но при этом удачи найти лиспера, тем более двух.Найти несколько лисперов -- не проблема.
Проблема -- заставить их играть в команде.
Да нет, писал он штуку, по нашим временам вполне банальную - интернет-магазины. Это в те времена такое было стартапом, т.к. динамический Веб едва родился, а позже, во времена Букингов - уже не таким свежим, уже надо было просто обгонять конкурентов. Просто Перл во времена Грэма был еще достаточно свеж и нестабилен, какой-нибудь Питон - под стол пешком ходил еще (впрочем, он бы хуже годился из-за ограничений Гвидо), а Лисп уже был вполне развит. А так суть подхода кардинально не изменится, что Лисп, что Перл... вот Букинг попозже уже и взял Перл - и перловиков было проще найти, чем лисповиков.
> Год 2025й от рождества христова, кодеры всё ещё не определились с кодировками файлов.W3C определил для всех UTF-8.
> Когда определятся, там уже и о строках подумать можно будет.
А что о них думать? Кодировка текстовых файлов - это и есть кодировка строк, в нём содержащихся.
Неа, он наглядно показывает разницу- на чем _новые_ коммерчески успешные проекты *взлетают* и на чем потом неповоротливые корпорации, зараженные менеджерами в -цать слоев иерархии, тормозят и нанимают идиотов, чтобы побольше (потому что у менеджера зарплата от числа людей в подчинении).
Иными словами, на Перле взлетел успешный стартап Букинг, смогший конкурировать с тогдашними неповоротливыми корпорациями именно за счет языка, позволявшего делать быстро. Когда он сам стал неповоротливой корпорацией, зачем ему теперь инструмент для победы стартапов? Тут теперь совсем другие интересы внутри.
> потому что у менеджера зарплата от числа людей в подчиненииА ветер дует потому, что деревья качаются, да? Я менеджер, у меня в KPI нет количества людей в подчинении нигде, это бессмысленная метрика. Моя зарплата и карьерный рост зависят от того как движутся мои проекты. А количество людей зависит от количества проектов под моим котролем. Компания — самая обычная корпорация из s&p500.
Людей и в KPI ? Ох лол. Ну вот ты и спалился, что "менеджер" ты в лучшем случае рядовой "по продажам", а то и по клинингу.
Интересный язык с сомобытными идеями который к сожалению уже уходит в разряд ретроСейчас его место занимает python 3
Nim
Ну да, они новую версию пилят, снова все ломая.
Nim (zig, hare и т.д.) это игрульки отдельных разработчиков, без библиотек, сообщества и цели. Прод на них не будут писать никогда.
> Прод на них не будут писать никогдаНу на zig есть bun и tigerbeetle, притом второй вроде как в проде.
Обчитался нейросетей?Держи, бесплатно:
Могу ошибаться, то Питон занял место не своё и фронтенд и бекенд. Везде один Питон.
Глистам в ведре тоже кажется, что небо - это просто круглая дыра. Когда кодишь на пестоне, вряд ли можно ожидать, что ты хоть что-то видишь вне пестонодыры.
Ну при этом я столкнулся с софтом которое на питоне, знакомый также в питонисты подался. Вакансий питонистов больше чем плюсовиков, зарплаты выше.
class Test:
x = 0def clsx(self):
Test.x += 1def objx(self):
self.x += 2ax = Test()
bx = Test()ax.clsx()
ax.objx()print("ax.x =", ax.x, "<= значение явно не корректное")
print("bx.x =", bx.x)
Скопипастил этот код, и...>>> def clsx(self):
File "<stdin>", line 1
def clsx(self):
^
IndentationError: unexpected indent
>>> Test.x += 1File "<stdin>", line 1
Test.x += 1
^
IndentationError: unexpected indentвот и весь ваш путон
>который к сожалению уже уходит в разряд ретроНе вижу причин для сожаления. Хорошо, что очередной динмически типизированный язык уходит в историю, без малейшего намёка на статический анализ. Вот бы он ещё бы питон с жс-ом бы зацепил.
Очередная секта свидетелей статической типизации, далекая от реального мира.
> Интересный язык с сомобытными идеями который к сожалению уже уходит в разряд ретроПочему к сожалению? Это эзотерический язык программирование, только сомам на нём и писать, людям не надо.
> сомобытные идеиэто уже что-то из сленга рыбаков?
> который к сожалению уже уходит в разряд ретро
Который слава богу уходит. Ничего хорошего в нем кроме идей не было.
"К сожалению" слишком медленно
(хотя это и понятно, никто не хочет разбирать авгиевые конюшни легаси, написанные на это Г)
> Сейчас его место занимает python 3* Представил себе SpamAssassin на python3 *
Выкини уже этот кусок легаси. Десять лет как rspamd есть, на православной сишечке.
Язык слишком эззотеричный. И для многих неясно, зачем писать скрипты на перле, когда есть баш -для админ.системы, и питон- для всего остального.
> зачем писать скрипты на перле, когда есть баш -для админ.системы, и питон- для всего остального.Перловщик может в одну строчку сделать то, на что питонисту потребуется целая простыня.
>> зачем писать скрипты на перле, когда есть баш -для админ.системы, и питон- для всего остального.
> Перловщик может в одну строчку сделать то, на что питонисту потребуется целая
> простыня.Главное чтобы он сам через полгода понял что написал в этом однострочнике.
Господа забывают, что такое Perl. А это Practical Extraction and Report Language, и в этой области он по прежнему лучший!
А это уже область ИИ-агентов. Попробуй скормить данные Grok'у, тебе понравится.
Гроку 10гб не скормить. Ему не понравится.
Когда то и компы были гигантские, выделенную подстанцию требовали. И с 640кб были.
Будет подобное и локально.
Лоh и в африке лоh. Вместо того чтобы использовать возможность, вечно ищет оправдания для ничего неделания.
Который настолько ЭТИЧЕН, что откажется обрабатывать любые, не утверждённые генеральной линии штатовских партий, данные?
Или который, в отличие от тупого скрипта, любит, умеет и практикует галлюцинации?Не, пасиб.
Ну пользуйся гомоморфным шифрованием, если боишься что тебе за данные Обама в подъезде лампочки снова бить начнёт.
Это не поможет. Нужна модель без цензуры, а не просто канал для передачи данных.
А чего не сделаешь раз нужна?
Что поделать - *правильно* обученный, на *правильном* датасете *правильных* данных ИИ-агент в отличие от мифического "Обама-в-парадной" уже существует и уже *правильно* толкует индусам в этих ваших твиттерах новости
Поэтому, ненужно его пихать в другие области.
Но "все — текст" ;)
Регекспы уже давно есть во всех языках.
> Регекспы уже давно есть во всех языках.Ну для обработки текста регекспами он до сих пор сильно удобнее других вариантов.
Другое дело, что так и остался неудобнее во всём остальном.
Да нет конечно. Нет в нём ничего специфического ни про extraction, ни про report. Регулярки и принты есть в любом ЯП, и пользоваться ими проще.
Щас бы это делать на любом другом языке, где как минимум регулярки еще эскейпить придется. "Проще", my ass.
> это Practical Extraction and Report LanguageЭто Pathologically Eclectic Rubbish Lister.
class Point {
field $x :reader :writer :param;
field $y :reader :writer :param;
}
my $p = Point->new( x => 20, y => 40 );А с каких пор в перле классы были? Мне с пеной у рта доказывали местные экперты, что "не нужно", есть bless!!
> А с каких пор в перле классы были?Дык с 5ки и начались ...
Посмотри на любой модуль - можно как класс использовать, можно вызовом функций.
прямо вот class завезли относительно недавно
нафига он нужен - я не понимаю
bless же есть
> прямо вот class завезли относительно недавно
> нафига он нужен - я не понимаю
> bless же естьНу видмо все устали делать вид и завезли привычный синтаксис?
которым никто не пользуется всеравно :)
откровенно говоря, я досихпор пишу так, что большая часть кода будет работать и на 5.6
хотя use v5.12 или use v5.14 у меня давно в порядке вещей
в первую очередь оно включает стрикт, во вторую - дает say, который я всеравно кроме как в perl -E не пользую, ну и наверное силу земли
http://paste.org.ru/?v6edyr
вот, я таки это нашел
вообще это лет 20 назад, мне, с пеной у рта, доказывали, что перл - говно, потому, что в нем нет классов
я породил это
> http://paste.org.ru/?v6edyr
> вот, я таки это нашел
> вообще это лет 20 назад, мне, с пеной у рта, доказывали, что
> перл - говно, потому, что в нем нет классов
> я породил этоУжос. Особенно sub import{no strict 'refs';do{*{caller(0)."::$_"}=${"$_[0]::"}{$_}} for keys%{"$_[0]::"}}
да чтож вас всех этот импорт так парит
ну это так и должно быть, ну откройте вы Export.pm и гляньте на его импорт - там ровно тоже самое будет
> да чтож вас всех этот импорт так паритПотому что писать нечитабельные писмена в одну строку для простой задачи и при этом порицать нормальный синтаксис - странно. Как минимум, вижу тут нежелание выбрасывать свой любимый (хоть и корявый) велосипед.
я не порицаю, я же сам тут цитировал perlstyle, где говорится, что не надо писать вот так вот, просто потому, что можешь, писать нужно максимально читабельно
этот пример я сделал просто чтобы показать концепт классов, собственно если все это распихать по файлам, и импорт этот из однострочника превратить в то, что в экспортере - будет не так страшно
просто я тогда далеко ходить не стал, просто всковырнул его из одного из своих перочинных кодов, где у меня просто навалены однострочные функции, которые я могу по быстрому вбросить
это все рисовалось для себя и не подразумевало, что один мутант свалит в японию и начнет это мое безобразие использовать там в продакшне... ну японцы к закорючкам привыкшие, им, видимо, норм
> http://paste.org.ru/?v6edyrСлушай, а прикольно. То есть на базе экземплярной модели ООП вполне можно породить классовую, причём всего в несколько строчек. Круто. =)
Всё правильно, есть bless :) Который, к слову, позволяет даже сменить тип у переменной!! Понятно, что это такая маленькая грабля, но иногда удобна.
>даже сменить типдадада, я развлекался так:
#!/usr/bin/perl -w
use Qt;
use Qtx qw(QApplication QMainWindow QWidget QObject QString QPushButton QPixmap QLabel QBoxLayout QLineEdit QByteArray);sub yuki(&@){shift->(@_);@_}
$app = QApplication([$0,@ARGV]);
($w)=yuki{
$_[1]->setCentralWidget(yuki{$_[1]->setLayout(
yuki{
$_[1]->addWidget($_) for
(yuki{$_[1]->setPixmap(QPixmap QString "2.png")}QLabel QString)
,yuki{$_[1]->setLayout(
yuki{
$_[1]->addWidget($_) for $e=QLineEdit(QString "qwe"),$b=QPushButton QString "ok"
}QHBoxLayout
)}QWidget
}QVBoxLayout
)}QWidget)
}QMainWindow;
$m=QObject([],['zz()']);
$w->connect($b,SIGNAL("clicked()"),$m,SLOT('zz()'));
bless $m;$w->show();
$app->exec();sub zz{print $e->text->toLatin1->data;$app->exit()}
Нет бы взять Tcl/Tk, то есть use Tkx; на перле переделать во что-то такое...
> Нет бы взять Tcl/Tk, то есть use Tkx; на перле переделать во
> что-то такое...я брал, я игрался и с Tk и с Gtk, с последним даже очень плотно поработал
это же просто занимася ерундой, именно что qt4 пощупать пощупал
ну и да, я и по человечески его делал, как это делается на сях, ну только на перле
ну вот просто скучно было и я выкрутил его в такую дичьпросто мальчику было скучно, мальчик ковырял в носу
Так не Tk и не Gtk, которые пытались *портированную обвязку* и потому вечно в мамонтах из-за спящих/сдохших майнтейнеров а именно use Tkx - это языковой клей напрямую в Tcl/Tk, соответственно можно использовать свежайшие Tk-либы. Соответственно прослойка там минимальна, для наскриптовать сложный гуй я о своих надстройках деревом по типу как выше задумывался...
Это перловый коре тим так пытается в маркетинг "смотрите, у нас тоже есть!" вместо решения действительно важных проблем. А так действительно не нужно.
Сабж сложен в изучении?
Много вакансий на сабже?
Сколько платят за знание сабжа?
В Перле сложно примерно ВСЁ. :) Но при этом это по-прежнему язык, кратно лучший похапэхи.
> В Перле сложно примерно ВСЁ.Ну не так всё плохо.
> Но при этом это по-прежнему язык, кратно лучший похапэхи.
Ну наблюдается понижения уровня программистов (для массовости), отсюда цепочка perl->php->python. Последний уже полное дно, дальше ухудшать уже некуда (была, конечно попытка при переходе 2->3 ...).
При том, что, как и в Похапехе, в глазах пестрит от этих $.
Вот если бы з/п перлопргера так пестрела этими значками, то тогда можно было бы мириться.
В этом и была задумка! Доллар чётко даёт понять, что именно у тебя в руках и никогда не даст спутать с функцией, строкой, нэймспэйсом и т.п. Не даром даже есть ВЕНГЕРСКАЯ НОТАЦИЯ, что приходится для большей строгости прибавлять к имени приставки.
И надо заметить, Перл рождался на чёрно-зелёных мониторах, никакой подсветки синтаксиса тогда не было вообще! (или на распечатке) Так что доллар был вполне разумным решением.
Но ныне мониторы у нас не чёрно-зелёные.
Не сложнее, чем делать сайты на ассемблере.
У сайтов на ассемблере, кстати, есть одно преимущество - их пишут под одну архитектуру(целевая у сервера), в отличии от всякого прикладного, где несколько ос, и кроме х86 могут быть армы какие нибудь.
Ну и про производительность не стоит забывать.
>У сайтов на ассемблере, кстати, есть одно преимущество - их пишут под одну архитектуруВы считаете это преимуществом?
Обычно при выборе ЯП я оплату ставил на последнее место.
Например, мне тошнит php и нравится rust
Ну я вообще мало знаю любителей PHP. Но Rust не фанат, мне всё что содержит в названии C нравится: СИ, С++, С#, 1C.
> не всё что содержит в названии C нравится: СИ, С++, С#, 1C.Поржал, спасибо ! Только COBOL забыл :-).
Не, ну если первые два учил во времена учёбы, потом решил, вот недавно начал интересоваться 1С.
Слышал про Соболь, но никогда не интересовался, видимо не очень распространённый.
>С#Лучшее, что сейчас есть на рынке
Тс-с-с! Не пали контору :) А то понабежит 3умеров кодить за доширак - хрен потом прорвёшься!(сишарплю 20 лет и это прекрасно!) Но хотелось бы чего-то уровня Немерле.
про 1с это хорошо... вспомнил и нарыл пару зарисовок:#!/usr/bin/perl
use feature 'say';
use utf8;
sub один(){1}
sub два(){2}
sub сказать{say @_}
sub если(&@){my %if=(if=>@_);if($if{if}->()){$if{then}->()}else{$if{else} && $if{else}->()}}
sub то(&@){then=>@_}
sub иначе(&){else=>@_}#сказать "1с ничто - перл все";
если { один == 2 } то { сказать ага } иначе { сказать неа };
если { один == 1 } то { сказать угу };
если { два == 1 } то { сказать ога };------------
#!/usr/bin/perl
use utf8;
sub функа(&$){*{$_[1]}=$_[0]}
sub называется($){$_[0]}
функа {print @_} называется тест;тест(123);
Забыл С-- - тоже интересная вещь
Идём на hh и смотрим. 80+ вакансий и ЗП 200к+. Поэтому пока лучше учить java/kotlin
А что лучше, Java или 1с?
1С сильно нишевый. За пределами экосистемы 1C никому не нужен.
а вы не задумывались, почему их так много и висят они годами?
рожай уже свою глубокую мысль
"Почему долго висят" - потому что в нашей стране очень мало сильных специалистов
"Почему их так много" - потому что они востребованы
80+ вакансий это много?
а то, что они висят годами, говорит только о том, что это мёртвый язык, и кончишь ты преподом в российском универе
> преподом в российском универеЗато можно работать до глубокой старости.
>> преподом в российском универе
> Зато можно работать до глубокой старости.Точнее, пока лавочку не прикрыли.
> Зато можно работать до глубокой старости.Можно. Но еда кончится быстрее.
>> Зато можно работать до глубокой старости.
> Можно. Но еда кончится быстрее.Зато на помойке истории, на которую выкинут, из-за того, что ты просто "стар" еды точно будет в достатке.
> "Почему долго висят" - потому что в нашей стране очень мало сильных специалистовОткуда тут приписка "в нашей стране"? В нашей стране много сильных специалистов. Другое дело, что сильных специалистов в целом по миру -- мало, и они все задействованы на постоянной основе.
PS: ну и плюс к тому, 200к -- это мало для сильного специалиста.
Где логическая цепочка между 200К и "поэтому java"?? Я что-то вообще логику не секу.
его нельзя изучать, перлом нужно проникнуться, нужно научиться думать на перле, разговаривать на перле
> перлом нужно проникнуться, нужно научиться думать на перле, разговаривать на перлеА потом любой код на любом языке превращается в программу на перле.
Остальная команда очень любит таких разработчиков))
Нет никакого "любого языка". Если ты профи на Перле, ты и кодишь в окружении таких же.
> разговаривать на перлеНапомнило историю про мальчика, который научился ПЮГЦНБЮПХБЮРЭ МЮ KOI-8
Сначала линукс выёживается КОИ8, создавая ДИЧАЙШИЙ баттхёрт у наивных юзеров (т.к. всё равно приходится обмениваться документами с вендузятниками), а потом эти же пингвофилы запиливают IceWM с почти полным копированием Win95 :)))Kpeтuн трольвадс вместо КОИ должен был выбрать хотя бы win1251 - как раз чтобы для тру линуксофила переход между обоими мирами был максимально простым. Вместо этого потеряли 20 лет, кучу юзеров и всё равно пришли к UTF8. Браво!
Сначала русские повыёживались, наплодив 100500 кодировок для своего языка. А виноватым почму-то вы назначили Торвальдса. Хотя, ныне гражданину США Л. Торвальдсу вообще фиолетово на русские кодировки, для него ASCII то, что доктор прописал.
Может по-вашему, ещё Торвальдс должен был выбрать для перевода строки 0x0D 0x0A вместо 0x0A в текстовых файлах?
кои8 был немного раньше чем 1251
линукс - это просто ядро, ему до кодировок вообще фиолетово
gnu просто унаследовало все это от юникса, шиндовса в природе тогда небыло
про то откуда взялся интерфейс винды напоминать надо? там что-то про копировальные аппараты
а, и да, еще в 98ом году, гдето там майкрософт орал, что в локальной кодировке можешь писать, а можешь не писать - на выбор, но в юникоде ты писать обязан
но по прежнему все лепят 1251...
> Win95, win1251В Win95, да и многих других windows:
- Русские тексты кодируются в ср1251.
- Русские имена файлов на файловой системе FAT16/FAT32 кодируются в ср866.
- Если в терминале получить листинг каталога с русскими именами в файл (dir >file.txt), и открыть файл в notepad, получишь кракозябры, так как имена будут в ср866, а notepad будет их пытаться показывать в cp1251. Даже в довольно новых виндах и на NTFS.
- Русские имена файлов в ZIP-ах и прочих архивах кодируются в cp866. GUI-архиваторы либо перекодируют, либо показывают кракозябры.
- Если на компьютере не русская локаль, а, например, немецкая - прочитать файлы с русскими именами на FAT16/FAT32 нельзя. Но увидеть их в каталоге можно.Т.е. Винда сама с собой по кодировкам не совместима. И на какую из виндовых кодировок, cp866 или cp1251 должен был перейти Линукс с koi8, по твоему мнению?
Ну ютф-8 был первым на plan9 и странно что ГНУ должен был брать вин1251, если тогда Винды даже не было. Ну Линус никогда никакой ОСи не пилил и тем более кодировок. Он запилил ядро которую прикрутили к ГНУ ось. Судя по твоим знаниям, отпугнул кои8р только тебя, но я думаю тебя и командная строка отпугнет, тк явно в голове у тебя мягкий хлеб. Судя по тому бреду, который ты тут из себя выдавил.
> Сабж сложен в изучении?Если с регулярными выражения уже хорошо знаком, то не сложнее, чем почти любой другой язык.
> Много вакансий на сабже?
Немного, так как новых разработок на нем почти не ведется. Но есть огромный пласт легаси, который надо поддерживать.
С точки зрения перспективы, самая веселуха начнется лет через 10, когда близость 2038 года потребует адаптации множества легаси.> Сколько платят за знание сабжа?
В среденем, явно больше чем за Python или js. Что, собственно говоря, объясняет, почему для новых разработок он не востребован. Стоимость разработки на Perl получается выше, чем на Python или js. А производительность у Perl ниже.
В некотором смысле, сейчас ситуация с Perl напоминает ситуацию с COBOL и RPG всего лет 20 назад.
RPG для меня это role play game, ЯП с таким названием впервые слышу.
Двачую, хотя под РПГ можно было бы понимать Луа какую нибудь, короче всю скриптоту что в игровой индустрии используют.
https://ru.wikipedia.org/wiki/RPG_(%D1%8F%D0&...)До сих пор используется. В основном на IBM мэйнфремах и AS/400. Даже в некоторых российских банках.
> https://ru.wikipedia.org/wiki/RPG_(%D1%8F%D0&...koi8-r или cp1251?
> koi8-r или cp1251?UTF-8, но завершающая скобка теряется.
Очень странно, как разные языки могут "стоить" по-разному! По-моему, в вакансии "стоит" именно сам человек - опыт, скилы, возраст. Опытный перлист стоит десятка зумеров со всех их растами, го и пестонами.
Rust в большинстве случаев (если не брать во внимание скриптоту) для более-менее сложного ПО будет гораздо лучше Perl, Python, Go. Поэтому вряд ли опытный перлист будет стоить дороже опытного растианина. На всякий случай. Я ни разу не зумер. Мне 50+. Но знаю на хорошем уровне Python, и на начальном уровне Rust и Perl, поэтому, мне кажется, имею право на такое мнение. С Go знаком только по критическим статьям о нём, но мне их хватило, чтобы понять, что этот язык не стоит моего внимания.
Будет банально по той причине, что опытный он в том числе по возрасту, т.к. откуда бы зумер успел стать опытным на перле - а тот получал опыт еще давно.
Сравнение с растом достаточно странное в контексте Go - что то, что другое суть языки с хайпом.
Не, не потребуется, достаточно пересборки перла под архитектуры с 64-битным time_t.
> Не, не потребуется, достаточно пересборки перла под архитектуры с 64-битным time_t.Во-первых, Вы сильно отстали от жизни, так как начиная с Perl 5.12, время в Perl вообще не зависит от time_t, а используется собственная реализация. https://perl5doc.ru/Time::Local
Во-вторых, проблема тут не столько во внутреннем представлении, а как и с проблемой 2000-го года, в интеграции: бинарных файлах, базах данных, вроде Berkeley DB, сообщениях CORBA и т.п.
> время в Perl вообще не зависит от time_t, а используется собственная реализация. https://perl5doc.ru/Time::Localвремя в Perl вообще не зависит от time_t, а используется собственная реализация. https://perl5doc.ru/Time::LocalСпасибо, поржал. Осознать прочитанное в этом мане пробовали? Речь идёт о том, что он больше не полагается на mktime() и timegm() из libc, делая их сам - но работают они по-прежнему с тем же самым концептом time_t в секундах с 1970 года. И иначе и быть не может: откуда он еще получит реальное время, как не спросив у ОС, а это time_t?..
> в интеграции: бинарных файлах, базах данных, вроде Berkeley DB, сообщениях CORBA и т.п.
Мне сомнительно, что эта проблема массова, в случае Перла, ибо не времена Кобола же были, в самом деле. Например, если это JSON, так там числа нормально будут работать до 2^52, и т.д.
>> время в Perl вообще не зависит от time_t, а используется собственная реализация. https://perl5doc.ru/Time::Localвремя в Perl вообще не зависит от time_t, а используется собственная реализация. https://perl5doc.ru/Time::Local
> Спасибо, поржал. Осознать прочитанное в этом мане пробовали?Могу рекомендовать это сделать Вам )))
> откуда он еще получит реальное время
Во-первых, если бы Вы догадались почитать по сылке, то увидели бы что там речь идет именно о функциях timelocal() и timegm(). Во-вторых, в подавляющем большинстве случаев, время приходит из внешних систем и уходит в другие внешние системы. И именно последнее представляет собой проблему.
>> в интеграции: бинарных файлах, базах данных, вроде Berkeley DB, сообщениях CORBA и т.п.
> если это JSONJSON - это бинарный файл? Или формат сообщений CORBA? )))
> Сабж сложен в изучении?Да
> Много вакансий на сабже?
Нет
> Сколько платят за знание сабжа?
Мало
Perl -- ну это скорее для души, для кругозора.
> Сабж сложен в изучении? Много вакансий на сабже?Я изредка пишу на Perl, хотя в вакансии об этом не было ни слова.
И по проекту это примерно 0.1% кода.Не сказал бы, что сложно. Прочитал книгу и в перёд на базовом уровне.
> При подготовке нового выпуска было изменено около 280 тысяч
> строк кода (без документации и автоматически сгенерированного
> кода - 93 тысячи)Нет бы написать "При подготовке нового выпуска было изменено около 93 тысяч строк кода (с документацией и бойлерплейтом - 280 тысяч)"
Но... сам себя не похвалишь - никто не похвалит.
Если это делали мясные мешки - уважение, в наш век ии агентов это уже подвиг.
Каждый прогер написал около 1.5К кода. Я такое за день интенсивного кодинга выдаю.
На расте пишешь?
Вряд ли. Скорее, Питон или Джаваскрипт. Там выдать 1.5 тыс. строк несложно.
Он же сказал "интенсивного", не сходится.
пыхапыст он, всё сходится.
Зачем пихать в синтаксис то, что могло бы быть библиотекой функций?
Действительно, конструкции вида sqrt(add(mul(x,x),pow(y,2))) хватит всем!
Только не так, а:(sqrt
(add
(mul x x)
(pow y 2)
))вот тогда хватит всем!