vit_r: default (vit_r)
[personal profile] vit_r
comic_naver_bestChallenge_titleId_379395_NEgative_magical_girl_thumbnail Под предыдущим постом получилась замечательная дискуссия. «Больше нельзя, потмому что в скафандре стекло потеет», «Шире не получится, потому что гамак пружинит», «А нам не жарко, надо просто скафандр с вентиляцией использовать»... И, конечно, спор пробельщиков с табуляторщиками.

День, определённо, удался.

Я не собираюсь спорить, просто расскажу о результатах одной серии экспериментов.

Про восемьдесят символов



Перфокарта содержала строку из 80 символов. Машинный байт умножить на человеческий десяток. Всё разумно.

Прогресс двигался вперёд, вычислительная техника развивалась. 80 символов было и на алфовитно-цифромом дисплее. (Может кто ещё помнит, такие тёмные с зелёненькими буквами). 80 символов было и в распечатке многих принтеров.

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

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

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

Правило, которое было на самом деле не про 80 символов, звучит сейчас примерно так «Желательно, чтобы весь логический блок кода был виден на экране без необходимости горизонтальной или вертикальной прокрутки».

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

В задачах со сложной предметной областью часто используются идентификаторы шириной 25-30 символов. В текстовой строке в ковычках может быть спокойно те же самые 80 символов, а к ним надо добавить ещё и переменные, и связки, и пробелы между ними. Лесенка вправо может быть построена так, что сама строка начинается на позиции 36-40... Короче, без всяких правил есть масса ситуаций, когда Древний Закон 80 Символов лучше игнорировать.

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



Насчёт восстановления кода после внесения шума.

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

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

Да, [livejournal.com profile] thesz забанен за хамство. Очень мило банить человека у себя в журнале, а потом глубокомысленно отвечать ему. У себя в журнале. Впрочем, что с них, небожителей, взять.

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

