Re[2]: Есть ли смысл изучать Ассемблер ?
От: Eugene  
Дата: 12.06.02 20:11
Оценка: 14 (2) -1
Трудно согласиться с этой одой ассемблеру. Я в свое время много писал на ассемблерах — были и такие времена. Конечно, иногда этот опыт незаменим. Но я бы не стал советовать всем, пишущим на С++ "изучать ассемблер" (разумеется, кроме тех, кто имеет дело с железом, драйверами и т.д.). Более того, я знаю людей, кому этот опыт просто мешал начать мыслить другими категориями. Может я слишком буквально понимаю слово "изучать"? Одно дело — бегло ознакомиться с архитектурой процессора и системой команд, другое дело "изучать".

А теперь конкретные возражения.

ХД>Моё мнение таково: знание ассемблера позволит тебе больше узнать о машине, позволит понять, какие процессы ею управляют, что такое на самом деле твоя программа и что на самом деле она делает. Мне кажется, что именно это знание, понимание происходящего внутри компьютера и есть умение программировать.

Очень спорное определение умения программировать.

ХД>На самом деле, С -- это достаточно тонкая оболочка для языка асемблера, который, в свою очередь, скрывает за собой машинные коды.

Думаю, Керниган и Риччи обиделись бы, не говоря уже о Страуструпе — пыхтели, пыхтели и ...

ХД>В этом случае уже можно сказать о том, что классный специалист по С обязан разбираться в том, как работает его машина. А для этого он изучает специальный язык -- язык ассемблера -- который и помогает в достижении этой цели, потому что не содержит ничего лишнего.

Хорошее знание ассемблера — это как раз очень много лишнего, к примеру, с точки зрения ООП. Ассемблер, к примеру, сильно привязан к конкретной платформе и ее нюансам, а это очень специфические знания.

ХД>А ещё нужно разобраться как пользоваться такой драгоценной вещью (ресурсом, если угодно) как память... Узнать, для чего нужны прерывания (здесь мы уже спускаемся к аппаратному обеспечению), а потом попробовать разобраться, как же так получается, что в Windows много программ работают одновременно...

Ассемблер тут не очень-то поможет.

ХД>..."учи ассемблер" не означает, что тебе нужно именно выучить язык ассемблера (ассемблер -- это программа к тому же). Это означает, что советуют разобраться с принципами функционирования работы компьютера.

Очень произвольное обращение с терминологией

ХД>А насчёт того, что переедут на другую систему... Знаешь, наверное они всё-таки хороши именно для той системы, на которой сейчас используются. а для совершенно новой системы будет совершенно новый язык, который, тем не менее будет учитывать и сегодняшний программистский опыт.

Так они уже сейчас используются на куче платформ, так что теперь все ассемблеры человеку учить?


Вывод: IMHO если собираешься стать системным программистом, или просто иметь дело с железом — конечно да. Если профиль — прикладное программирование, то неплохо почитать что-нибудь обзорное. Иногда это полезно при тонкой отладке, но позволю себе тоже "сильное" утверждение: если при отладке прикладной программы, написанной на С/С++ приходится лезть в ассемблерный код, — это плохой признак. IMHO — одно из качеств того самого умения программировать, о котором говорилось выше, и есть умение быстро находить ошибки том уровне, где они сделаны. Можно и с осциллографом на шину полезть, чтобы в конце концов убедиться, что "ларчик просто открывался" — надо было MSDN (или RSDN повнимательнее почитать. Хотя... всякое бывает, конечно
Don't trouble trouble until trouble troubles you
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.