Находят ли программисты Python проблему пробелов неудобной? [закрыто]

11

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

Конечно, я не встречал много программистов на Python, так как я провел свою карьеру в мире Java.

Итак, мой вопрос к тем из вас, кто участвовал в большом проекте Python (более 3 месяцев, причем Python был основным используемым языком): вы считаете проблему с пробелами неудобной и постоянно раздражающей? Или это было не проблема, когда вы попали в поток?

Я не задаю вопрос, потому что я за или против Python, или за или против его использования пробела. Мне нравится Python, но я никогда не использовал его для чего-то большого.

Пожалуйста, не предоставляйте предположений, если у вас нет опыта работы с Python.

Эрик Уилсон
источник
2
Будут ли они использовать язык, если они это сделали? Я бы не стал. Раздражающие / отвлекающие синтаксические требования - это одна из вещей, которая может заставить меня выбрать другой язык для проекта (если, конечно, я могу выбрать).
с каких пор пропуски становятся проблемой? :-)
Кугель,
22
Нам неудобно, что все остальные продолжают это поднимать. Мы никогда не думаем об этом.
Уинстон Эверт
Проблема пробелов не отличается от той, что была много лет назад - в OCCAM2 было много пустых пространств. Это было не страшно.
быстро,
4
Единственный раз, когда я нахожу это раздражающим, это когда копируемый код из сети, который был написан с использованием пробелов вместо вкладок (или наоборот), вызывает буквально невидимые синтаксические ошибки
Камерон

Ответы:

14

Есть только один случай, когда я считаю, что пробел раздражает, и это при изменении существующего кода, чтобы блок кода становился более или менее отступом, чем раньше (например, добавление или удаление if:перед кодом). Когда вы пишете на таком языке, как C, вы просто добавляете ifи пару скобок и (в Emacs, или я представляю себе хороший редактор) нажимаете Tab, чтобы редактор автоматически исправлял отступ. В Python вы должны сделать это самостоятельно. Конечно, есть ярлыки редактора, чтобы сделать это самостоятельно, так что это не так уж и плохо, но потеря избыточности налагает небольшую дополнительную нагрузку на программиста.

В целом, это победа, хотя бы для предотвращения того, чтобы половина моего экрана была заполнена такими строками:

         }
      }
   }
}
dfan
источник
1
В любом разумном редакторе, который говорит на Python, есть очень простой способ переопределить блок кода. В Wing IDE я просто выбираю блок и нажимаю Tab (или Shift-Tab, чтобы уменьшить уровень отступа).
Адам Кроссленд
1
Да, в Emacs я выбираю блок и нажимаю C-c >или C-c <. Вы все еще должны сделать это самостоятельно, хотя. Иными словами, поскольку пробельные символы и логика кода не являются избыточными, вы не можете просто выбрать гигантский блок и вызвать M-x indent-region(или какой бы то ни было версией вашего редактора) отступ для всего этого «правильно».
dfan
6
@ Adam, хороший редактор облегчает изменение уровня отступов. Но на языке фигурных скобок вы можете вставить новый код и нажать свое любимое нажатие клавиши, чтобы заново создать файл. Тада! Отступ правильный. В python вы должны вставить, выбрать, отступ / отступ. Это немного, но здесь есть небольшая победа для фигурных скобок.
Уинстон Эверт
@ Винстон - должен быть вашим редактором. Если код, который вы вставляете, сам по себе правильно с отступом, то, если он выходит на несколько уровней слишком далеко вправо / влево, это всего лишь вопрос ввода (SHIFT +) Tab, чтобы выровнять его соответствующим образом - не большая разница для нажатия клавиши Пересмотрите файл. Кроме того - ты не должен копировать / вставлять код :)
Инго
1
@Winston: даже блоки отступов Notepad ++ при использовании Tab и Shift-Tab, я еще не нашел ярлык vim, но я не использую его достаточно, я думаю: p
Матье М.
50

