Когда я учился на ВМК МГУ, у нас во втором семестре был отдельный супер интересный курс по ассемблеру. Спустя годы я осознал, что он помог мне разобраться, как вообще выполняются программы, и мысленно прокручивать, что происходит в коде шаг за шагом. При этом я с трудом могу представить, как сейчас ответить прикладному разработчику на вопрос, зачем ему в этом разбираться. Именно чтобы проверить, насколько оправдан мой скепсис, я взял на себя эту тему в «Подлодке» и пошёл искать гостя.
В итоге мы записали выпуск с Константином Владимировым, преподавателем МФТИ и автором курса по C и ассемблеру. Забавно, что для работы с ним у Кости даже есть свой набор правил по аналогии с «Бойцовским клубом», и первое из них – «Никогда не программируйте на ассемблере».
Несмотря на это, Константин полтора часа нам рассказывал, зачем ассемблер всё-таки нужен. Пишет его за тебя обычно компилятор, но вот когда в дебаге всё работает, а в релизе падает, уже хочется посмотреть, что он там нагенерировал. Или когда какой-нибудь простой на вид цикл внезапно жрёт кучу времени. И тут становится любопытно, что компилятор вообще умеет ускорять сам, когда ему надо чуть-чуть помочь и как проверить, стало ли лучше, если оптимизацию тебе предложила нейросеть.
Я, честно говоря, вообще не ожидал, что выпуск про ассемблер получится таким бодрым. После разговора поймал себя на том, что мне уже самому хочется вспомнить, во что компилятор превращает привычные строчки кода. А вам в работе хоть иногда приходится читать ассемблер? Интересно, кто заглядывает туда регулярно и в каких задачах это реально выручает.