Ознакомьтесь с нашей политикой обработки персональных данных
19:30 

Бугурт программиста

alegz
Здравствуй дорогой дневничoк.

Сел я пару дней назад за прочтение порекомендованной мне книжки.
"Learn python the hard way" от Shaw Z.A.

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

Но не суть, годная книга для начинающих, мне она собственно нужна для ознакомления с базовым синтаксисом. В общем, если целенаправлено за неё сесть часа за 4-8 читается вся.

Но дочитал я до 110-ой страницы, и моему взору предстала фраза от разработчика с 20-ти летним стажем, которая вызвала боль в нижней части поясницы.

Do not use a “debugger”. A debugger is like doing a full-body scan on a sick person. You do not get any specific useful information, and you find a whole lot of information that doesn’t help and is just confusing.
...
"The best way to debug a program is to use print to print out the values of variables at points in the program to see where they go wrong."

Перевод:

Не используйте "отладчик". Использование отладчика, это как производить полное обследование заболевшего человека. Вы не получите конкретной полезной для вас информации, но вместо этого вы получите множество сторонней информации, которая кроме смуты вам ничего не даст.
...
"Лучший способ отладки приложения - использование конструкции print для вывода значения данных на экран на определённом участке кода, чтобы определить источник ошибки."

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

Да принт хорош для простых моментов потому что отладчик ещё освоить надо.
Если на начальном этапе или в примитивной логике надо выявить почему подсчёт дал скажем 5, а не 7, там это вполне сойдёт.
Но при более сложной схеме, скажем MTV приложение на django, где баг происходит на уровне темплейта, или в обще хер его знает где находится, то тут только отладчиком, ибо убьётся куча времени на выявления багнутого участка кода принтами. Куда проще раставить брейкпоинты и проследить течение данных в процессе работы приложения, даже проблемы выше примитивных при освоенном отладчике уже легче решить им нежели принтом.

Меня убило что объяснение в книге однозначное, и не даёт понимания о том что где применять.
Дебаггер это хороший инструмент который при грамотном использовании сокращяет время отладки приложения и делает этот процесс проще, он попросту требует определённой квалификации и понимания того что происходит.
ИМХО просто глупость учить начинающего разработчика таким вещам, чтоб мол пользуй тока print, он проще.
Вместо того чтобы хотя бы в кратце объяснить область применения с отсылкой того с чем надо ознакомится чтобы уметь пользоваться дебаггером.

@темы: программирование, бугурт, ёптваюмать, python

URL
Комментарии
2013-02-01 в 17:06 

Сразу классика кун-фу вспоминается:

Сначала ты не знаешь, что нельзя делать то-то
Потом знаешь, что нельзя делать то-то
Потом ты понимаешь, что иногда таки можно делать то-то
Ну а потом ты понимаешь, что помимо того-то существует еще шестьдесять шесть способов добиться желаемого, и все из них практически равноправны.
Когда тебя спрашивают "как мне добиться желаемого", ты быстро перебираешь в уме эти шестьдесять шесть способов, прикидываешь то общее, что в них есть, вздыхаешь и говоришь: "вообще-то, главное — гармония."
На вопрос обиженных учеников: "а как ее добиться?", ты говоришь: "никогда не делайте то-то".

(c) Sinclair www.rsdn.ru/forum/humour/1600906


И это не PHP-way. Религиозно не пользоваться отладчиком, конечно же, глупо. Но очень многие опытные разработчики высказываются в том же духе. Потому что в сложных системах, особенно многопоточных, встречаются гейзенбаги, которые отладчиком поймать принципиально невозможно. Потому что система может стоять у заказчика за тридевять файрволов, и всё что у тебя будет — это невнятные объяснения пользователей и лог или посмертный дамп. Потому что твой код может работать на микроконтроллере с 16 Кб памяти. В общем, отладчик работает только на середине кривой сложности: Hello World проще разобрать глазами, многопоточного распределённого монстра — снова логами.

2013-02-01 в 17:23 

alegz
Опять же это не отменяет того что однозначно объяснять не есть гут.

Логи - очень важная часть приложения не спорю, но это не то же самое что вставлять print, после перезагружать страницу/приложение/чёртзнаетшто и смотреть что же он выведет на страничке/в окошке/хер его знает где.

Да и кстати я не знал что у тебя есть днявочка и что ты ещё ей пользуешься. =)

URL
2013-02-01 в 18:22 

Автор торопыга, я не спорю :-)

А днявочки у меня нет, это просто аккаунт, заведённый с единственной целью.

2013-02-01 в 18:40 

alegz
А ты заведи. Начни смотреть My Little Pony и посте всякий фанарт туда.
На крайний случай всяких нэкоподобных няшек. =)

URL
   

Мой дневник

главная