Як ви вже знаєте, згідно з останніми світовими тенденціями. мова асемблера знову входить в 10-ку найпопулярніших мов програмування. Як так вийшло, що в світі, де більшість початківців розробників важко уявляє механізми взаємодії коду і машини, це первісне створення знову на увазі? І головне: чи треба вчити мову асемблера? І як? Спробуємо розібратися.
Коротка довідка
Мова асемблера - машинно-орієнтований код низького рівня, перша згадка про яке датована 40-ми роками 20-го століття в контексті взаємодії з комп'ютером EDSAC. Незважаючи на те, що він не завжди використовує внутрішні інструкції самих машин (все-таки мова йде про універсалізації), це практично не викликає втрати у швидкодії, навпаки лише надаючи користувачу можливості для використання макрокоманд.
В цьому і є головна принада: володіючи досить обмеженим набором команд і дій, мова асемблера є універсальним засобом, якщо ви хочете створити максимально швидко виконуваний код, а також покроково відстежити процеси, що виконуються машиною.
Виходячи з цього виділимо очевидні переваги:
Швидкодію. Швидше тільки використовувати безпосередні інструкції процесора;
Безпека. Низькорівневими в даному випадку практично виключає наявність білих плям в коді;
Ефективність використання можливостей конкретної платформи. Орієнтованість на використовувану машину дозволяє мати серйозну перевагу в порівнянні з високорівневими мовами;
Розуміння виконуваного коду програмістом. На такому рівні програмування код і дію мають очевидно причинно-наслідковий зв'язок.
Однак, нерозумно заперечувати, що у настільки старого мови є явні недоліки:
Важко вивчити. Спеціалізація на платформу, кілька діалектів - все це не сприяє швидкому вивченню і розумінню;
Написання програм. Деякі примітивні операції, що описуються в мовах високого рівня одним рядком, тут можуть викликати справжній головний біль у програміста;
Більшість використовуваних машин просто не потребує такому примітивному мовою, як асемблер;
Високий поріг входу. Уявити виконуваний код в мові асемблера зможе майже будь-який програміст середньої руки. Зробити це ефективніше компілятора - лише мала частина;
Сильно обмежена кількість бібліотек, спільнот, допоміжних ресурсів за сучасними мірками.
Кому вивчати?
Очевидно, що мова асемблера був хороший і затребуваний за часів не надто потужних комп'ютерів, але чому новий виток зростання з'явився зараз? Все просто: на світ величезною хвилею насувається IoT. Використання численних комп'ютерів, підлеглих одній меті, виправдовує себе тільки при загальній максимально низьку собівартість однієї і високій швидкодії, що змушує розробників звернеться до старого-доброго мови асемблера.
Таким чином, якщо вашої спеціалізацією є розробка мобільних додатків, то дана тенденція вас не стосується. Однак якщо ваш інструмент C, а на робочому столі завжди лежить мікроконтролер, то мова асемблера - то, що доктор прописав. В іншому випадку, шлях у професії буде коротким.
Programming from the Ground Up. Джонатан Бартлетт-друга книга по черзі для прочитання має більш суха мова викладу, зате рясніє корисними порадами та технічними даними;
Introduction to 64 Bit Assembly Language, Programming for Linux and OS X. Рей Сейфарт - в цій книзі мова асемблера розглядається, як базис для всіх систем і пристроїв. Новачкові така книга може здатися важкою для розуміння, тому рекомендується мати за плечима хоч якісь пізнання в програмуванні;
PC Assembly Language. Пол Картер - навчальна мови асемблера книга з величезною кількістю прикладів і конкретним їх застосуванням з реального життя;
Асемблер і дизасемблювання. Пирогов Владислав - повинна бути серед всього цього навчального пишноти і книга російською мовою. Приклади коду, опис інструментів і відповіді на актуальні питання новачків - все додається;
Асемблер? Це просто! Вчимося програмувати. Калашников Олег - книга другого ступеня пізнання мови асемблера. Те краще накласти інформацію, описану в ній, на ваші хоча б мінімальні вже отримані знання;
Асемблер на прикладах, Марек Рудольф - а ось ця книга, хоч і не російського виробництва (проте в оригіналі ви її теж навряд чи прочитаєте), ідеально підійде в якості базису. Все доступно і зрозуміло.