Книга: Low-Level Programming

414l6NJ8yyL._SX348_BO1,204,203,200_
Igor Zhirkov.
Low-Level Programming: C, Assembly, and Program Execution on Intel® 64 Architecture.
Apress, 2017.
Про low level сейчас мало свежих книг, потому мимо этой пройти сложно. Но лучше бы и пройти, отложив на будущее. Озлоблённость и недоумение вызваны неудовлетворённым ожиданием. Я хотел книгу про ассемблер, процессоры, архитектуры, красивости и всякое такое. А получил методичку какую-то отечественному студенту.
В книге 446 страниц. Если убрать «технические» страницы (обложка, содержание, индекс, благодарности, титульные страницы глав и т.п.), а их 36, получим 410. Но ещё есть приложения: про gdb (9), make (5), семь из 333 syscalls (6), сводочка про перфтесты (3). Ещё минус 23 страницы, в остатке 387. Буду злобным и summary-страницы в конце каждой главы посчитаю ненужными: 17. Итого получаем книгу в 360 страниц.
Но… тадам! Со 127-й страницы по 220-ю нам пересказывают основы языка C! А с 221-й по 231-ю галопом про БНФ, AST и парсинг с семантикой. Зачем-то. А с 241-й страницы по 261-ю галопом про good code practices. Снова зачем-то. Эдак 120 страниц добавляю в минус. Осталось 240. Из которых 115 посвящены «Assembly Language and Computer Architecture» и 125 теме «Between C and Assembly».
Вот сами подумайте, что можно уместить в 115 страниц по заданной теме? Правильно. Снова галопом. И автор прям сознательно указывает, что команды не описывает, мол, всё устаревает, топайте в интернеты, в мануалы от Intel, там научитесь. Ну офигеть мне удобно метаться туда-сюда, просто вот разе на десятом восторг от решения. Проверочные вопросы примерно из той же области: «What is the difference between sar and shr? Check Intel docs» — кхм, уважаемый Игорь, мне казалось, что задача учебника также и в том, чтобы рассказать мне об этой разнице, а не форвардить в мануалы Intel, которые я и без того почитаю. В общем, в сравнении с другими книгами эта тема разобрана просто никак. Очень конспективно, лишь бы зачёт сдать.
Единственное, за что хочется сказать «спасибо» — Between-тема. Она тоже конспективно, тоже галопом, но весь этот дайджест собран в одном месте и позволяет раскручивать интернеты более точечно и системно.
Итого… Ну, 125 страниц из 446. Я не знаю, кому и зачем нужна такая книга. Не знаю, кто ставил ей хорошие оценки на Амазоне. Есть гораздо более правильные книги по C. И гораздо более правильные о практике программирования. И про ассемблер, как уже знаю. Автор очевидно хорошо знает тему. Но нафига пытаться упихнуть в удава десять слонов? И о чём и для чего всё-таки книга? Практику всё равно после неё до фига молотить. Теоретику слишком мало написано. Интересующемуся (вот типа меня) слишком конспект и как-то… чуть дубово написано, пардон.
В общем, я грустно разочарован.

Книга: Low-Level Programming: 2 комментария

  1. Привет, Феликс. Ты в конце заметки упоминул, что существуют книги получше по C и ассемблеру. Можешь привести примеры, так как хотелось бы почитать по этой теме хороших книг ?

    • По асму сейчас с удовольствием без спешки читаю [Jeff Duntemann. Assembly Language Step-by-Step: Programming with Linux. Wiley, 2009]. Более доходчивой и понятной книги по теме ещё не встречал, да и написана просто хорошо, словно художественную читаешь.

      По C сложнее.
      Основной учебник для проработки — [Stephen Prata. C Primer Plus. Addison-Wesley, 2013]. Нудноватый, много воды, но мне зашло.
      Бодрый справочник с уймой примеров — [Peter Prinz, Tony Crawford. C in a Nutshell: The Definitive Reference. O’Reilly, 2015].
      По указателям особо читал [Richard M. Reese. Understanding and Using C Pointers: Core Techniques for Memory Management. O’Reilly, 2013]. Тема важная и лучше её детальнее осмыслить. Тоже норм, автор всё хорошо разложил по полочкам и прожевал.

Добавить комментарий