Трудно согласиться с этой одой ассемблеру

. Я в свое время много писал на ассемблерах — были и такие времена

. Конечно, иногда этот опыт незаменим. Но я бы не стал советовать всем, пишущим на С++ "изучать ассемблер" (разумеется, кроме тех, кто имеет дело с железом, драйверами и т.д.). Более того, я знаю людей, кому этот опыт просто мешал начать мыслить другими категориями. Может я слишком буквально понимаю слово "изучать"? Одно дело — бегло ознакомиться с архитектурой процессора и системой команд, другое дело "изучать".
А теперь конкретные возражения.
ХД>Моё мнение таково: знание ассемблера позволит тебе больше узнать о машине, позволит понять, какие процессы ею управляют, что такое на самом деле твоя программа и что на самом деле она делает. Мне кажется, что именно это знание, понимание происходящего внутри компьютера и есть умение программировать.
Очень спорное определение умения программировать.
ХД>На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды.
Думаю, Керниган и Риччи обиделись бы, не говоря уже о Страуструпе

— пыхтели, пыхтели и ...
ХД>В этом случае уже можно сказать о том, что классный специалист по С обязан разбираться в том, как работает его машина. А для этого он изучает специальный язык -- язык ассемблера -- который и помогает в достижении этой цели, потому что не содержит ничего лишнего.
Хорошее знание ассемблера — это как раз
очень много лишнего, к примеру, с точки зрения ООП. Ассемблер, к примеру, сильно привязан к конкретной платформе и ее нюансам, а это очень специфические знания.
ХД>А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...
Ассемблер тут не очень-то поможет.
ХД>..."учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера.
Очень произвольное обращение с терминологией
ХД>А насчёт того, что переедут на другую систему... Знаешь, наверное они всё-таки хороши именно для той системы, на которой сейчас используются. а для совершенно новой системы будет совершенно новый язык, который, тем не менее будет учитывать и сегодняшний программистский опыт.
Так они уже сейчас используются на куче платформ, так что теперь все ассемблеры человеку учить?
Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное. Иногда это полезно при тонкой отладке, но позволю себе тоже "сильное" утверждение: если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны. Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN

повнимательнее почитать. Хотя... всякое бывает, конечно