The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Дрю ДеВолт представил язык системного программирования Hare"
Отправлено Аноним, 27-Апр-22 22:26 
> Почему вы упорно считаете что лишний/удаленный пробел это нормально?

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

> Почему вы считаете что плохо отформатированный код должен запускаться?

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

> Ну разошлись ваши намерения и ваш тремор рук, получите ошибку, сразу ее
> исправите. Даже лучше чем со скобками где этот пробел найдете уже
> при проверке линтером.

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

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

Смотри, в сях например указатели это кусок проблем если быть невнимательным. И там проблемы в том числе и с анонсом намерений дла анализа/компилера. Но кроме минусов есть плюсы. Это дико эффективная технология. Избегающая лишних копирований - что актуально, особенно на больших объемах данных или если скорость критична. Поэтому tradeoff: мы теряем в надежности, но получаем быстрый компактный код. А у тебя - не tradeoff. Оно только делает мозг, ставит в стойло, но ничего не привносит. Значит нафиг.

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

> С пробелами тоже самое, только еще строже.

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

> Не, это так не работает.

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

> Во-первых, вы не можете где угодно указать блок,

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

> как не можете где угодно поставить фигурные скобки. Просто получите
> ошибку как и со скобками.

Вы вообще на сях программировали?

> Во-вторых, вы сами обозначаете разделитель. Если
> вы пишите большой скрипт, то ставите 4 пробела.

Я стараюсь не писать большие скрипты, предпочитая *никсвэйный подход. То есть небольшие эффективные качественные программы, при нужде объединяемые небольшими скриптами по месту. Модуляризация. Конечно это не всегда катит. Но мудрость в идеях древних есть. В отличие от вебмакак и питоняш, от которых если мне что и надо - чтобы они перестали замусоривать поиск своими поделиями.

> Если вы случайно поставите 4(!) пробела, то вы также случайно сможете и кавычки поставить.

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

> Если вы сделаете 1-3 или 5+ пробелов то получите ошибку.

Обычно прогерские редакторы втыкают сразу эн пробелов, для разгона эффективности прогера, так что ну так себе аргумент. Не буду же я 4 раза на уровень форматирования пробел сам жать, право? Я что, обезьяна?

> что шансы ошибиться и добавить/убавить пробел стремятся к нулю. А шанс
> запутаться в {{{{}}}}} (парные? уже посчитали? с пробелами это сразу видно)

1) Ну ващет за мена это компилер посчитает.
2) Лично мне нравится примерно так:


{
    abcd();
    cdef();
    {
        efgh();
        jklm();
    }
}

3) Если мне чей-то синтаксис не нравится, я могу ему reflow в автоматическом режиме сделать при желании. И от дурно поставленых скобок голова будет болеть у компилера или парсера.

> Тем более. Зачем вам в таком случае лишние символы в виде скобок?

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

> За вас редакторы итак эти пробелы ставят, почему же вы считаете что
> в других случаях автоматика не справится?

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

> Это абсолютно такой же разделитель как скобки, автоматика работает точно также.

Только вот требования попарности нет, а пробелы встречаются при нормальном курсе событий, поэтому сломать это нечаянно - куда проще.

> Тогда вы должны топить за пробелы, потому что они именно это и делают.

Вообще, получить warning при подозрительном форматировании кода - почему бы и нет? На самом деле нормальный фичреквест.

> Как раз наоборот. Если делать по стандартам с автоформатированием то и то
> и другое прекрасно справляется, только пробелы чище, компактнее, понятнее.

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

> Но если делать без форматирования то пробелы не позволяют вольностей, а скобки позволяют.

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

> Опять же пробелы ставятся однозначно, со скобками как миниум есть 2
> распространенных стандарта как ставить скобки.

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

> на той же строке, не факт что в проекте который вы используете, не делают по-другому.

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

> Скобки: Лишний пробел поставил. Лажа, форматирование страдает.

Это чисто эстетическая проблема, сама по себе к факапам не ведет.

> Все собирается и работает, отправляется в продакшн.

А может и не отправляется. Кому сильно надо могут ревью и анализаторы развесить.

> Пробелы: Лишний пробел поставил. Лажа, ничего не собирается, иди дорабатывай.

Но отъезд логики на ошибке редактирования оно не поймает, от оригинала намерений ничего не осталось, и в целом удачи понять как оно было задумано. Сломать так curly bracket все же сложно и маловероятно.

> не заметивший горизонтальную прокрутку этого не заметил (что есть еще пробелы
> не видит), бэкдор внедрен (антибаг технологии, ага)

Ващет гнать такого ревьюера надо. Гит на такие вещи например дико кислотные цвета рисует в консоли в git log -p и прочих git diff. Я не знаю как это можно не увидеть, от этого глаза сразу вытекают.

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

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

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

Алсо, в минимально серьезном процессе будет автоматический чекер рубящий просто по критерию длины строки. А потому что никто не нанимался 8К мониторы всем вообще кодерам на планете покупать только потому что у одного тела видите ли 250 символов мелким шрифтом на экран лезет.

> Опять попытка увести разговор в сторону. У питонистов трейс на любой пшик
> не из-за пробелов. Но мы сейчас про пробелы говорим, а не
> про методику обработки исключения и питоновскую философию.

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

> Ну и определенное число пробелов наклепать в нужном месте тоже весьма маловероятно.

Чего бы? А в прогерском редакторе скорее 1 кнопой, не буду же я 4 пробела мануально, право?

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

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

> Вы же выше сами же пишите что автоматика же эту парность и делает.

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

> ИМХО разделять код на логический и визуальный - неудачный антипаттерн с точки
> зрения отлова явных багов

ИМХО дублирование декларации намерений делает это устойчивее к ошибкам редактирования как раз. И чаще позволяет восстановить задумку испорченного кода как раз. Ну как, блочные операции случайно сделать в правильном виде - черт знает, у меня так не получалось. Чтобы код попал в другой блок с другим уровнем вложенности другого блока надо очень кастомное действо, деликатно выбрав правильные границы. Иначе компил егор.

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру