crypt of decay - а я уже говорил, нет? [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

а я уже говорил, нет? [Jun. 27th, 2011|08:39 am]
Previous Entry Add to Memories Tell A Friend Next Entry
когда человек начинает учиться программированию, за попытку заюзать любой пошаговый отладчик надо бить табуретом в табло. чтобы в дальнейшем даже мысли такой не могло возникнуть. максимум, что разрешается — просмотр post-mortem dumps.
Linkmeow!

Comments:
[User Picture]
From:[info]avla
Date:June 27th, 2011 - 08:12 am
(Link)
А что правда, можно достаточно сложные вещи программировать без отладчика? и много таких професстоналов что не используют отладчики?

Я не программист, я Electronics Engineer, но мне случалось программировать на ассемблере и на C для микроконтроллеров 8051, Atmel AVR и ARM7,
я никогда не использовал отладчик, но у меня и программы были не очень сложные, скажем на уровне "оцифровать данные от датчика, отфильтровать простым фильтром, помножить на коэффициенты, отобразить на экранчике LCD", в таком духе, всё это и без отладчика удавалось сделать. Но как долго можно обходиться без отладчика?
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 08:17 am
(Link)
>А что правда, можно достаточно сложные вещи программировать без отладчика? и
>много таких професстоналов что не используют отладчики?

я назову только две фамилии (могу больше, но:), и этого, думаю, будет достаточно: Керниган и Пайк.

>Но как долго можно обходиться без отладчика?
вечно.

прошу заметить, что я именно про интерактивный пошаговый отладчик. исследование крэшдампов — это совсем другая сказка. но это уже не отладчик, по сути, а инструмен для выборки информации из особого формата базы данных.
From:[info]steinkrauz.livejournal.com
Date:June 27th, 2011 - 09:21 am
(Link)
Спокойно можно без отладчика работать.
Единственно, когда отладчик удобнее, это если надо поймать ошибку не в коде, а в исходных данных.
From:[info]tristes_tigres
Date:June 27th, 2011 - 11:55 am
(Link)
> А что правда, можно достаточно сложные вещи программировать без отладчика?

Для встроенных процессоров - вряд ли.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 01:57 pm
(Link)
Офигенный коммент, особенно непосредственно в ответ на признание человека, который периодически пишэт для 8051, AVR и ARM и никогда не пользовался отладчиком.
From:[info]tristes_tigres
Date:June 27th, 2011 - 01:59 pm
(Link)
вот здесь объяснение почему, специально для [info]tzirechnoy@lj
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 02:04 pm
(Link)
Могли и не напоминать -- уровень Вашых объяснений мы с Вами, кажэтся, где-то ужэ обсуждали...
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 01:59 pm
(Link)
i lold too.
From:[info]singleplaye-r.livejournal.com
Date:June 27th, 2011 - 09:14 am
(Link)
а что в них такого ужасного?
вот я вот в былые времена активно использовала для задач, превышающих хелловолд, и не вижу в этом ничего постыдного :)))
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 09:26 am
(Link)
тебе и на флэше писать не стыдно, чо.
From:[info]singleplaye-r.livejournal.com
Date:June 27th, 2011 - 09:34 am
(Link)
кстати, на флеше я, как раз никакого пошагового отладчика не использую.

--------------

да, и это называется ActionScript
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 09:38 am
(Link)
нет, это называется «флэш». как платформа, а не как конкретный вмонтированый туда язык.
From:[info]singleplaye-r.livejournal.com
Date:June 27th, 2011 - 09:40 am
(Link)
кстати, правильно пишется "нужный полезный флеш"
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 09:42 am
(Link)
навоз тоже полезный, но от этого ковыряться в нём приятно не становится.
[User Picture]
From:[info]illyge
Date:June 27th, 2011 - 12:39 pm
(Link)
Так а чем вредно?
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 01:53 pm
(Link)
тем, что тратится куча времени на бесполезную хуйню. все те три с половиной раза, что я использовал дурацкий пошаговый отладчик оказались бесполезны: я потратил времени больше, чем если бы пошёл подышал воздухом, выкурил сигарету и перечитал код.

K&P правильно говорят: при наличии интерактивного отладчика есть идиотское стремление вместо правильного образа действий (остановится, включить мозг и подумать) выбрать наиболее простой и бессмысленный (понакидать точек останова и уйти в трассировку).

плюс, впрочем, в этой фигне есть, но сомнительный: со стороны похоже, что полезным делом занимаешься. начальник заглядывает — а у тебя жопа в мыле, сопли во все стороны и на экране сессия отладчика. «а, молодец, работает!» — подумает начальник. и будет в корне не прав, конечно, но обычно он этого не понимает.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 02:23 pm
(Link)
Кстати, не согласен про то, что включить мозг и думать -- это правильный образ действий. Мозг беречь надо, он от думания греется и рождает глюки.

Потому правильный -- это наиболее простой и безсмысленный, а именно понакидать точек отладочной печати и потом неспеша сравнивать сдампленный профиль выполнения со своими представлениями.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 02:26 pm
(Link)
мозг от думанья лучше работает.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 04:41 pm
(Link)
Ага, а мышцы от поднятия тяжэстей.

