Небанальное распознавание и понимание текста работает на основе распознавания более низкоуровневых признаков — типа букв, отступов и т. п.
>потоковое чтение текста
Не обязательно. Чтение и просмотр исходников могут происходить в разных направлениях — например, снизу вверх. Но и в таком случае будут довольно простые распознающие цепочки — типа «текст, пустая строка, уменьшение отступа» при просмотре исходников вверх.
>«воздух» вокруг «плотных» участков сильно облегчают жизнь
лишь привычка, нет объективных причин для иного. Что, «буфер чтения» перегрузится?
Для многострочных условий if я тоже делаю скобку на новой строке — потому что иначе будет сложно увидеть конец условия и начало тела. Аналогично после списков инициализации.
Автоматическое рисование линий после начала функции не особо нужно — после переобучения достаточно ориентироватся по отступам.
Скорее всего, вы говорите про привычку: когда идет распознавание нейронной цепочки, то вместе с распознаванием происходит и прогнозирование на несколько шагов вперед, появляются ожидаемые элементы — в данном примере «должна быть пустая строка», и когда распознавание совпадает с ожиданием — и срабатывает «разрядка», условный рефлекс закрепляется. Но эта привычка легко заменяется (ведущей становится другая нейронная цепочка), и не нужно будет никакой разрядки. Наоборот, пустые строки будут вызывать напряжение — «куда подевался код, что это мне тут лапшу многострочную подсовывают, почему я должен тратить время на пустые строки».
По поводу «а не оставлять ли } на строке с последним оператором» — будет слишком неудобно добавлять новые инструкции в блок кода. В остальном, по возможности — как в Python, ибо короче и визуально совпадает.
>Вам кажется очевидным, что «в финале» они придут к какому-то единому для себя стандарту. К сожалению, это не более чем произвольная догадка.
Не потому ли так происходит, что стандарт выбирается больше на основе привычек, а не логического анализа с изменением привычки?
>я не очень понимаю, как это решает проблему работы с этими двумя конкретными coding styles
Может я что не так понял… Но если вставить одну табуляцию вместо 4 пробелов, и одну табуляцию вместо двух пробелов? Не будут же они вставлять по 2 и 1 табуляции соответственно. А значит и неоднозначности пропадут.
Предвидя такой ваш ответ, я и написал уточнение:
>речь о признаках, которые распознаются мозгом за миллисекунды (анализ областей сплошных цветов, например, начинается еще в нейронах сетчатки, и пустая строка или новый отступ для мозга воспринимаются быстро. А вот подпрограмма действий «прокрутка» — это уже дольше, целый набор рефлексов)<
Напишу еще одно уточнение. Низкоуровневые признаки распознаются автоматически (нейроны шлют сигналы в параллельном режиме), без усилий. Усилия нужны для более высокоуровневой работы — например, синтаксический анализ выражения на J, где надо сопоставлять разные варианты, делать выбор и запоминать его («а это значит параметр вот той функции»). Вон те пустые места и в теории не могут принести каких-то сложностей — что было «а вот пустое место — пустая горизонтальная строка, значит начало функции», что станет «пустое место — дополнительный отступ, значит начало функции» — все это простейшие нейронные цепочки, одинаково комфортные после переобучения.
Отдохнуть взглядом на таком узком пространстве в одну строку?? Если отдых для глаз, то лучше перевести взгляд от монитора. Если же для мозга… Тоже перевести взгляд от монитора?
>Устраиваетесь на работу, читаете местный coding style и следуете ему
Но кто пишет такие стили? Программисты-тимлидеры. А они могут за свою жизнь попробовать много стилей, и к чему они придут в финале, то и будет очередным стандартом. Поэтому полезно анализировать и выбирать, что лучше. Тогда у большего количества фирм может быть лучший стандарт.
>ставим 4 дополнительных пробела или 2, если оператор продолжается на следующей строке
habrahabr.ru/post/149210/#comment_5042696
речь о признаках, которые распознаются мозгом за миллисекунды (анализ областей сплошных цветов, например, начинается еще в нейронах сетчатки, и пустая строка или новый отступ для мозга воспринимаются быстро. А вот подпрограмма действий «прокрутка» — это уже дольше, целый набор рефлексов)
Если стили отличаются не сильно, то и в памяти надо держать меньше отличий. Должно быть легче…
Если прийти к универсальному стилю не суждено, то можно хотя бы частично к этому подойти — договариваться по все большему количеству частных случаев, отличия будут уменьшатся…
А что там было? Инициализация одних полей класса полями того же класса? Если я избегаю таких вещей, то вроде не просижу пол ночи… Если бы где-то использовал такие вещи то да, пришлось бы в том конкретном классе внимательно проследить за порядком. Но в остальных случаях, зачем тратить свое внимание на такие вещи?
Я попытался доказать другим методом — рассуждения «хватит ли мозгу информации о признаке Х при беглом взгляде на исходники в новом стиле». Если информации потенциально хватает, то после обучения будут выработаны соответствующие гностические (распознающие) нейроны, и в качестве основного источника информации о коде будут использоваться уже они. Значит что признак типа «это новая функция» тоже будет видно с первого взгляда. И еще было замечено, что по факту так оно и оказалось.
>Многие люди принимают наркотики
Так попробовать на одну неделю другой стиль — это не наркотики принять. Хотя привыкание вырабатывается )).
>ибо приколы с git-ом и прочими ребятами
Можно подробнее? Я работал только с VSS и SVN, и не знаю, о чем вы.
>потоковое чтение текста
Не обязательно. Чтение и просмотр исходников могут происходить в разных направлениях — например, снизу вверх. Но и в таком случае будут довольно простые распознающие цепочки — типа «текст, пустая строка, уменьшение отступа» при просмотре исходников вверх.
>«воздух» вокруг «плотных» участков сильно облегчают жизнь
лишь привычка, нет объективных причин для иного. Что, «буфер чтения» перегрузится?
Автоматическое рисование линий после начала функции не особо нужно — после переобучения достаточно ориентироватся по отступам.
Зачем?
На хабре уже была эта картинка:
www.emacswiki.org/pics/static/TabsSpacesBoth.png
Если полный переход на табы — никаких пробелов, и один отступ всегда один таб.
Не потому ли так происходит, что стандарт выбирается больше на основе привычек, а не логического анализа с изменением привычки?
>я не очень понимаю, как это решает проблему работы с этими двумя конкретными coding styles
Может я что не так понял… Но если вставить одну табуляцию вместо 4 пробелов, и одну табуляцию вместо двух пробелов? Не будут же они вставлять по 2 и 1 табуляции соответственно. А значит и неоднозначности пропадут.
>речь о признаках, которые распознаются мозгом за миллисекунды (анализ областей сплошных цветов, например, начинается еще в нейронах сетчатки, и пустая строка или новый отступ для мозга воспринимаются быстро. А вот подпрограмма действий «прокрутка» — это уже дольше, целый набор рефлексов)<
Напишу еще одно уточнение. Низкоуровневые признаки распознаются автоматически (нейроны шлют сигналы в параллельном режиме), без усилий. Усилия нужны для более высокоуровневой работы — например, синтаксический анализ выражения на J, где надо сопоставлять разные варианты, делать выбор и запоминать его («а это значит параметр вот той функции»). Вон те пустые места и в теории не могут принести каких-то сложностей — что было «а вот пустое место — пустая горизонтальная строка, значит начало функции», что станет «пустое место — дополнительный отступ, значит начало функции» — все это простейшие нейронные цепочки, одинаково комфортные после переобучения.
Но кто пишет такие стили? Программисты-тимлидеры. А они могут за свою жизнь попробовать много стилей, и к чему они придут в финале, то и будет очередным стандартом. Поэтому полезно анализировать и выбирать, что лучше. Тогда у большего количества фирм может быть лучший стандарт.
>ставим 4 дополнительных пробела или 2, если оператор продолжается на следующей строке
Не лучше ли использовать табуляции? ))
речь о признаках, которые распознаются мозгом за миллисекунды (анализ областей сплошных цветов, например, начинается еще в нейронах сетчатки, и пустая строка или новый отступ для мозга воспринимаются быстро. А вот подпрограмма действий «прокрутка» — это уже дольше, целый набор рефлексов)
Академические тут и не нужны. Можно и науч-поп типа Хокинса «Об интеллекте», можно и здравый смысл (как люди вообще чему-то учатся?).
>Есть много вещей, который стоит попробовать
Для программистов вопросы стиля весьма важны.
Если прийти к универсальному стилю не суждено, то можно хотя бы частично к этому подойти — договариваться по все большему количеству частных случаев, отличия будут уменьшатся…
А что там было? Инициализация одних полей класса полями того же класса? Если я избегаю таких вещей, то вроде не просижу пол ночи… Если бы где-то использовал такие вещи то да, пришлось бы в том конкретном классе внимательно проследить за порядком. Но в остальных случаях, зачем тратить свое внимание на такие вещи?
Я попытался доказать другим методом — рассуждения «хватит ли мозгу информации о признаке Х при беглом взгляде на исходники в новом стиле». Если информации потенциально хватает, то после обучения будут выработаны соответствующие гностические (распознающие) нейроны, и в качестве основного источника информации о коде будут использоваться уже они. Значит что признак типа «это новая функция» тоже будет видно с первого взгляда. И еще было замечено, что по факту так оно и оказалось.
>Многие люди принимают наркотики
Так попробовать на одну неделю другой стиль — это не наркотики принять. Хотя привыкание вырабатывается )).
>ибо приколы с git-ом и прочими ребятами
Можно подробнее? Я работал только с VSS и SVN, и не знаю, о чем вы.