The Kids Of Today (They Don't Understand The Blues)
Люблю я эту песню Тони Мартина.
А к чему это? А к тому, насколько может отличаться подход к программированию и отладке у разных поколений программистов. Я, конечно, не настолько стар, чтобы говорить о таких вещах, но так уж вышло, что я занимаюсь программированием уже около 15 лет, так что всё-таки позволю себе.
Ну так вот. Когда я учился программировать, в моём распоряжении не было даже толковой документации (да, когда первый раз с этим сталкиваешься, даже по бейсику нужна документация), не говоря уже о гугле. Это я не к тому, что я неимоверно крут, совсем напротив, к сожалению.
Это о разнице подходов к отладке. Кто-то сначала поэкспериментирует, найдёт, что именно идёт не так, поищет что-нибудь о нестандартном поведении или о неочевидных вещах в документации, спросит у гугла, и только потом будет спрашивать у других. А другие в первую очередь будут донимать окружающих: «Почему это не работает? А почему может не работать?» Как ни странно для меня, вторые тоже могут быть хорошими программистами.
И всё-таки жаль, что программированию нас в вузах с грехом пополам учат, а отладке – шиш.
Категория: мысля Слова:
работа,
отладка,
порграммирование,
гугл
@lj

![[rss]](images/rss.gif)
G3nius
Отладке тоже учат, но не все и не везде. Правда, на элементарном уровне - прогнать в пошаговом режиме, постоянно смотреть в watches, особо продвинутым рекомендуется еще и в call stack поглядывать.
И, конечно, такому экзотическому варианту, как отладка веб-сервисов, вообще нигде не учат.
20.03.2008 // 09:34 [ ссылка ]
Ответ от Автора
Да нет там никакой экзотики. В ответ на корректные запросы должны отдаваться строго определённые корректные данные. Методы достижения этого те же самые, что и при разработке любых других систем.
А производительность, отказоустойчивость, etc – это уже выходит за рамки только отладки.
20.03.2008 // 09:44 [ ссылка ]
G3nius
Когда все запускается и даже работает, но "как-то не так", вот тут отладка без неизящных методов вроде трейс-сообщений вообще невозможна. А потом выясняется, что сделал банальную опечатку в имени переменной или использовал ее вне ее области видимости. Эти ошибки самые простые и неприятные.
20.03.2008 // 09:58 [ ссылка ]
Ответ от Автора
«Работать, но как-то не так» может что угодно, не обязательно веб-сервис. Никакой особенно веб-специфики тут нет. Такие же проблемы возникают и у сионистов, и у пасквилянтов, и у тех, кто пишет на тех же PHP/Perl/Python десктопные приложения.
20.03.2008 // 10:04 [ ссылка ]
G3nius
Но особенности отладки у каждого языка свои. Например:
1. обязательное объявление переменной перед ее использованием решает проблемы с опечатками и областью видимости в C и pascal (я владею очень небольшим количеством языков программирования), т.к. иначе программа просто не скомпилируется
2. В тех же самых языках есть замечательная возможность поставить брекпоинт в произвольную точку программы или прогнать ее пошагово, чтобы неторопясь решить проблему. C PHP я работал только в Zend, его дебаггер очень неудобный.
3. Есть еще "прелести" отладки многопоточных приложений в C/C++/C#. Хорошо, что ни в Perl, ни в PHP с подобными трудностями я не сталкивался.
Все, что я говорил (в этом сообщении и выше), основано на личном опыте. Когда в экстренном порядке пришлось подменять заболевшего коллегу PHPиста, я столкнулся с огромными трудностями в отладке сервисов, с которыми не сталкивался при разработке приложений на C/C++ в рамках своей профессиональной деятельности. Это как другая планета. Все вроде бы похоже, законы мироздания общие, а состав атмосферы и климат не те. )))
20.03.2008 // 21:21 [ ссылка ]
Ответ от Автора
Именно. Языка. Об этом я и говорю. А веб-сервисы можно и на C писать (и вроде бы когда-то очень много на mail.ru было именно так сделано). 1. Это да. PHP слишком либерален и поощряет плохие привычки. Приходится следить за собой там, где другие языки делают это сами. 2. Это возможность IDE,а не языков. Дебаггер в Zend Studio вроде бы вполне приличный был, хотя не помню, я очень мало им пользовался. 3. Никогда не связывался с многопоточностью. В PHP c thread safety не очень, насколько я знаю. В любом случае, если нужно что-то такой сложности реализовать, я возьму другой инструмент.
21.03.2008 // 08:38 [ ссылка ]