Как меня учили, есть три пагубные практики, в которые склонен впадать любой, кто изучает асм:
1. Практика злоупотребления использования системных вызовов. Если программа начинает основываться на системных вызовах, то зачем использовать асм? Это не означает, что системные вызовы нельзя использовать. Но если системных вызовов становится много, то программирование процессора делается на тобой, а кем-то другим, тогда как программирование на асме предполагает, что программистом являешься ты.
2. Практика полагания, что есть некто, кто даст (или должен дать!) тебе средства.
Подобно ребёнку, полагающему, что снаружи его всегда существует и доступна по первому его крику молочная грудь или бутылочка, программист думает, что существуют средства, которые для него подготовил кто-то. Так, как само собой разумеющееся, воспринимаются сам асссемблер и дебагер. Но это глубокое заблуждение. Ассемблер и дебагер это тайные средства, которые умные люди создали для своих личных задач, но почему-то решили поделиться ими с другими. Надежда на то, что существует ассемблер или дебагер, есть умаление сути программирования на асме.
3. Практика движения от высокого уровня к низкому.
Программист думает, что если он программирует на языках высокого уровня или продумывает абстракции высокого уровня, то этот подход следует применять на ассемблере. Программирование на асме это сложение целого из атомов, это всегда движение от элементарного вверх. Поэтому асм изначально предполагает некорректные с точки зрения высокого уровня реализации и допущения. Мышление при асме это всегда стремление к либерации, к свободе, к эмансипации, которые достигаются в языках высокого уровня. (Здесь, однако, возникает парадокс дуализма целей свободы, о котором я когда-нибудь поведаю.) Отсюда возникают макроязыки, и конечной целью асма должен стать Си. Пусть программист применяет концепции высокоуровневого программирования для языков высокого уровня.
Избегание пагубных практик означает выбор правильного средства. Если ты можешь сделать это на Питоне, нужен Питон. Если это не делается на Питоне, нужно попробовать Си. И если это не делается на Си, нужен асм.