The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз компилятора Rakudo 2022.02 для языка программирования Raku (бывший Perl 6), opennews (??), 13-Фев-22, (0) [смотреть все]

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


35. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +1 +/
Сообщение от freehckemail (ok), 14-Фев-22, 15:38 
Блин, я не являюсь перл-программистом, а просто мимо этого языка проходил когда-то, но даже я смогу легко размазать подобный вброс. =)

> * Нечитабельный, особенно когда количество кода возрастает. Язык поощряет написание нечитабельного кода.

Докажите. Когда я последний раз взаимодействовал с Perl в CPAN был довольно-таки читаемый код. Сомневаюсь, что что-то изменилось. Вот то ли дело стандартные библиотеки Python. Вот уж где хочется пройтись асфальтоукладчиком. =)

> * Ужасные $, @ и % префиксы переменных.

Ужаааасные, ну конеееечно. Ведь это так плохо, по имени символа понять, что он относится к скаляру, списку или хэшу. Суффиксные нотации в стиле Microsoft куда лучше, конечно же. =)

> * Невозможность описать параметры функции в заголовке функции.

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

> Надо смотреть в тело функции чтоб узнать, какие аргументы есть и как они используются. Или верить на слово документации, если она есть и не устарела. Удачной отладки.

Ё-моё, надо читать документацию. В топку такой язык! В топку! =)

> * Чтение аргументов функции из массива @_. Какое-то тяжёлое наследие шелл-программирования походу, где аргументы в $@ хранятся.

О ужас, функции по умолчанию принимают массив, который потом надо разбирать. Во многих языках это -- отдельный элемент синтаксиса, имеющий специальную нотацию. А тут -- из коробки, ну как же так-то. =)

> * Нет типизации скаляров. Одна переменная - это тебе и строка, и число. Можно запросто сложить число со строкой, "и тебе за это ничего не будет". Тоже похоже на тяжёлое наследие шеллов.

Ну вообще-то есть. Это тебе не шелл, где всё обращается в строку. Другое дело, в перле присутствует элемент тяжёлого наследия от Си, с этим его неявным преобразованием типов.

> * Ужасно реализованное ООП.

Перевожу на человеческий язык: "Модель ООП в языке Perl отличается от той, к которой привык автор в любом другом языке". Что собственно не мудрено: каждый ООП-ориентированный язык создаёт какую-то свою модель ООП, отличную от предыдущих. Этих моделей уже целый вагон, и каждая несёт в себе свои достоинства и недостатки. Эталонной модели нет. Смысла спорить о том, какая из моделей лучше -- тоже. Я вот скажу, что лучшая модель ООП представлена в языке OCaml, а вы продолжите дальше мучаться со Scala, но то, что у ООП есть проблемы с теоретической базой, и что это уже давно религиозный культ -- к языку Perl никак не относится.

> * Практически не реализованное ФП. Никаких тебе filter, map или flatmap.

Лол. Вы уверены? =)

> * Сложность рефакторинга, обусловленная вышепереречисленными трудностями.

Вот тут ничего не смогу сказать. Я не занимался рефакторингом на перле. Но при прочих равных, я спокойно читал чужой код, и он вызывал куда меньше вопросов, чем, к примеру, код на си, на крестах, на яве или скале.

> В 90-х, когда не было выбора, Perl был хорошим выбором, на безрыбье. Но сейчас Python и особенно Ruby на голову удобнее.

Я не хочу представлять себе ментальное состояние людей, на полном серьёзе утверждающих, что между Perl 5 и Python 3 -- они сделают выбор в пользу Python 3. Больные ублюдки. =)

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

40. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  –1 +/
Сообщение от Самокатофил (?), 14-Фев-22, 16:50 
>> * Сложность рефакторинга, обусловленная вышепереречисленными трудностями.
> Вот тут ничего не смогу сказать.

Есть их у меня :-P

Вот если под рефакторингом тот "программист" понимает рестайлинг, то конечно, новичку timtowdy даст по щам. И чем зелёней новичок -- тем смачнее. Но ведь с таким рефакторингом справится и perltidy + perlcritic + Абу. Зачем называть рефакторингом то что отдалённо является им, а мерять его удобство по плачу обезьяны по сигилам. Для рефакторинга понадобятся: профайлер, дебаггер, дебаггер регулярок, тесты, и профессиональное сообщество хакеров, которое восполнит недостаток знания perl internals при "неожиданном поведении". По моему скромному мнению, с этим у перла лучше чем у многой скриптоты. Не говорю "всей" только из душевной скромности.

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

52. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +/
Сообщение от Аноним (23), 16-Фев-22, 03:57 
> Вот если под рефакторингом тот "программист" понимает рестайлинг
> Зачем называть рефакторингом то что отдалённо является им, а мерять его удобство по плачу обезьяны по сигилам.

Сам обозвал рефакторинг рестайлингом (зачем???), сам удивился, а обезьяной почему-то обозвал кого-то другого. :)