Я люблю значительные пробелы Python. Для меня это идеальный пример СУХОГО на синтаксическом уровне. Удобный для восприятия способ указать, где блок кода начинается и заканчивается, с отступом. Если вы хотите, чтобы ваш код был читабельным, вы должны делать отступы независимо от языка. Глупо заставлять программиста указывать эту информацию дважды, один раз для компилятора / интерпретатора и один раз для людей. Кроме того, отступ в C-подобных языках похож на комментарий: он предназначен для улучшения понимания, но его значение не обеспечивается компилятором / интерпретатором, и он может очень легко не синхронизироваться с реальным значением (где находятся фигурные скобки), запутывая, а не проясняя.

dsimcha
источник
8
+1 за Не повторяйся. Хорошей практикой является отступ кода для отражения блочной структуры в любом случае, так почему же есть маркеры начала / конца?
Steve314
12

Значительные пробелы на самом деле удобны для меня. Это заставляет меня печатать меньше. Он форматирует код аккуратно и довольно однозначно. Благодаря этому он делает код более читабельным.

(Мне также нравятся значительные пробелы в Haskell по тем же причинам.)

9000
источник
1
Я бы также поделился своим положительным опытом с пробелами на Haskell, но FarmBoy настаивал, что нужно иметь 3-месячный опыт работы с Python, все остальное было спекуляцией. :-)
Инго
1
Мой опыт работы с Python у нас с 1998 года, поэтому мой ответ, вероятно, соответствует требованиям :) (Жаль, что мой опыт работы с Haskell намного короче.)
9000
@ 9000 Несмотря на то, что Haskell появился раньше Python! : D
pradyunsg
8

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

Теперь я даже не замечаю этого. Я использую Python в течение 11 месяцев.

Мэтт Эллен
источник
5

Во-первых, я использую такие языки как Python, SQL и Java. Я люблю пробелы в Python - он меньше синтаксис и типизирует, и заставляет людей писать разборчивый, аккуратно отформатированный код. OTOH, я ненавижу многословие Java - настолько, что я фактически использую Python для генерации всего шаблона, который я должен написать на Java, что впечатляет всех моих коллег по Java, которые поражены моей производительностью.

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

Greg
источник
Говорить вашему редактору о выделении синтаксиса во вкладках, поскольку ошибки могут очень помочь - для vim, который я использую highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"в своем vimrc
Daenyth
4

Если программиста раздражает значение пробелов, он, вероятно, не станет программистом Python.

BenjaminB
источник
1
Я слышал, что довольно много людей, проповедующих Python, говорят, что у них были проблемы с The Whitespace Thing (tm), но через некоторое время они мне понравились. Из моего наблюдения кажется, что, поскольку все больше людей присоединяются к дискуссии на эту тему, вероятность того, что один из них рассказывает такую ​​историю, приближается к одной. (Правка: сразу доказано вторым ответом ...)
@delnan, я могу подписаться на это.
Инго
3

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

В любом случае, после того, как вы усвоили Python, это больше не проблема; на самом деле его лаконичность и малое пространство на экране становятся большим преимуществом для удобочитаемости. Поскольку я использую в основном Python, я считаю, что языки, в которых больше избыточности (например, Java и C #), трудно дисциплинировать, чтобы они могли писать. Надевание скобок на код, отступ которого уже проясняет его структуру, действует мне на нервы.

JasonFruit
источник
3

Для реального кодирования это совсем не неудобно, но на самом деле полезно (см. Ответ dsimcha).

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

ncoghlan
источник
2

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

Python не является одним из моих основных языков.

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

BillThor
источник
1
смешивание табуляции и пробела в отступе Python - кратчайший путь в ад: p
Матье М.
@Mattieu: Определенно, это мое раздражение.
BillThor
1

Я пришел из C # / Javascript / XBase фона в произвольном порядке, и в моих увлечениях Python это вообще не для меня. Это как фигурные скобки на других языках - вот как это работает, вставьте вещи, как говорят правила, и высушите глаза - это мое отношение.

Алан Б
источник