LVV>>>>Писал Дейкстра, писал Кнут. fk0>>> Что бы они ни писали, не нужно их считать безусловными авторитетами претендующими на абсолютное знание. LVV>>В данном случае конкретно статья Кнута была не мнением, а исследованием. C>Нет таких исследований.
Если есть возможность, найди вот эту статью Кнута: An empirical study of FORTRAN programs
У него еще есть на тему структурного программирования с goto. https://web.archive.org/web/20130731202547/http:/pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>И настоятельно мне рекомендовал использовать эти имена для соответствующих переменных. LVV>Ибо я когда-нить перестану у него работать, а ему потом разбираться... LVV>Вот и приходилось однобуквенные имена комментариями обкладывать.
Это был суровый матан?
У математиков давно принята система именования идентификаторов. Наверное, она в каждом коллективе своя. Но имена типа FP12K2 никого не смущали. В 6 символов математики умудрялись заложить глубокий смысл. Они и сейчас так пишут.
А почему односимвольные имена? Даже в "Искре-226" допускались двухсимвольные. Второй символ обязательно цифра. Вот это был клинический случай. Приходилось специальный документ, описывающий идентификаторы, составлять. Потому что программа с комментариями могла в память не уместиться.
LVV>Я вот прямо сейчас код курсовой одного студня правлю. LVV>Сижу, комменты добавляю — чтобы понятней ему тоже было...
Так вставь ему пистон на ближайшей проработке. Ведь скажет же потом: это не я, это препод мне посоветовал так писать.
LVV>>2. Проверка технической реализации, которую ожидаем также от старших и мидлов с экспертизой в данном компоненте. LB>Экспертиза бывает судебно-медицинская, например. А здесь должно быть написано "являющихся экспертами" или "имеющих опыт работы". Двоечники, блин! Мидлы!
Да пора привыкнуть к этому карго-культу, уже везде эту прямую кальку используют любители показаться важными и идущими в ногу с.
Здравствуйте, LaptevVV, Вы писали:
LVV>>>"Мастерство не пропьешь"(с)... P>>Оно, конечно, так. Но иногда некоторые коллеги присылают мне жалобы: такой-то участок кода не работает. Я открываю. Первая реакция: какой идиот это написал? Чуть позже с глаз спадает пелена, и я вижу: код — мой. Сделан так, что строка, добавленная коллегой, его сломала. Видимо, писался в спешке. А может, сейчас требования изменились. Деталей не помню, код написан несколько лет назад. И приходится мне правки в него вносить самому. P>>Конечно, это не типичный случай. Но всякой бываеь. LVV>Бывает. Я для этого применяю ТОТАЛЬНЫЙ коммент. LVV>Студенты не верят, что я могу открыть прогу 7-летней давности и все по ней рассказать. LVV>Когда видят комменты — глаза на лоб лезут: комментов больше кода...
Почитайте Фаулера.
"...comments often are used as a deodorant. It’s surprising how often you look at thickly commented code and notice that the comments are there because the code is bad."
"When you feel the need to write a comment, first try to refactor the code so that any comment becomes superfluous."
Здравствуйте, Skorodum, Вы писали:
S>>Уроды это придумали. Недоучившаяся школота, не знающая инструментария. Не должен компилятор следить за стилем, для этого отдельные утилиты есть, тот же astyle. S>Нормальные утилиты на компиляторе и основаны: clang-format. Просто по ключевым словам С++ полноценно не отформатируешь.
Ключевое: "на основе". Не часть компилятора, а отдельная утилита. На секундочку, настраиваемая.
А не так как у goвноавторов — стиль прибит гвоздями к компилятору.
Здравствуйте, Skorodum, Вы писали:
Pzz>>Вот чем хорош язык Go, в нем есть один единственный правильный стиль, который жестко енфорсится редактором текстов. И это сразу снимает все вопросы по стилю. И очень освобождает руки от форматирования текста. S>В С++ IDE уже умеют форматировать код по мере набора с помощью clang-format (не только отступы, а именно продвинутое форматирование: скобочки, пробелы, перенос строк и т.п.). Стиль какой хочешь можно определить.
Здравствуйте, LaptevVV, Вы писали:
C>>Нет таких исследований. LVV>Если есть возможность, найди вот эту статью Кнута: An empirical study of FORTRAN programs LVV>У него еще есть на тему структурного программирования с goto. LVV>https://web.archive.org/web/20130731202547/http:/pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
Это не исследование. Кроме того, там не разделяется goto назад и goto вперёд. Они фундаментально отличаются.
Здравствуйте, RussianFellow, Вы писали:
RF>Уважаемые коллеги, предлагаю вам обсудить такую тему, как code review (просмотр кода).
Так как я пишу без ошибок, то делать Code review моего кода всем быстро надоедает. Последний code review свёлся к переписываю кода из стиля Круговая оборона к стилю Контрактное программирование. Это произошло из-за того, что меня заранее не предупредили в каком стиле писать код.
Когда же я делаю code review, то обычно ищу (и нахожу) фактические ошибки, не выловленные при тестировании, к полному неудовольствию начальника проекта. Так как я работаю иностранным консультантом, то приходится проявляеть дипломатические способности и толерантно относиться ко многим нарушениям наилучших практик программирования. Например, если в спецификациях записано, что код должен соответсвововать MISRA C++, то найти список несоответствий довольно просто, однако практика показывает, что далеко не всегда после этого код будет исправлен, так как на работоспособность кода это не влияет.
Здравствуйте, LaptevVV, Вы писали:
C>>Использование goto для прыжков назад приводит к увеличению ошибок. Использование goto для прыжков вперёд количество ошибок уменьшает. Это было проверено уже много раз в проектах, которые пишутся на С. LVV>Это было задолго до С — еще для фортрана. И как раз Кнутом.
То что бред сказали ещё до С — меньше бредом не становится.
C>>Но по какой-то идиотской причине до университетов это до сих пор не дошло. Видимо, из-за того, что преподаватели практическим программированием занимаются мало. LVV>Если до американских не дошло, то это ИХ проблемы...
До американских дошло, что современная практика слегка отличается от 1960-го.
LVV>У нас — все дошло.
Ага, потому спутники и падают. Одна точка выхода из функции полёта — в Тихий океан.
LVV>Пишем вообще без goto...
Ну да, прививаете бредовые привычки с детства.
Здравствуйте, LaptevVV, Вы писали:
mgu>>А в старом добром HTML-е один вход, а выхода нет. При этом к структурированности не придерёшься. LVV>А это вообще не язык программирования
Буква L как бы намекает. Просто синтаксис не си-подобный.
mgu>>А ещё есть yield -- это вообще проходной двор. LVV>Это в питоне, что ли?
Здравствуйте, std.denis, Вы писали:
LVV>>>2. Проверка технической реализации, которую ожидаем также от старших и мидлов с экспертизой в данном компоненте. LB>>Экспертиза бывает судебно-медицинская, например. А здесь должно быть написано "являющихся экспертами" или "имеющих опыт работы". Двоечники, блин! Мидлы!
SD>Да пора привыкнуть к этому карго-культу, уже везде эту прямую кальку используют любители показаться важными и идущими в ногу с.
Уже?
Но панталоны, фрак, жилет,
Всех этих слов на русском нет;
А вижу я, винюсь пред вами,
Что уж и так мой бедный слог
Пестреть гораздо б меньше мог
Иноплеменными словами,
mgu>>>А в старом добром HTML-е один вход, а выхода нет. При этом к структурированности не придерёшься. LVV>>А это вообще не язык программирования mgu>Буква L как бы намекает. Просто синтаксис не си-подобный.
Буквы P нет... mgu>>>А ещё есть yield -- это вообще проходной двор. LVV>>Это в питоне, что ли? mgu>И там тоже.
И ЧО?
Структурное программирование касается внутренней организации кода в процедурах и функциях.
В однопроцессорной схеме.
B прекрасно себя показало и показывает.
Несмотря ни на какие yieldы...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
C>>>Нет таких исследований. LVV>>Если есть возможность, найди вот эту статью Кнута: An empirical study of FORTRAN programs LVV>>У него еще есть на тему структурного программирования с goto. LVV>>https://web.archive.org/web/20130731202547/http:/pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf C>Это не исследование. Кроме того, там не разделяется goto назад и goto вперёд. Они фундаментально отличаются.
Твое слово против слова Кнута.
Но у Дональда, по крайней мере, статья есть. А у тебя — нет.
Если есть — давай, почитаю.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Ну и напоследок: http://sci-hub.tw/10.1145/356635.356640 — это более поздняя статья от Кнута, где он пишет о том, что его опыт академического программирования не совсем применим к реальному миру. И что goto таки полезен, и приводит примеры этого (страница 287) и практически повторяет мои утверждения на стр. 294.
RF>В чём заключается code review? Есть ли у вас на работе такое и как часто, каким образом оно проводится? Кто проводит у вас code review? RF>Что бывает в случае плохого результата code review?
мне куда более интересно зачем нужен скрум, эджайл и канбан. а. еше 5с и абс забыл.
п.с. а кодревью штука полезная. зачастую новый работник может сгенерить код, исправляющий ошибку в одном блоке и из-за этого исправления рушится нахрен все остальное. и не из бандитских намерений, а просто потому, что он еще не знает как функционирует система в комплексе. тупо не знает бизнес процессы.
LVV>>Ни for, ни while не являются замаскированными goto. C>Да ну? А если дизассемблером посмотреть?
А если вспомнить, что команда цикла и команда безусловного перехода — это разные команды?
А давай еще разложим команды ассемблера на микрокоманды? Если уж спускаться внутрь — то спускаться до микросхем...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>>>Ни for, ни while не являются замаскированными goto. C>>Да ну? А если дизассемблером посмотреть? LVV>А если вспомнить, что команда цикла и команда безусловного перехода — это разные команды?
А ты посмотри сам. Возьми типичный код Линукса с "goto cleanup" и загляни в ассемблер.
Здравствуйте, Pzz, Вы писали:
Pzz>Ключевые люди там, в основном, все взрослые и уже отметившиеся в более других общеизвестных проектах
Угу, как раз из тех, что считают свой стиль единственно верным.
Здравствуйте, LaptevVV, Вы писали:
LVV>А если вспомнить, что команда цикла и команда безусловного перехода — это разные команды?
Я не очень понимаю, зачем опускаться на уровень ассемблерных команд. Ты всегда, компилируя проект, создаешь и ассемблерные листинги. Чтобы почитать на досуге? Мне за всю жизнь пришлось их читать несколько раз. Править — никогда.
О командах. ЕМНИП, команды цикла и перехода в самом деле разные. Но команда цикла, которая loop, работает со счетчиком. Команды для цикла типа while я не помню. Обычно делается проверка условия, и по результатам либо безусловный переход вверх, либо условный вниз.
Совсем оффтоп. А зато jmp и ret, по сути, одно и то же. И call где-то там же.
LVV>>>>Ни for, ни while не являются замаскированными goto. C>>>Да ну? А если дизассемблером посмотреть? LVV>>А если вспомнить, что команда цикла и команда безусловного перехода — это разные команды? C>А ты посмотри сам. Возьми типичный код Линукса с "goto cleanup" и загляни в ассемблер.
Зачем. С циклами я работаю на более высоком уровне абстракции, чем с if+goto
Хочешь быть счастливым — будь им!
Без булдырабыз!!!