Перевод не мой, этот афоризм давно гуляет в рунете. Во оригинал, попробуй сам перевести:
Цитата |
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? |
Насчет бухал... не знаю. Это всё же из его знаменитой книги "The Elements of Programming Style"
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
sergeiss
8.01.2017 - 17:38
Цитата (twin @ 8.01.2017 - 14:53) |
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? |
Мой перевод, сделанный "на коленке":
"Все знают, что дебаггинг в 2 раза сложнее, чем написание программы. То есть, если вы использовали весь свой ум (были умны, насколько только это возможно - дословно скорее так), когда писали это, то как же вы будете это отлаживать?" - звучит вполне логично.
В оригинале не вижу никаких слов, которые можно было бы перевести как "то вы по определению недостаточно сообразительны, чтобы его отлаживать" - это очень вольный перевод, далекий от оригинала.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Так же склоняюсь к переводу sergeiss, чуток подправлю:
"Все знают, что отладка, вдвойне сложнее написания программы изначально. Так, если вы так умны, насколько это возможно, были в момент написания ее, как будете отлаживать это."
он так шутит походу. Ничего в этой фразе нету толкового.
Цитата (sergeiss @ 8.01.2017 - 13:38) |
Мой перевод, сделанный "на коленке" |
Это ближе к тексту, но смысла не меняет.
Цитата (sg.com @ 8.01.2017 - 14:02) |
Ничего в этой фразе нету толкового. |
Ты просто не понял смысла. Эту фразу можно перевести одним русским словом -
не перемудри.
Он имел ввиду, что если будешь сильно усложнять код, то у самого же и не хватит ума его отдебажить.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
sergeiss
8.01.2017 - 18:13
Цитата (sg.com @ 8.01.2017 - 18:02) |
чуток подправлю: "Все знают, что отладка, вдвойне сложнее написания программы изначально. Так, если вы так умны, насколько это возможно, были в момент написания ее, как будете отлаживать это." |
Ты сам переводил или гуглом?
Приколу ради я у гугла спросил, он так перевел:
"Всем известно, что отладка в два раза так сложно, как написание программы, в первую очередь. Так что если вы такой умный, как вы можете быть, когда вы пишете, как вы когда-либо отлаживать его?"
Что-то мне напоминает перевод от
sg.com (не в обиду только)
Цитата (twin @ 8.01.2017 - 18:11) |
Это ближе к тексту, но смысла не меняет. |
Меняет. Потому что про "недостаточную сообразительность" в оригинале нет ничего.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата (sergeiss @ 8.01.2017 - 18:13) |
Ты сам переводил или гуглом? |
переводил сам. Без обид, даже если будут говорить что перевел гуглом, мне то известно, как на самом деле переведено.
А что касаемо смысла той фразы, то можно ее смысл подвести под то, что "не стоит сильно все продумывать в самом начале, только необходимое, все остальное, отлаживайте при необходимости".
Но больше похоже, что он "на приколе". Но в каждом "приколе" есть доля "прикола". Все остальное серьёзно.
Цитата (sergeiss @ 8.01.2017 - 14:13) |
Меняет. Потому что про "недостаточную сообразительность" в оригинале нет ничего.
|
Ну и что? Я не про точность фразы, а про смысл говорю. Умны или сообразительны... В чем разница в данном контексте? При написании алгоритмов скорее важна сообразительность, нежели использование ума. Человек может быть крайне умным и начитанным, но не сможет отгадать логическую загадку для первокласника, если у него репродуктивный интеллект.
Так что это все слова, от которых не меняется конечный смысл.
Впрочем это афоризм. Его каждый интерпретирует по своему. Я воспринимаю его так, что если стараешься писать код на пределе возможностей, то запросто можешь столкнуться с ситуацией, что не сможешь его отдебажить.
Допустим используешь какую-то незнакомую технологию, толком в ней не разобравшись.
От того я и люблю дебаггеры, и трачу на них время, хотя это не нравится дяде Бобу. Это позволяет заглянуть в код с другой стороны, со стороны отладки.
Я вот только не пойму, а что дядя Боб противник юнит-тестов?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Уже давно в рунете гуляет такой перевод:
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
https://habrahabr.ru/post/275841/
_____________
Чатик в телеге
Все таки афоризмы это фразы которые используются, как законченные мысли:
Цитата |
«Надо много учиться, чтобы осознать, что знаешь мало» (Мишель де Монтень); «Нет ничего глупее желания всегда быть умнее всех» (Франсуа де Ларошфуко); «Жизнь прекрасна, если научишься жить» (Менандр) |
Дядя Боб, вряд ли пишет код, как ему диктуют, скорее он его пишет как ему хочется, да и все.
При этом, если ему нужно приложить весь ум в момент написания, он его приложит, а если не нужно, то напишет по-проще.
Смысловой перевод, чтобы не потерять контекст, должен быть вроде такого: "Если вы изначально настолько уложнили (переоптимизировали) свой код, как только могли, как же вы его собираетесь рефакторить? При том что каждый знает, что рефакторинг, сам по себе, вдвое сложнее написания".
Цитата вырвана из книги The Elements of Programming Style 2nd edition, chapter 2. После тезиса "Use library functions", пару абзацев вперед. Так что twin верно всё говорит:
Цитата (twin @ 8.01.2017 - 18:11) |
Эту фразу можно перевести одним русским словом - не перемудри. |
Цитата (twin @ 8.01.2017 - 18:49) |
Я вот только не пойму, а что дядя Боб противник юнит-тестов? |
Не видел никогда, чтобы он был противником тестов. Его книга Agile software development не исключает TDD.
Цитата (Ron @ 8.01.2017 - 18:15) |
Не видел никогда, чтобы он был противником тестов. Его книга Agile software development не исключает TDD. |
Santehnick тыкнул меня носом в цитату дяди Боба:
Цитата |
If you're good at the debugger it means you spent a lot of time debugging. I don't want you to be good at the debugger. |
Может я опять неверно перевел, но мне кажется, что он не любит дебаггеров. А юнит-тесты, это не дебаггинг разве?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
sergeiss
9.01.2017 - 09:08
Цитата (twin @ 9.01.2017 - 06:40) |
А юнит-тесты, это не дебаггинг разве? |
Гхм... Ну, вообще-то, совершенно разные вещи... Юнит-тестирование - это проверка качества работы юнитов, т.е. отдельных модулей/функций по определенному алгоритму. Задаём что-то на входе и проверяем, что на выходе: должны получить что-то определенное. А дебаггинг... Это когда определяем, как работает данный конкретный код. Может быть ставим точки останова, может быть что-то куда-то логгируем и т.д.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата (sergeiss @ 9.01.2017 - 05:08) |
Задаём что-то на входе и проверяем, что на выходе: должны получить что-то определенное. |
Ключевое слово "проверяем". Юнит-тесты, это проверка на корректность логической составляющей. Тоесть фактически поиск логических ошибок.
Вот из вики:
Цитата |
Debugging is the process of finding and resolving of defects that prevent correct operation of computer software or a system. |
Так что не обязательно дебаггинг, это процесс исправления ошибок
Цитата (sergeiss @ 9.01.2017 - 05:08) |
Может быть ставим точки останова, может быть что-то куда-то логгируем и т.д. |
Это более широкое понятие.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
sergeiss
9.01.2017 - 09:47
Если тебе не нравится сказанное ранее, то по-другому скажу.
Юнит-тестирование - это проверка работоспособности юнита, когда мы заранее знаем, что в ответ на определенные входные данные мы на выходе должны получить что-то определенное. При этом не влезаем внутрь этого юнита - это делает сам тест. По сути, это как "черный ящик". Содержимое этого ящика/юнита мы не меняем, а только проверяем его работоспособность.
А дебаггинг - это когда мы лезем внутрь процесса и смотрим, что там и как делается, ковыряемся во всех деталях происходящего. Если надо, то меняем какие-то входные параметры и повторяем процесс до получения приемлемых результатов, удовлетворяющих некоторым, заранее заданным критериям.
Вот такая аналогия...
Попал человек в больницу. Смотрим (с точки зрения обывателя) что на входе, сравниваем с тем, что на выходе. Это - юнит-тестирование. Вылечили/не вылечили.
А врач, который лечит, он лезет во все детали, что-то там изменяет - он дебаггингом занимается
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата (sergeiss @ 9.01.2017 - 05:47) |
А врач, который лечит, он лезет во все детали, что-то там изменяет - он дебаггингом занимается |
Анекдот есть на эту тему. Приходит ветеринар на прием к терапевту.
- На что жалуетесь?
- Ха! Так и дурак сможет!
Так вот. Дебаггинг, повторюсь, это более широкое понятие, нежели исправление ошибок. Он вклчает в себя и их поиск. Так вот юнит-тестирование - это
часть дебаггинга. Если юнит ведет себя неподобающим образом, все равно придется лезть в его потроха.
И да, это не синонимы, однако юнит-тестирование, это все равно часть процесса дебаггинга. А, как известно, нельзя быть немного беременным. Нельзя нелюбить дебаггинг и любить юнит-тесты.
Это получается как у того грузина:
- Кацо! Ты помидоры любищь?
- Кущать люблю, а так, ц, нэт.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.