Под рефакторингом понимается переработка кода для лучшей читабельности и поддерживаемости. То есть код переносится в другие функции, в другие модули, изменяются взаимосвязи между частями кода, а также АПИ. Функции сливаются или наоборот разбиваются на несколько, переименовываются, переносятся в другие модули. Модули тоже могут сливаться, разбиваться, переименовываться. По сути, рефакторинг - это один из способов снижения технического долга.

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

Вот, самое простое, поменять количество параметров в функции или поменять параметры местами. И чтобы код продолжил работать. В Перле это будет сделать труднее, чем в Питоне и Руби. Потому что вместо списка внятно именованных параметров в Перле @_. А прототипы, которые не сильно бы и помогли, никто не использует, ибо убоги.

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

54. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +/
Сообщение от Самокатофил (?), 16-Фев-22, 04:04 
>[оверквотинг удален]
> могут сливаться, разбиваться, переименовываться. По сути, рефакторинг - это один из
> способов снижения технического долга.
> Рефакторинг в динамических языках - вообще неблагодарное занятие, по сравнению со статическими.
> Но в Перл в этом деле сливает даже другим динамическим языкам.
> Очень трудно что-то прорефакторить и не внести ошибок.
> Вот, самое простое, поменять количество параметров в функции или поменять параметры местами.
> И чтобы код продолжил работать. В Перле это будет сделать труднее,
> чем в Питоне и Руби. Потому что вместо списка внятно именованных
> параметров в Перле @_. А прототипы, которые не сильно бы и
> помогли, никто не использует, ибо убоги.

Нагенеренный AI инфошум. man perlsubs.

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

70. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +/
Сообщение от Самокатофил (?), 17-Фев-22, 17:22 
Ты не понимаешь что такое прототипы, сигнатуры, и для чего они нужны. При изменении порядка аргументов функции нужно апдейтить документацию, потому что смотрят документацию, а не порядок аргументов функции в исходном коде. В общем, читни манца, дуде, и не пори чушь здесь про "рефакторинг".
Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

72. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +/
Сообщение от Аноним (23), 18-Фев-22, 17:47 
> При изменении порядка аргументов функции нужно апдейтить документацию, потому что смотрят документацию, а не порядок аргументов функции в исходном коде.

Я ж уже писал про это. Во многих реальных проектах документация на функции часто бывает устаревшей или вообще отсутствует. Особенно для внутренних функций модуля, не для API-функций. В идеале, конечно документация всегда должна быть и должна апдейтиться. Но увы, далеко не всегда так бывает.

> смотрят документацию, а не порядок аргументов функции в исходном коде

Это правда для API-функций популярных библиотек. И почти всегда неправда для внутренних функций.

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

https://github.com/uutils/coreutils/blob/main/src/uu/mktemp/...

В файле определено несколько функций, у скольких из них есть документация? Спойлер: ни у одной.

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

74. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +/
Сообщение от Самокатофил (?), 18-Фев-22, 18:17 
>> При изменении порядка аргументов функции нужно апдейтить документацию, потому что смотрят документацию, а не порядок аргументов функции в исходном коде.
> Я ж уже писал про это. Во многих реальных проектах документация на
> функции часто бывает устаревшей или вообще отсутствует. Особенно для внутренних функций
> модуля, не для API-функций. В идеале, конечно документация всегда должна быть
> и должна апдейтиться. Но увы, далеко не всегда так бывает.

В Perl принято писать POD. А документацию ради документации конечно, никто не пишет.

>> смотрят документацию, а не порядок аргументов функции в исходном коде
> Это правда для API-функций популярных библиотек. И почти всегда неправда для внутренних
> функций.

Ну дали тебе сигнатуры. Твой аргумент устарел лет на 8.

> Чтобы далеко за примером не ходить, вот исходник, на который выше ссылку
> кидали:
> https://github.com/uutils/coreutils/blob/main/src/uu/mktemp/...
> В файле определено несколько функций, у скольких из них есть документация? Спойлер:
> ни у одной.

И чем им поможет в данном случае параметры? Ты высасываешь из пальца аргументы к своему синдрому утёнка. Перловщикам не нужны сигнатуры en masse. Это подтверждается практикой, и я, как перловщик, говорю тебе об этом прямо, face to face. Что нужно для рефакторинга я тебе написал выше. Твои аргументы -- детский сад. Прости, не б обиду, дружище, но реально, это такая мелочь, что я просто не знаю как сказать это так, чтобы тебя не обидеть.

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

77. "Релиз компилятора Rakudo 2022.02 для языка программирования ..."  +/
Сообщение от Аноним (23), 18-Фев-22, 19:14 
> Ну дали тебе сигнатуры. Твой аргумент устарел лет на 8.

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

>> https://github.com/uutils/coreutils/blob/main/src/uu/mktemp/...
> И чем им поможет в данном случае параметры?

Тем, что становится понятней, как вызываются функции.

> Перловщикам не нужны сигнатуры en masse.

А мне нужны. Имею я право покритиковать их отсутствие в реальном коде?

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

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

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




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

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