Подтвердить что ты не робот

По каким причинам некоторые программисты категорически ненавидят языки, где пробелы имеют значение (например, Python)?

С++ - это мой первый язык, и поэтому я привык к пробелу, игнорирующемуся. Тем не менее, я играл с Python, и мне не слишком сложно привыкнуть к правилам пробелов. Кажется, однако, что многие программисты в Интернете не могут пройти мимо правил пробелов. Из того, что я видел, программы на языках С++, как правило, форматируются очень последовательно в отношении пробелов (или их довольно трудно прочитать), так почему некоторые люди сталкиваются с такой проблемой в таких языках, как Python?

4b9b3361

Ответ 1

Возможно, ваш фон С++ (и, следовательно, кто ваши сверстники) помутняет ваше восприятие этого (т.е. выборочный выбор), но, по моему опыту, реакция на Python "пустое пространство - это намерение" meme находится где угодно от амбивалентной, Причина, по которой многие любят ее, заключается в том, что она заставляет людей форматировать свой код.

Я не могу сказать, что когда-либо встречал кого-то, кто "ненавидит" его, потому что ненависть очень похожа на ненависть к идее хорошо отформатированного кода.

Изменить: Позвольте мне поставить это в некоторой перспективе.

В мире Java существуют два основных метода упаковки и развертывания веб-приложений: Ant и Maven.

Ant - это, в основном, средство создания на основе XML, которое имеет задачи для общих вещей, которые вы делаете. Это чистый сланец, который является мощным, но это также означает, что вы должны писать много общих вещей самостоятельно, и каждая установка может свободно делать что-то по-другому. Все это благими намерениями, но может затруднить определение скриптов Ant.

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

Преимущество этого заключается в том, что вы видели одно приложение Maven Web, которое вы видели их все. Вы знаете команды. Вы знаете структуру. Это очень полезно.

Но у вас есть люди, которые абсолютно ненавидят Maven, и я думаю, что это сводится к следующему: они не любят отказываться от контроля, даже когда это в конечном счете в их интересах сделать это. Кроме того, вы найдете определенную марку человека, который считает, что их использование является оправданным исключением. Вы видите эту черту характера много. Например, я думаю, что старый пост Джоэла упомянул историю, в которой кто-то хотел использовать "enter" для перехода от полей имени пользователя к паролю, даже если соглашение заключалось в том, что ввод выполнял действие по умолчанию (обычно "ОК" ), поэтому они должны были напишите для этого специальный класс для Windows.

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

Это, вероятно, объясняет, почему некоторые якобы ненавидят пустое пространство Python: им не нравится, когда им говорят, как отформатировать свой код. Им нравится свобода C/С++.

Ответ 2

Somepeoplethinkthatwhitespaceshouldneverhavesyntacticmeaning.Theywritelikethis.

Ответ 3

Он нарушает Принцип наименьшего удивления, потому что мы укоренились в себе (будь то хорошо или плохо), что пробелы не имеют значения язык программирования. Пробел - одна из тех проблем, которые остались в личном стиле.

У меня все еще есть плохие воспоминания от того, чтобы быть учеником, изучая трудный путь, что 8 пробелов не эквивалентны вкладке в Makefile... Ах, сон, который я потерял...

Ответ 4

Единственная действительная причина, по которой я столкнулся, заключается в том, что рефакторинг с использованием вырезания и вставки (не копирование) без инструментов рефакторинга (или синтаксиса cut-andpaste) может привести к изменению семантики, если будет сделана легкая ошибка.

Ответ 5

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

Ответ 6

Хорошо, это очень узкая перспектива, но я не видел, чтобы это упоминалось в другом месте: отслеживание пробелов - это хлопот, если вы пытаетесь автогенерировать script.

Когда я впервые столкнулся с Python, я не помню подробностей, но у меня был разработан инструмент Windows с графическим интерфейсом, который позволял начинающим пользователям настраивать несколько параметров, а затем нажмите OK. Выходной сигнал инструмента был script, который пользователь мог скопировать на машину Unix, а затем выполнить его там, чтобы сделать что-то слишком сложное или утомительное для них сделать вручную. Поскольку никто не поддерживал сгенерированные скрипты, не было причин, по которым им нужно было выглядеть красиво. Таким образом, отслеживание отступов казалось ненужным бременем с этой точки зрения.

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

Ответ 7

Люди ненавидят это, потому что это нарушает здравый смысл. Ни один из ответов, которые я прочитал здесь, не решил, что было бы просто отказаться от периодов и других пунктуаций. На самом деле грамматика была очень хорошей. Если глупость об отступлении, фактически несущая смысл, верна, мы все просто забудем об использовании пунктуации целиком.

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

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

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

Ответ 8

Потому что они используются для таких языков, как C и JavaScript, где они могут выравнивать элементы по своему усмотрению.

Когда дело доходит до Python, у вас есть код отступа, основанный на его контексте:

def Print():
    ManyArgumentFunction(LongParam1,LongParam2,LongParam3,LongParam4...

В C вы можете сделать:

void Print()
{
    ManyArgumentFunction(LongParam1,
                         LongParam2,
                         LongParam3,...
}

Забастовкa >

Ответ 9

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

Скорее всего, не придавая значения пробела справедливому потрясению, прежде чем отклонить его, это настоящая причина. Попросите кого-нибудь исправить ошибку в достаточно сложной, но хорошо написанной программе Python, а затем попросите их исправить ошибку в 20-летней системе в C, VB или Cobol и спросить их, что они предпочитают.

Что касается меня, у меня так же много проблем с пробелами в Python или Boo, как у меня с круглыми скобками в Lisp. То есть, нет.

Ответ 10

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

Я считаю, что это привычка, которую люди должны преодолеть.

Ответ 11

Только жалобы я (также на фоне С++) слышали о Python от людей, которым не нравится использовать параметр "Заменить вкладки с пробелом" в своей среде IDE.

Ответ 12

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