Как стать автором
Обновить
183
0.1
Константин Власов @CaptainFlint

Разработчик

Отправить сообщение

В Паскале/Дельфи такое присвоение, а одиночный = для сравнения и определения типов. Но историю вопроса тоже не знаю.

Так а break-то там в итоге зачем?

Какие-то взаимоисключающие параграфы - синтаксический сахар и призван для упрощения и урезания, поэтому не понял почему тут "Но" стоит.

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

А великий однострочник, хоть и навёл в своё время шороху, но больше из-за методики его применения, чем из-за того, что он перловый. Схожие примеры я видел и для других языков. Как, например, после выхода очередного стандарта C++ народ стебался, что теперь в нём выражение ([](){})() — это осмысленная компилирующаяся синтаксическая конструкция, язык достиг совершенства. Да и в чистом C определения типов порой такие, что никакой Перл с ним не сравнится.

просто часто был свидетелем того, как такие поделки "для себя" потом попадали в большой проект

Опять же, это не специфично для Перла, а происходит с любыми проектами на любых языках.

Это синтаксический сахар. Можно и не использовать, если не нравится. А писать нечитаемый код можно абсолютно на любом языке, это претензия не к языку, а к программистам. И особенно удобно, что перл позволяет делать ибыстро на коленке, чисто для себя, и детально-развёрнуто, для проектов с долгосрочной поддержкой. Подход TIMTOWTDI, There Is More Than One Way To Do It.

Но да, современный мир этого не любит, всем подавай упрощение и урезание.

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

Я, например, пишу на перле и на питоне, но когда требуется склепать что-нибудь для себя, первым делом выбираю перл. Во многих сценариях он намного лаконичнее:

my $out = `ls -la`;
die "Oh no, we failed!" if ($?);
import sys
import subprocess
try:
    out = subprocess.check_output(['ls', '-la'])
except:
    print("Oh no, we failed!")
    sys.exit(1)

Кроме того, перл гораздо свободнее в оформлении кода. Добавить отладочные принты с намеренным нарушением отступа, чтобы их потом можно было быстрее найти и удалить? Вставить в произвольное место некий временный кусок кода для какой-нибудь проверки наживую, а потом удалить его, без необходимости каждый раз выравнивать пробелы туда-сюда? Быстро сварганить однострочник для одноразового действия (включающего условные операторы)? Питон тут совсем не помощник.

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

Будучи сам заядлым перлистом, всё же не могу не отметить, что у динамической типизации есть свои минусы. Во-первых, человеки банально могут ошибаться. Во-вторых, забывать. Попробуй через три года влезть в проект и сходу понять, что там куда и как передаётся. Комментарии, конечно, помогают, но они тоже зачастую пишутся "в моменте" и могут разъяснять совсем не то, что окажется непонятным когда-то в будущем. В-третьих, есть ещё задачи по изучению и поддержке чужого кода, когда надо понять, что за фигня сидит в переменной, а инициализация этой фигни живёт за тридевять прослоек в тридесятом модуле, да ещё и делается по-разному в зависимости от сотен условных веток исполнения.

Кроме того, есть ещё $#x — последний существующий индекс в массиве @x (== длина минус один).

Один минус — это не "заминусили". Я не ставил оценок, но потенциальными причинами минуса могли быть: а) плохое решение с удалением Edge, что может привести к поломке различных компонентов системы; б) недоказанная связь между наличием-отсутствием Edge в системе и показом уведомлений (компонент, показывающий всплывашки, может и не проверять существование Edge, а полагаться на то, что он в системе всегда обязан быть); в) отбор прав вообще не может иметь отношения к всплывашкам, в лучшем случае он лишь препятствует самопроизвольному возвращению Edge в систему, да и то, учитывая, что у системы наивысшие привилегии, ничто не мешает забрать ей права обратно, вопрос лишь в том, догадались ли это реализовать разработчики винды.

Полностью отключить подобные напоминания невозможно, что вызывает неоднозначную реакцию у аудитории.

А по-моему, реакция более чем однозначная.

У меня не было сурового диалапного детства, но неоднократно уже возникало желание, чтобы оно у меня было, когда в очередной раз тыкнув на закладку с "проверенным решением" обнаруживал, что там либо 404, либо "домен продаётся", либо "видео удалено по запросу правообладателя из-за того, что там в фоне проигрались три ноты, по которым можно угадать мелодию, и теперь мы вам не скажем даже, как это видео вообще называлось и кто его автор". И как же легко становится на душе, когда вспоминаешь, что вот именно этот материал я некогда догадался утащить к себе локально!

Корпус <…> весит 47 кг, а вместе с упаковкой его масса достигает 100 кг.

Это как? Пустая коробка весит 53 килограмма?

Мне кажется, что тогда та часть, где узел, плохо простирается. Я обычно либо застёгиваю, если есть пуговицы, либо просто ниткой прихватываю в паре-тройке мест.

О засовывании ВСЕГО белья в мешок вроде никто не писал…

В комментарии, на который я отвечал, говорилось: "всё загрузил сразу и так же сразу выгрузил после стирки". Звучало именно так, будто полное содержимое барабана засовывается в мешок. Поэтому я и удивился такому подходу.

Никогда не использовал мешки для стирки, поэтому вопрос, возможно глупый, но как они вообще работают? Скажем, когда у меня при стирке пододеяльник сжирает внутрь себя всё остальное бельё, получается один компактный тяжеленный ком, который ни простирать толком невозможно, ни отжать: этот ком не может быть распределён по поверхности барабана, а сидит с одной стороны, и из-за весового дисбаланса машинка начинает скакать как бешеная. В чём отличие между засовыванием всего белья в мешок и засовыванием всего белья в пододеяльник? Или там предполагается использовать несколько мешков с равномерной загрузкой?

Автор предлагает отказаться от использования статистики?

Автор предлагает не применять статистические результаты к конкретному индивидууму. Вроде бы, очевидная вещь, но на практике происходит сплошь и рядом.

…по свариванию стальных «прутков», диаметром 1080! м (нет, это не ошибка, диаметр «прутка» составлял именно более 1 метра! О_о)

И всё-таки, да, это ошибка, так как 1080 метров это более километра. :-)

В казахском языке кириллический алфавит, в котором есть и Ь, и Ы, и І.

А не проще ли было привести венгерский алфавит в соответствие Здравому Смыслу, а не вводить в Юникод всякую хрень? Если букву можно записать двумя буквами то это две буквы.

В статье же сказано: чтобы обеспечить однозначность конвертации алфавитов. Про венгерский я не знаю, а, скажем, в сербском есть буквы Њ (мягкая Н), обычная Н, и Ј (соответствующая русскому Й). В латинице эти буквы записываются как NJ, N, J. Поэтому возникает неоднозначность при переводе латиницы в кириллицу, как трактовать этот NJ: как одну букву Њ или как НЈ. И да, есть слова, где такое буквосочетание присутствует. Использование единого юникодного символа для диграфа NJ позволяет различить эти ситуации.

По-хорошему, конечно, разработчики алфавита должны были сразу использовать неповторяющиеся буквы, скажем, ввести Ñ. Но имеем что имеем. А стандарт Юникод не диктует языкам, что они должны стать ёжиками, он лишь фиксирует существующие нормы. Хотя, конечно, на практике этими диграфами вряд ли кто-то пользуется; их даже на клавиатурах нет, насколько я знаю…

1
23 ...

Информация

В рейтинге
3 096-й
Откуда
Белград, Белград, Сербия
Зарегистрирован
Активность

Специализация

Software Developer
Senior