Друзья,
Вы наверно слышите кругом всё говорят Питоон Питооон.
А вы знаете что если там какие то табы с пробелами не выровнены, но питон скрипт не запустится вообще?
Погуглите ошибку "TabError: inconsistent use of tabs and spaces in indentation"
Это аструеть ...
Это отсеивает «непосвященных» от МАГИИ. Смотрит непосвященный на два одинаковых текста и не врубается, почему один запускается, а другой — нет. И тут в дело вступает МАГИЯ ПУСТОТЫ, ЭНЕРГИЯ ВАКУУМА, КОЛИЧЕСТВО ПРОБЕЛОВ.
Здравствуйте, Homunculus, Вы писали:
H>Это отсеивает «непосвященных» от МАГИИ. Смотрит непосвященный на два одинаковых текста и не врубается, почему один запускается, а другой — нет. И тут в дело вступает МАГИЯ ПУСТОТЫ, ЭНЕРГИЯ ВАКУУМА, КОЛИЧЕСТВО ПРОБЕЛОВ.
Здравствуйте, кубик, Вы писали:
К>Это аструеть ...
Ну так а мы про что! Ещё с самой первой заметки про Пестон я был в таком же аструевшем состоянии Как можно в 21 веке делать синтаксис на отступах?! Это ж вам не 70-ые, когда безумные идеи воплощал каждый школотрон!
И "заимствование кода" (особенно из ЧАСТИЧНЫХ конструкций) — попробуй скопипасти пару кусков из браузера — сдохнешь восстанавливавши! Этот пестон — мракобесие и видимо, индикатор тех, кого пора лечить.
Здравствуйте, кубик, Вы писали:
К>А вы знаете что если там какие то табы с пробелами не выровнены, но питон скрипт не запустится вообще?
И это, блин, супер. В результате в коде будет хотя бы нормальное форматирование гарантировано. А то в свое время был охрененный скандал, когда я взял, и отформатировал проект, в котором форматирования не было вообще. Вернее оно было, но неправильное. Что то вроде:
for (i in 1..10)
{
if (a>5)
{
printf("h")
printf("e")
printf("l")
printf("l")
printf("o")
}
}
Очень хорошо, что есть хотя бы один язык, в котором ни одна сволочь физически не сможет вот такое сделать, и ни одна сволочь не сможет запретить такой капец исправлять!
PS еще б на уровне языка ограничить бы длину вложенности отступов хотя бы до 6 (а то некоторые таланты и 50 хреначат), а длину функции хотя бы 500 строчками (а то некоторые орлы все пишут в main на 20 000 строк и без форматирования), вообще бы цены такому языку не было. К сожалению python от такого не спасает.
Здравствуйте, Homunculus, Вы писали:
Pzz>>qнεиж ʎmɐн ʚ ʁиεɐdƍоонεɐd ɯǝʁvʚɐƍоɓ ǝpoɔıun и ɐɓ
H>Это фраза, читаемая на телефоне и нечитаемая (ну, или с некоторыми проблемами) на мониторе
Можно голову крутить, а не монитор. Это даже полезно для шеи.
Здравствуйте, Pzz, Вы писали:
К>>Погуглите ошибку "TabError: inconsistent use of tabs and spaces in indentation" К>>Это аструеть ...
Pzz>Ну, с пробуждением тебя!
Скорее с разморозкой. Это ж сколько надо было спать, и не заметить ещё десяток языков с похожими свойствами...
Здравствуйте, кубик, Вы писали:
К>Друзья, К>Вы наверно слышите кругом всё говорят Питоон Питооон. К>А вы знаете что если там какие то табы с пробелами не выровнены, но питон скрипт не запустится вообще? К>Погуглите ошибку "TabError: inconsistent use of tabs and spaces in indentation" К>Это аструеть ...
А ещё есть Haskell, представляешь, в нём то же самое. И ещё десяток похожих языков. А ещё есть YAML.
А ещё есть, о ужас, email, HTTP, SIP, в которых продолжение поля заголовка требует пробелов отступа.
А ещё всякие Markdown (ты документацию к коду совсем не пишешь?)
Мы не виноваты, что ты уснул где-то в 1997-м и только сейчас проснулся, но зачем всех остальных пугать своими личными привидениями?
(Кстати, ты явно уснул не раньше. Потому что есть классический Fortran.)
Здравствуйте, elmal, Вы писали:
E>Очень хорошо, что есть хотя бы один язык, в котором ни одна сволочь физически не сможет вот такое сделать, и ни одна сволочь не сможет запретить такой капец исправлять!
Да ладно, не сможет. Препроцессор что ли долго соорудить?
E>PS еще б на уровне языка ограничить бы длину вложенности отступов хотя бы до 6 (а то некоторые таланты и 50 хреначат), а длину функции хотя бы 500 строчками (а то некоторые орлы все пишут в main на 20 000 строк и без форматирования), вообще бы цены такому языку не было. К сожалению python от такого не спасает.
Иногда такие вещи результат автоматической генерации.
Здравствуйте, Michael7, Вы писали:
N>>Скорее с разморозкой. Это ж сколько надо было спать, и не заметить ещё десяток языков с похожими свойствами...
M>Из широко распространенных кроме питона даже не припомню еще. Не считать же за такие свойства старый перфокарточный Фортран.
Фортран я уже упомянул рядом, да. Ну ещё есть пачка форматов данных (как заголовок HTTP).
Хотя там проще — там требуется (или запрещается) минимум один пробел или табуляция, а не точный их набор.
N>Фортран я уже упомянул рядом, да. Ну ещё есть пачка форматов данных (как заголовок HTTP). N>Хотя там проще — там требуется (или запрещается) минимум один пробел или табуляция, а не точный их набор.
Ты еще в другом сообщении напомнил про Haskell, я о нем как-то не вспомнил, когда писал. Правда можно ли его считать широко распространенным — вопрос. Но в нем емнип и не так все же жестко как в питоне.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, кубик, Вы писали:
К>>А вы знаете что если там какие то табы с пробелами не выровнены, но питон скрипт не запустится вообще? E>И это, блин, супер. В результате в коде будет хотя бы нормальное форматирование гарантировано. А то в свое время был охрененный скандал, когда я взял, и отформатировал проект, в котором форматирования не было вообще. Вернее оно было, но неправильное. Что то вроде:
Я на самом деле после вот уже 16 лет почти непрерывной работы с Питоном не уверен, что это так уж хорошо, но не из-за выравнивания как такового, а из-за того, что сложно отловить по точке закрытия нескольких блоков сразу — где они начинаются.
В случае {} или begin end перейти на противоположную легко в нормальном редакторе (vim — %, Jetbrains IDE — Ctrl+Shift+M, и так далее). А тут сразу начинается выбор, куда переходить — а подсказок не дают (пожаловаться что ли в Jetbrains?)
И когда код вида
if x:
while y:
for z in zzz:
if abc123 + zyx456 < qwer789:
... что-то происходит ...
else:
тут (перед else в примере) ты не знаешь, что было, как и почему — может, ты досматривал, что было в for z?
Против этого два средства:
1. Не создавать код размером больше экрана. Часто действует, но не всегда — у меня есть такие случаи, когда если по всем правилам Мартина сделать, то будет замедление в 10-100 раз, не могу себе позволить. Неизбежно получаются монстры на пятьсот строк.
2. В конце каждого такого блока писать свои пометки, типа:
if x:
while y:
for z in zzz:
if abc123 + zyx456 < qwer789:
... что-то происходит ...
#end if
#end for
#end whileelse:
но их ещё расставить надо и согласовать с командой. Ну и какое-то средство для быстрого перехода (в vim есть indentwise, очень вкусно).
E>PS еще б на уровне языка ограничить бы длину вложенности отступов хотя бы до 6 (а то некоторые таланты и 50 хреначат), а длину функции хотя бы 500 строчками (а то некоторые орлы все пишут в main на 20 000 строк и без форматирования), вообще бы цены такому языку не было. К сожалению python от такого не спасает.
Тут интересен подход Go — общий стиль форматирования не обязателен, но наличие одной универсальной тулзы в коробке и одного стиля на неё нормирует хотя бы публичный код (а не 100500 стилей, как в C).
Здравствуйте, netch80, Вы писали:
N>В случае {} или begin end перейти на противоположную легко в нормальном редакторе (vim — %, Jetbrains IDE — Ctrl+Shift+M, и так далее). А тут сразу начинается выбор, куда переходить — а подсказок не дают (пожаловаться что ли в Jetbrains?)
Пожалуйся, кстати, точнее заведи feature request. Я как то захотел одну фичу, сообщил разработчикам — очень оперативно сделали.