Я уже отвечал. Не хочу гугл, хочу одну команду пакетному менеджеру.
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[34]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Vamp, Вы писали:
N>>Значительно более внятные объектная модель и синтаксис, упрощающие написание больших программ и облегчающие их сопровождение. V>Давай-ка более профессионально.
Знаешь, я давно уже убедился, что твоё требование "профессионально" на самом деле означает "привести такой пример, который понятен даже полному носорогу, при этом эстетически выразителен". Поэтому я буду отвечать соответственно.:)
V> В таких примерно терминах — вот конкретная задача, решаем ее, вот так — легко и просто — на Питоне, а вот так — криво и неподдерживаемо — на Перле.
От задачи не зависит. Зависит от объёма и сложности связей.
Там, где в Питоне пишешь a.b.c, в Перле надо писать $a->{b}{c}, и это самая экономная форма, с применением "синтаксического сахара" в три стадии. Полная версия выглядит кошмарно — что-то вроде ${${$a}{'b'}}{'c'}. От любого нетривиального кода начинает рябить в глазах.
Рекомендуемые формы типа списка (@x = (1,2,3)), хэша (аналогично) из-за того, что они не ссылки, не годятся для простейшей операции передачи данных в функцию. Ты не можешь сделать f(@a,@b) — они просто склеятся. Тебе надо их передавать по ссылке (f(\@a,\@b)), а тут уже начинаются разыменования всех видов с теми же $a->[0] и тому подобными конструкциями.
Операции доступа к элементам списков, хэшей сделаны абсолютно недуракоустойчивыми, оптимизированными на мелкие, понятные одним взглядом скрипты. В Питоне, если тебе нужно выбрать действительно существующий элемент, ты пишешь d[x] (при его отсутствии возникнет исключение), а если заменить на заданное значение, если не существует — d.get(x,0), d.get(x,'[безымянный]') и т.д. В Перле единственная штатная операция — аналог d.get(x,None), для остального нужно наворачивать свой код (в идеале — в библиотеке, чтобы не строить страшные if'ы). В результате там, где Питон бы давно породил исключение, по которому можно было бы определить факт проблему и локализовать её — в перловых данных гуляют undef'ы.
В результате, для Перла имеем три стиля написания кода для существенно разных ситуаций:
* текстовый препроцессор-форматтер (см. происхождение аббревиатуры PERL)
* мелкий скрипт
* серьёзная программа
и самый частый случай преобразования второго к третьему — мучительно больная операция с полным рефакторингом.
Всё это ты сам мог найти простейшим запросом в гугл (кстати, я уже один или два раза на RSDN это расписывал, так что сейчас просто копипейстю с лёгкой ревизией). Но ты же хочешь как для носорогов...
N>>Это даже если не брать некоторые безумные фичи Перла типа убитой типизации — когда невозможно понять, имеешь дело со скаляром-числом или строковым представлением этого числа. V>В перле динамическая типизация.
Я тебе советую перечитать букварь и понять, чем отличается деление статическая/динамическая оптимизация от деления строгая/нестрогая.
V> А когда она реально мешает? Приведи пример.
Простейший: '0' — это false в булевском контексте, а '0.0' — true. Это даже в букваре.
Более сложный: экспорт данных, которые не являются числовыми, хотя могут быть приняты за числа. У меня был случай с правилами телефонного раутинга. Раут, начинавшийся с '009', был переделан при экспорте в JSON в просто 9, что сбило раутинговую таблицу на свиче.
Выяснить, что оно на самом деле — число или текст — в Перле невозможно в принципе. То, что типизация динамическая — меня для этого контекста не смущает. А вот её нестрогость оказывается местами фатальной. В Питоне все подобные преобразования (строка/число и т.д.) явные за исключением самых тривиальных случаев (int->float, или внутренних int->long).
Строго говоря, описанные преимущества Питона типичны не для него самого — с таким же успехом можно было вспомнить Ruby и ещё парочку мелких языков. Частично — Lua. Но Перл — точка концентрации подходов, позволяющих наиболее быстро написать крошечный скрипт, но превращающих в ад написание большого кода. :maniac:
The God is real, unless declared integer.
Re[37]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Константин Б., Вы писали:
КБ>Здравствуйте, Sheridan, Вы писали:
S>>Приветствую, Константин Б., вы писали:
КБ>>> А можно пример прямого софта из мира линукса? Ну чтобы знать на что ровняться... S>>Не?
КБ>Ненене, Дэвид Блейн! Вот на этот опенсорса кусок я равняться точно не буду. Скорей бы его clang убил.
Ну, одну претензию мы услышали. Причём — мнэээ — у меня ни разу даже приблизительно похожего эффекта не было. А почему ты думаешь, что альтернативы лучше?
The God is real, unless declared integer.
Re[30]: Why Desktop Linux Sucks, And What We Can Do About It
N>>Данный фактор может иметь смысл только в той обстановке, в которой надо код писать на ходу, тут же компилировать, V>Ты ничего не перепутал? Скрипты Питона, как правило, не компилируются.
Этот этап несущественен (тем более что компиляция есть. Лексический и синтаксический анализ и байткод на выходе)
N>>результат внедрять в дело, а код кидать в какую-то невнятную помойку, в которой даже CVS'а нет (чтобы можно было заметить, что редактор всё испортил). V>Ну да, нормальный процесс скриптовой разработки.
Кому это он нормальный? Перловику-затейнику с write-only code в стиле "меня Ларри укусил в полнолуние"?
N>>Заодно и обстановку, в которой кто-то заставляет пользоваться не тем редактором, который ты сам себе выбрал, а произвольным из зоопарка. Это где такие страшные порядки? V>Что значит "выбрал"? У нас в организации, допустим, пара тысяч (или десятков тысяч? без понятия) серверов. Из них я потенциально могу ходить на пять-десять примерно. И настройки редакторов на каждом из них свои. То есть если я возьму и попробую отредактировать скрипт на этом сервере, то с большой долей вероятности, пробелы похерятся. А оно мне надо? Я уж лучше по старинке, со скобками.
Если ты им не делал никакие дикие настройки, и это сервера, то там скорее всего vi, который никогда без явного на то запроса не мешает пробелы с табуляциями. Nvi, vim, joe, nano так тоже не сделают без явного запроса. Поздравляю вас, гражданин, соврамши.
Если же у тебя на "десятках тысяч серверов" Visual Studio, за которым я действительно такое замечал при умолчательных настройках... ну тады ой, товарищ Рокфеллер, Вы не на то деньги тратите, хотя куда уж мне решать, на какой ветер их швырять...:)
The God is real, unless declared integer.
Re[35]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Sheridan, Вы писали:
V>> Тоже скриптовой язык. Я его знаю. Зачем мне переходить на Питон, что мне это даст? S>Я тоже так думал.
делись, что тебе это дало. мне тоже к сожалению светит влезть по уши в питон
Re[35]: Why Desktop Linux Sucks, And What We Can Do About It
N>Знаешь, я давно уже убедился, что твоё требование "профессионально" на самом деле означает "привести такой пример, который понятен даже полному носорогу, при этом эстетически выразителен". Поэтому я буду отвечать соответственно.
Ты еще в шахматы сам с собой сыграй. И потом расскажи, как ты меня в шахматы обыграл. Хочешь разговаривать со мной — разговаривай со мной, а не со своим далеким от реальности представлением обо мне.
N>Там, где в Питоне пишешь a.b.c, в Перле надо писать $a->{b}{c},
И чем первое лучше второго? Точка короче стрелочки?
N>и это самая экономная форма, с применением "синтаксического сахара"
Она существует.
N>Рекомендуемые формы типа списка (@x = (1,2,3)), хэша (аналогично) из-за того, что они не ссылки, не годятся для простейшей операции передачи данных в функцию. Ты не можешь сделать f(@a,@b) — они просто склеятся.
Зато можно сделать f(\@a, \@b) — еще и быстрее будет. А можно вообще передавать именованные параметры (что очень многие, кстати, и делают):
f(-first => @a, -second => @b)
вообще очень красивый вариант.
N>Тебе надо их передавать по ссылке (f(\@a,\@b)), а тут уже начинаются разыменования всех видов с теми же $a->[0] и тому подобными конструкциями.
А массивы вообще правильно передавать по ссылке. Должен признать, что недостаток Перла в том, что нельзя ссылку объявить константной. Но недостаток это минорный.
Ничего плохого в разыменовании нет. В С/С++ тоже презираешь стрелочку?
N>Операции доступа к элементам списков, хэшей сделаны абсолютно недуракоустойчивыми, оптимизированными на мелкие, понятные одним взглядом скрипты. В Питоне, если тебе нужно выбрать действительно существующий элемент, ты пишешь d[x] (при его отсутствии возникнет исключение),
Это хорошо? Я вот не уверен, что это хорошо. Я вообще не люблю исключения, потому что они непредсказуемым образом меняют логику поведения программы.
N>по которому можно было бы определить факт проблему и локализовать её — в перловых данных гуляют undef'ы.
if exists не спасает отца русской демократии?
N>* серьёзная программа
Вот здесь даем скриптовику-затейнику по рукам и пишем серьезную программу на компилируемом языке, со статической типизацией, шаблонами и прочими радостями.
N>Я тебе советую перечитать букварь и понять, чем отличается деление статическая/динамическая оптимизация от деления строгая/нестрогая.
Спасибо за твой совет. Но я считаю, что тебе пора отучаться хамить в професиональных дискуссиях.
N>Простейший: '0' — это false в булевском контексте, а '0.0' — true. Это даже в букваре.
Я понимаю, что букварь твоя настольная книжка, но не соблаговолишь ли ты мне объяснить глубокий смысл "0.0" в булевом контексте?
N>Более сложный: экспорт данных, которые не являются числовыми, хотя могут быть приняты за числа. У меня был случай с правилами телефонного раутинга. Раут, начинавшийся с '009', был переделан при экспорте в JSON в просто 9, что сбило раутинговую таблицу на свиче.
$ perl
$a = "0001";
print "$a\n";
^D
0001
ЧЯДНТ?
N>В Питоне все подобные преобразования (строка/число и т.д.) явные за исключением самых тривиальных случаев (int->float, или внутренних int->long).
В перле они тоже явные и предсказуемые, и происходят они только тогда, когда применяются соответствующие операции.
N>но превращающих в ад написание большого кода.
Еще раз говорю — не пиши на скриптах больших проектов.
Да здравствует мыло душистое и веревка пушистая.
Re[31]: Why Desktop Linux Sucks, And What We Can Do About It
V>>Ну да, нормальный процесс скриптовой разработки. N>Кому это он нормальный? Перловику-затейнику с write-only code в стиле "меня Ларри укусил в полнолуние"?
Когда отучишься хамить — приходи, обсудим на спокойных тонах.
Да здравствует мыло душистое и веревка пушистая.
Re[36]: Why Desktop Linux Sucks, And What We Can Do About It
Приветствую, Antikrot, вы писали:
A> S>Я тоже так думал. A> делись, что тебе это дало. мне тоже к сожалению светит влезть по уши в питон
Мне хватило того что у питоне менее крышесносящий синтаксис чем у перла. К тому же вполне ожидаемые операторы. Я когдато полчаса не мог понять почему в перле не работает continue для циклов. А потом отрыл... next! бджалд....
Здравствуйте, Vamp, Вы писали:
N>>Знаешь, я давно уже убедился, что твоё требование "профессионально" на самом деле означает "привести такой пример, который понятен даже полному носорогу, при этом эстетически выразителен". Поэтому я буду отвечать соответственно.:) V>Ты еще в шахматы сам с собой сыграй. И потом расскажи, как ты меня в шахматы обыграл. Хочешь разговаривать со мной — разговаривай со мной, а не со своим далеким от реальности представлением обо мне.
Я вообще-то разговариваю не с тобой, а с неопределённым кругом собеседников — читателей данного треда и RSDN в целом. Хотя пути дискуссии и определяются активными участниками.
А представление — да, я думаю, что оно объективнее, чем то, как ты себя тут представляешь.
N>>Там, где в Питоне пишешь a.b.c, в Перле надо писать $a->{b}{c}, V>И чем первое лучше второго? Точка короче стрелочки?
Меньше символов (2 вместо 7). Меньше группировочных элементов, рассредотачивающих внимание.
N>>Рекомендуемые формы типа списка (@x = (1,2,3)), хэша (аналогично) из-за того, что они не ссылки, не годятся для простейшей операции передачи данных в функцию. Ты не можешь сделать f(@a,@b) — они просто склеятся. V>Зато можно сделать f(\@a, \@b) — еще и быстрее будет. А можно вообще передавать именованные параметры (что очень многие, кстати, и делают):
V>
V>f(-first => @a, -second => @b)
V>
V>вообще очень красивый вариант.
Питон: f(first = a, second = b) — то же самое и ещё красивее, ибо без лишних символов.
зато можно для этого писать функцию с заголовком
def f(first, second):
в перле придётся делать явное извлечение из переданного хэша (причём вначале надо было ещё догадаться, что передаётся фактически хэш).
В перле ты не сделаешь аналог питонового
def f(a, b, c, d = None, e = 0, *args, **kwargs):
когда есть базовые позиционные параметры, есть явно выделенные из именованных, а дальше свободный набор.
N>>Тебе надо их передавать по ссылке (f(\@a,\@b)), а тут уже начинаются разыменования всех видов с теми же $a->[0] и тому подобными конструкциями. V>А массивы вообще правильно передавать по ссылке. Должен признать, что недостаток Перла в том, что нельзя ссылку объявить константной. Но недостаток это минорный. V>Ничего плохого в разыменовании нет. В С/С++ тоже презираешь стрелочку?
Нет, не презираю. Плохо не разыменование, а то, что API и требования использования дают необходимость разных представлений. Чтобы передать в какую-нибудь map() или даже shift(), тебе нужно разыменовать, причём не элемент, а массив или хэш целиком. В результате похожие виды использования надо писать по-разному. В Питоне такого нет — везде ссылки.
N>>Операции доступа к элементам списков, хэшей сделаны абсолютно недуракоустойчивыми, оптимизированными на мелкие, понятные одним взглядом скрипты. В Питоне, если тебе нужно выбрать действительно существующий элемент, ты пишешь d[x] (при его отсутствии возникнет исключение), V>Это хорошо? Я вот не уверен, что это хорошо. Я вообще не люблю исключения, потому что они непредсказуемым образом меняют логику поведения программы.
Они "меняют логику поведения" только если ты их явно маскируешь и обрабатываешь нетривиальным образом. Для простого кода не перехватывать исключения — достаточно, чтобы код вылетал при ошибке доступа/конверсии/etc., тогда можно будет быстро опознать и ликвидировать ошибку. Для более сложных случаев освобождение внешних ресурсов — уже достаточно для обработчика исключений, чтобы программа была устойчивой.
N>>по которому можно было бы определить факт проблему и локализовать её — в перловых данных гуляют undef'ы. V>if exists не спасает отца русской демократии?
Конечно, не спасает. Потому что конструкция вида "exists($a[$x]) ? die : $a[$x]", даже если в ней нет никаких ошибок самих по себе, вынуждает повторять описание доступа — громоздко, замыливает глаз, чревато ошибками (модифицировал первое вхождение, но не второе). Даже просто ввести функцию типа
sub checked_get {
my ($hash, $key) = shift;
die sprintf('invalid index: %s', $key) unless exists $hash->{$key};
return $hash->{$key};
}
спасает ситуацию с сопровождаемостью, но требует написания такой функции и ведения её в библиотеке. А в Питоне это "из коробки"...
N>>* серьёзная программа V>Вот здесь даем скриптовику-затейнику по рукам и пишем серьезную программу на компилируемом языке, со статической типизацией, шаблонами и прочими радостями.
В контексте Перла "серьёзная" это объём от нескольких страниц — когда теряется управляемость в стиле write-only. Ты будешь это переписывать на C++? Ну-ну. Создатели
RT или phpBB (у которой долгое время был параллельный клон perlBB)
N>>Я тебе советую перечитать букварь и понять, чем отличается деление статическая/динамическая оптимизация от деления строгая/нестрогая. V>Спасибо за твой совет. Но я считаю, что тебе пора отучаться хамить в професиональных дискуссиях.
Ты тоже как только припирают к стенке — начинаешь обвинять в хамстве? Различие динамической и нестрогой типизации для программиста — это даже не букварь, это уровень слова "мама".
N>>Простейший: '0' — это false в булевском контексте, а '0.0' — true. Это даже в букваре. V>Я понимаю, что букварь твоя настольная книжка, но не соблаговолишь ли ты мне объяснить глубокий смысл "0.0" в булевом контексте?
Об этом ты лучше спроси авторов языка — почему они вообще допускают неявную конверсию подобных выражений (строк) в boolean. А после этого — почему "0" это false.
В Питоне подобной проблемы нет — пока не вызовешь int() или float() — любая непустая строка будет true, это резко смягчает побочные эффекты (даже при том, что подобная неявная конверсия — не лучший стиль)
N>>Более сложный: экспорт данных, которые не являются числовыми, хотя могут быть приняты за числа. У меня был случай с правилами телефонного раутинга. Раут, начинавшийся с '009', был переделан при экспорте в JSON в просто 9, что сбило раутинговую таблицу на свиче.
V>
V>$ perl
V>$a = "0001";
V>print "$a\n";
V>^D
V>0001
V>ЧЯДНТ?
print вместо экспорта JSON или YAML. Не ленись:) доведи тест до конца. Заодно посмотри на опции дампера — там есть интересные моменты.
N>>В Питоне все подобные преобразования (строка/число и т.д.) явные за исключением самых тривиальных случаев (int->float, или внутренних int->long). V>В перле они тоже явные и предсказуемые, и происходят они только тогда, когда применяются соответствующие операции.
N>>но превращающих в ад написание большого кода. :maniac: V>Еще раз говорю — не пиши на скриптах больших проектов.
"Ещё раз говорю" — с питоном таких проблем нет, несмотря на то, что он весь из себя динамический. Проекты объёмом до сотен тысяч строк реализуются на нём без труда и необходимости сложной поддержки при компиляции. Для перла этот порог достигается только при высочайшей квалификации кодировщиков и проектировщиков, иначе он падает в разы.
The God is real, unless declared integer.
Re[32]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Vamp, Вы писали:
V>>>Ну да, нормальный процесс скриптовой разработки. N>>Кому это он нормальный? Перловику-затейнику с write-only code в стиле "меня Ларри укусил в полнолуние"? V>Когда отучишься хамить — приходи, обсудим на спокойных тонах.
Когда отучишься прикрывать недостатки своей позиции подобными обвинениями — да, приходи. Обсудим, если будет что.
Особо замечу, что в той реплике не было ни слова про тебя — твоего кода я не видел, а любителей подобного стиля видел за пределами RSDN. Но острота твоей реакции заставляет думать, что таки шапка на тебе горит не зря.:)
The God is real, unless declared integer.
Re[37]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, Antikrot, вы писали:
A>> S>Я тоже так думал. :) A>> делись, что тебе это дало. мне тоже к сожалению светит влезть по уши в питон :(
S>Мне хватило того что у питоне менее крышесносящий синтаксис чем у перла. К тому же вполне ожидаемые операторы. Я когдато полчаса не мог понять почему в перле не работает continue для циклов. А потом отрыл... next! бджалд....
Ну вот циклы в перле — немногое, что сделано очень качественно и хотелось бы перетащить много куда — а именно, метки циклов и их задание в next и last. Какое именно слово применено вместо break и continue — вопрос привычки.
The God is real, unless declared integer.
Re[39]: Why Desktop Linux Sucks, And What We Can Do About It
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[38]: Why Desktop Linux Sucks, And What We Can Do About It
Приветствую, netch80, вы писали:
n> Ну вот циклы в перле — немногое, что сделано очень качественно и хотелось бы перетащить много куда — а именно, метки циклов и их задание в next и last. Какое именно слово применено вместо break и continue — вопрос привычки.
Я уважаю перл, и многое на нем делаю. Но я бы не сказал что язык мне нравится. кактотак
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, netch80, вы писали:
n>> Ну вот циклы в перле — немногое, что сделано очень качественно и хотелось бы перетащить много куда — а именно, метки циклов и их задание в next и last. Какое именно слово применено вместо break и continue — вопрос привычки.
S>Я уважаю перл, и многое на нем делаю. Но я бы не сказал что язык мне нравится. кактотак
Подумав, скажу, что согласен если не во всём, то по крайней мере в основных пунктах. Действительно:
— есть за что уважать. за устойчивое развитие, пригодность для большинства практических ниш, мощные и разнообразные средства, огромнейшую библиотеку модулей и стандартных решений.
— при этом использование требует достаточно специфических скиллзов (какой русский аналог этого слова?), которые в принципе возможны для любого программиста, но многим не подходят именно по эстетическим соображениям.
В бытность больше админом, чем программистом — активно на нём писал почти всё из обычной автоматизации. Сейчас не знаю, буду ли так делать — малострочники и сейчас на нём пишу, но практически на питоне уже сейчас психологически комфортнее.
Разумеется, это всё про Perl4/5. Четвёртый был достаточно своеобразной вещью по нынешним временам, хотя иметь Perl4 в базе практически любой системы идеально соответствует задаче "иметь лёгкий концептуально завершённый шелл без основных недостатков /bin/sh", и огромное количество утилит, которые сейчас на Си, можно было бы сделать на нём. 6ку считай не видел. Будет ли она жить — ХЗ...
Из явных вкусностей, которые хотелось бы видеть в других языках:
— именованные циклы (см. выше по дискуссии — break/continue по имени-метке)
— синтаксический сахар для компилированных на месте regexp'ов
— деление my/local (для динамических — хотя вопрос в конфликте с местной моделью)
— возможно, синтаксис типа q(...), qq(...) (хотя крайне редко реально нужен)
— хитрые возможности open()
в принципе всё.
The God is real, unless declared integer.
Re[41]: Why Desktop Linux Sucks, And What We Can Do About It
Vamp>>zypper se rdp
Vamp>>zypper in ...
MyAnalogy>> zypper se sphinxserach
Хотя если ты знаешь (как у тебя) адресс скачки/репозитория без гугла, то и в Винде гугл и нафиг не сдался, explorer http://I_know_this_site_url.com/rdp.exe или explorer http://I_know_this_site_url.com/sphinxsearch.msi и вреред и с песней
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[27]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Mamut, Вы писали:
П>>Осталось выяснить, почему эта же логика не работает у тебя в обратном направлении...
M>Да работает у меня она
Дык практика показывает, что нет!
M>Смотри. Имеем следующую ситуацию:
(скип)
Лично я гораздо чаще наблюдаю зеркально противоположную ситуацию, в том числе и в твоем исполнении — когда виндузятник вдруг узнает, что в линуксе не идет "из коробки" какая-нибудь хрень (не замечая при этом, что вообще идет там в разы больше, чем в винде) и начинает раздувать из этого вселенскую проблему. А на логичный ответ "у вас в винде нет другой хрени, но вы как-то живете" — начинает выстраивать хрень по рангу, уровню гикачества и потребности (на своем примере) для "обычного пользователя".
M>Если уж приверженцы линукса считают, что в винде что-то обязано быть, то позвольте приверженцам винды считать, что что-то должно быть в линуксе
Вот именно. Если уж приверженцы винды считают, что в линуксе из коробки обязан быть VPN, то позвольте и приверженцам линукса считать, что в винде из коробки должен быть ssh и виртуальные десктопы. И кого колышет, что российские виндузятники считают VPN "более нужной обычному пользователю" хренью.
Ку...
Re[36]: Why Desktop Linux Sucks, And What We Can Do About It
Здравствуйте, Vamp, Вы писали:
N>>Там, где в Питоне пишешь a.b.c, в Перле надо писать $a->{b}{c}, V>И чем первое лучше второго? Точка короче стрелочки?
Неочевидным синтаксисом. Почему, например, не $a->{b}->{c} или $a{b}->{c}? А как я об этом должен догадаться без знаний о том, как реализовано ООП "внутрях" у перла?
N>>и это самая экономная форма, с применением "синтаксического сахара" V>Она существует.
Она убога. Нет, не так: даже она убога.
V>Зато можно сделать f(\@a, \@b) — еще и быстрее будет.
Фишка в том, что в питоне этого делать не нужно — передача и так идет по ссылке, без всяких шаманских плясок с магическими символами.
V>А можно вообще передавать именованные параметры (что очень многие, кстати, и делают): V>вообще очень красивый вариант.
Ага, в питоне тоже так можно. Только в нем (и вообще в нормальных языках) этот "красивый вариант" обычно бывает нужен чуть чаще, чем раз в пятилетку.
N>>Операции доступа к элементам списков, хэшей сделаны абсолютно недуракоустойчивыми, оптимизированными на мелкие, понятные одним взглядом скрипты. В Питоне, если тебе нужно выбрать действительно существующий элемент, ты пишешь d[x] (при его отсутствии возникнет исключение), V>Это хорошо?
Да. Более того — в ООП это, пожалуй, общепринято.
V>Я вот не уверен, что это хорошо. Я вообще не люблю исключения, потому что они непредсказуемым образом меняют логику поведения программы.
Ну если логика программы изначально основана на промахах мимо массива... Впрочем, похоже, в перле по-другому нельзя.
N>>по которому можно было бы определить факт проблему и локализовать её — в перловых данных гуляют undef'ы. V>if exists не спасает отца русской демократии?
На каждый чих? Спасибо, не надо.
N>>* серьёзная программа V>Вот здесь даем скриптовику-затейнику по рукам
Перловому — непременно.
Ку...
Re[35]: Why Desktop Linux Sucks, And What We Can Do About It