Date: 2013-09-17 12:51 am (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
Средняя длина строки - это метрика вроде средней температуры по больнице.

Я бы хоть гистограммы смотрел, что бы понять что да где.


Ну и да, хороший холиварчик на пустом месте.

Date: 2013-09-17 05:16 am (UTC)
From: [identity profile] vit-r.livejournal.com
Не надо недооценивать среднее.

Вайнберг писал, что в IBM он поспорил с другими создателями спецификации. Они требовали, чтобы была откомментирована каждая строка. Он утверждал, что комментарии должны быть не в конце строк, а в шапке перед ними отдельно. В результате 3 против 1 и консенсусом было загнанное в компилятор правило: "3/4 строк кода должно содержать комментарии".

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

Но в стандартах на кодирование стоит не "в среднем", а "запрещено".

Date: 2013-09-17 02:05 am (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
> Кстати, с тех же времён нам достался и другая священная корова - одиноко висящая открывающая скобка.

Уточнения для:

void main()
{ <----- Вот эта?

У вас опечатка -

"Печатать код сТало совершенно не нужно."

----------------------------------------------------------------
> Насчёт восстановления кода после внесения шума.

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

Date: 2013-09-17 02:21 am (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
И, тем не менее, thesz у себя в журнале совершенно верно написал. В PhysRev'е текст разбит на довольно узкие колонки отнюдь не потому, что аппаратура не позволяет(ляла) писать больше, а из-за особенностей нашего чтения (несколько слов сразу + перевод строки). Поэтому 80 символов кажутся довольно разумным мягким ограничением.

Конечно, если верстать серьёзно, это смешно, но вы же не можете перевёрстывать код под разные мониторы/размер шрифта автоматически?

Date: 2013-09-17 05:24 am (UTC)
From: [identity profile] vit-r.livejournal.com
Длина строки зависит от шрифта, текста, задачи дизайнера и прочих факторов. Разговаривать об этом имеет смысл только с тем, кто хотя бы учебник по типографике прочитал, и кому не "кажется", а кто "знает".

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

И самое главное - код не читают.

Date: 2013-09-17 07:20 am (UTC)
From: [identity profile] geniepro.livejournal.com
> И самое главное - код не читают.

Это как же так получается? Код на выброс -- написал, скомпилировал и стёр исходники? о_О Это теперь стало трендом в промышленном программировании?

Date: 2013-09-17 11:23 am (UTC)
From: [identity profile] samlazy.livejournal.com
Код не читают как текст. Код в основном присматривают/сканируют.

Date: 2013-09-17 04:05 pm (UTC)
From: [identity profile] orleanz.livejournal.com
" Код не читают как текст.

Все еще тяжелее - код смотрят в редакторах с 2 или 3 колонками, для диффа и мерджа. Именно поэтому берется ограничение на 80 символов.

Date: 2013-09-17 09:21 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Именно поэтому берется ограничение на 80 символов.

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

Date: 2013-09-18 04:43 am (UTC)
From: [identity profile] geniepro.livejournal.com
Да не нужно придумывать никаких извращений.
После Вашего заявления о том, что "код не читают" уже не имеет значения, как код оформлен. 80 символов в строке или 800 -- какая разница?

Date: 2013-09-18 05:22 am (UTC)
From: [identity profile] vit-r.livejournal.com
Пора банить за глупость.

Третий закон Чизхолма.

Date: 2013-09-18 06:46 am (UTC)
From: [identity profile] geniepro.livejournal.com
Любые предложения люди понимают иначе, чем тот, кто их вносит.

Следствия.

1. Даже если ваше объяснение настолько ясно, что исключает всякое ложное толкование, все равно найдется человек, который поймет вас неправильно.
_____________________________________

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

Date: 2013-09-17 08:33 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Ну да. Только там ещё интереснее. Особенно поиск.

Date: 2013-09-17 08:20 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Не угадал.

Date: 2013-09-17 05:59 am (UTC)
From: [identity profile] vit-r.livejournal.com
Добавил приписку в пост.

Date: 2013-09-17 05:21 am (UTC)
From: [identity profile] vit-r.livejournal.com
Вот эта?

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

У вас опечатка

Спасибо

Вы недостаточно чётко объяснили задачу и лежащую внутри неё идею.

Ну мы, вроде, говорим про культуру Хаскеля, а там так принято.

В принципе, слово "метрика" всё остальное подразумевает.

Date: 2013-09-17 07:23 am (UTC)
From: [identity profile] geniepro.livejournal.com
> Насчёт восстановления кода после внесения шума.

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

Date: 2013-09-17 05:13 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
> непонятно зачем нужная метрика.

Да, интересно было бы заслушать мнение докладчика.

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

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

"По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолена бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы не чиатем кдаужю бкуву по отдльенотси, а все солво цликеом."

Насколько я понимаю мысель докладчика, при конструировании искусственных языков тоже желательно предусматривать некоторую избыточность ключевых слов. Если моё понимание правильно, иллюстрация докладчика крайне неудачна.
Edited Date: 2013-09-17 05:14 pm (UTC)

Date: 2013-09-17 09:23 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Если моё понимание правильно

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

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

Date: 2013-09-17 09:49 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
> Не правильно

Огласите весь список, пожалуйста.

Я так много раз игрался и "u" в Vim'е всё время работал. Ни малейшей поддержки языка не требовалось. Право слово!

Более того, покорёженный редакторами/полетевшей ФС код тоже приходилось восстанавливать. Но с распространением git и подобных, эта практика как-то сошла на нет. Т.е. либо откат в vcs, либо откат в редакторе, либо написание с 0я (если потеряно вообще всё).

Date: 2013-09-17 09:53 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Ну понятно же, что вопрос не в этом.

Date: 2013-09-17 10:03 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Вопрос не в этом, но ребусы на сегодня для меня закончились.
Edited Date: 2013-09-17 10:03 pm (UTC)

Date: 2013-09-17 08:24 pm (UTC)
From: [identity profile] vit-r.livejournal.com
непонятно зачем нужная метрика

Проблемы на вашей стороне.

Date: 2013-09-18 04:33 am (UTC)
From: [identity profile] geniepro.livejournal.com
Так на моей стороне как раз нет проблем с кошками, детьми, глупыми коллегами и злыми агентами ЦРУ, поставившими перед собой цель внести хаотичный шум в мои программы...

Вот те на те.

Date: 2013-09-17 10:17 am (UTC)
From: [identity profile] livejournal.livejournal.com
User [livejournal.com profile] thesz referenced to your post from Вот те на те. (http://thesz.livejournal.com/1396082.html) saying: [...] "Код не читают" [...]

Date: 2013-09-17 08:10 pm (UTC)
From: [identity profile] sab123.livejournal.com
Какой такой машинный байт? Перфокарта в "современном" виде была придумана еще во времена электромеханических табуляторов. Да и в первых машинах байты были 6-битные.

Date: 2013-09-17 09:15 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Если бы перфокарта не подходила бы под новую технику, её бы заменили или сменили количество строк и столбцов.

Date: 2013-09-17 10:28 pm (UTC)
From: [identity profile] sab123.livejournal.com
Но к байтам оно отношения не имеет. Вот к тому, сколько машинописных символов входит на строку листа формата letter - небось имеет. Лист как раз шириной 8.5 дюйма, а символы идут шириной 1/10 дюйма.

Date: 2013-09-17 08:48 pm (UTC)
From: [identity profile] stop-nonsense.livejournal.com
Да-да, код не читают. Именно по этому короткие строчки в коде лучше длинных. По той же причине в газетах узкие колонки.

Date: 2013-09-17 09:16 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Опять же, вопрос не в "лучше", а в "запрещено". То, что быть здоровым и богатым лучше, никто не спорит.

Date: 2013-09-17 09:31 pm (UTC)
From: [identity profile] stop-nonsense.livejournal.com
Когда формулируется некий социальный договор, то есть необходимость проводить чёткие границы. Участникам тогда проще разрешать конфликты. В том числе свои внутренние.

Примером такого договора может служить руководство по стилю кода в том или ином проекте.

Date: 2013-09-17 09:56 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Надо всё-таки различать заключение договора и его составление.

Profile

vit_r: default (Default)
vit_r

January 2026

S M T W T F S
    12 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 3rd, 2026 08:17 pm
Powered by Dreamwidth Studios