Здравствуйте Eugene, Вы писали:
E>Более того, я знаю людей, кому этот опыт просто мешал начать мыслить другими категориями.
Скорее всего эти люди или начинали с асм-а, или слишком много на нем проработали.
E>Может я слишком буквально понимаю слово "изучать"? Одно дело — бегло ознакомиться с архитектурой процессора и системой команд, другое дело "изучать".
Здесь скорее речь идет об ознакомлении.
ХД>>На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды.
E>Думаю, Керниган и Риччи обиделись бы, не говоря уже о Страуструпе
— пыхтели, пыхтели и ...
Не... В его словах очень большая доля правды. Ричи создавал С именно как замену ассемблеру для написания системного кода (тодгда ОС). И он воспринимал с как оптимальный кодогенератор (уж он то точно какой код знал превратится в какие инструкции). Так что такая метафора имеет право на жизнь.
E>...если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны.
А кто тебе сказал, что все ошибки делает сам программист? Иногда встречаются наложения абстоятельств, иногда чужие проходы по памяти, а иногда глюки коппилятора или ОС. Вот тогда знание асм-а (пусть даже и поверхностное) очень пригодится. Но перегибать и лезть в дизасемблер при первом подозрении конечно не стоит.
E>Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN
повнимательнее почитать.
Главное научится понимать когда нужно лезть в MSDN/RSDN, а когда в дизасемблер.
E>Хотя... всякое бывает, конечно
Во-во!