Но такжэ, как 6 дней в неделю по 10 часов кидать уголь вредно для мышц, связок и костей -- так и постоянно думать тяжёлую работу вредно для мозга.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 04:44 pm
(Link)
все аналогии лгут.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 01:56 pm
(Link)
а, натурально: «режим релиза» — это изобретение уебанов. ни в каком виде не надо отключать проверку на выход за границы массивов, проверки стеков, assert'ы и прочее. никогда. пусть лучше софтина развалится с кородампом сразу, а не ковыляет, как бухой бомж.

понятно, что assert'ы и прочее надо писать щедро, особенно в публичных функциях. потому что документацию никто не читает, и поэтому контракты надо вбивать молотком и ядерной бомбой.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 02:21 pm
(Link)
И, кстати, гораздо лучшэ если вся инфраструктура софта рассчитана на то, что софитна -- периодически валится. В проивном случае редкие падения вызывают какой-то адский попаболь.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 02:25 pm
(Link)
это умолчательно, кагбэ. падает всё, поэтому писать с учётом сего факта следует сразу. и не стесняться хуячить логи действий.
From:[info]qulinxao
Date:June 27th, 2011 - 03:23 pm

шизофрения опасна!

(Link)
в части assert'ов вы прямо противоречите святому Пайку
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 04:20 pm

Re: шизофрения опасна!

(Link)
возможно. а вот Вирт считает, что много ассертов — это хорошо.
From:[info]qulinxao
Date:June 27th, 2011 - 06:54 pm

У Томпсона в Coders at Work хорошее интервью.

(Link)
насколько не точно помню
Вирт с асертами обращается как с обычными предусловиями и инвариантами при билде алгоритма - а нее некими чеками и проверками на даные скоторыми чё то произошло(до прибытия к части у которой пречек входов)

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

[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 11:38 pm

Re: У Томпсона в Coders at Work хорошее интервью.

(Link)
а это и не отладочные инструменты ни разу — это проверка контракта.
[User Picture]
From:[info]stager
Date:June 27th, 2011 - 03:56 pm
(Link)
теперь я понял, почему с gdb работать невозможно! он не предназначен для отладки! ;)

"мы ничего не хотим слышать про отладчики, нам эта тема не интересна. см рис 1"
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 04:32 pm
(Link)
дададада, именно так!

кстати, хорошо эта фигня стелана в смолтолке: там сразу вывалится в исходник, где ёбнулось. можно поковырять контекст исполнения и — при некоторой удаче — даже продолжить, как ни в чём не бывало.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 04:44 pm
(Link)
С gdb, кстати, замечательно работается. Я с его помощью выяснял непонятные моменты в вычислениях MMXа (ну, тут можно было и без gdb обойтись, но таки тогда эта светлая мысль не приходила мне в голову), взламывал одну софтину с привязкой к жэлезке и ковырял (давно запущенные) иксы на предмет кто чего и сколько сожрал. Неизменно превосходный результат!
From:[info]http://boyko.km.ua/alexey/
Date:June 27th, 2011 - 04:18 pm
(Link)
Я использовал отладчик, когда писал стартап и переключатель задач для ARM.

в тот момент исполнения программы никаких дампов сделать было невозможно.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 04:29 pm
(Link)
это несколько другая сказка, тащемта. если из всех доступных вариантов только такой — что уж поделаешь…
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 04:45 pm
(Link)
Надо было светодиодик к ноге припаять, и им в такт подмигивать.
From:[info]http://boyko.km.ua/alexey/
Date:June 27th, 2011 - 04:55 pm
(Link)
Использовал и осциллограф, и компорт. Но иногда не хватало. Вот только на осциллографе не видно, правильно ли я вычислил адрес на стеке.
From:[info]http://boyko.km.ua/alexey/
Date:June 27th, 2011 - 04:58 pm
(Link)
То есть в некоторые моменты я использовал дампы. При прохождении определённого участка программы в ком-порт плевался определённый байтик. Потом в терминале смотрел последовательность исполнения веток программы.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 05:00 pm
(Link)
Да это и без осцыллографа видно -- если неправильно, то оно повиснет и дёрнут watchdog, с ребутом.
From:[info]http://boyko.km.ua/alexey/
Date:June 27th, 2011 - 05:16 pm
(Link)
А вот и не угадал. Оно может улететь в другой кусок кода и там работать.
From:[info]phantom
Date:June 27th, 2011 - 10:04 pm
(Link)
Я не согласен, но спорить не буду. Потому что пофиг. Это на rsdn наверно, никогда не затихают такие дискуссии.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 11:41 pm
(Link)
ну не всё ж мне о сиськах писать.
From:[info]phantom
Date:June 27th, 2011 - 11:46 pm
(Link)
Хотя я просмотрел что это совет начинающему. Начинающему программисту надо в уме дебажить. С этим согласен.
From:[info]fortness90.livejournal.com
Date:June 28th, 2011 - 01:56 pm

Наивный мечтатель

(Link)
Отладчик не нужен до первого бага компиллятора. ;)
[User Picture]
From:[info]ketmar
Date:June 28th, 2011 - 03:52 pm

Re: Наивный мечтатель

(Link)
и даже после первого бага. и после далеко не первого бага. как будто я не наступал на баги в компиляторах — от простых падений до кривого кода.
From:[info]singleplaye-r.livejournal.com
Date:June 28th, 2011 - 08:08 pm

(в сторону)

(Link)
то-то я всегда удивлялась чё у меня компиллер падал постоянно во времена пользования пошагового отладчика (ржот)