Umfang 142 seiten
2017 Jahr
Стек, или Путешествие туда и обратно
Über das Buch
Книга посвящена простой и удивительно элегантной структуре данных – стеку. Описаны скобочные структуры, подпрограммы (в том числе рекурсивные), передача параметров, разбор и вычисление выражений, распознавание последовательностей символов. Также рассмотрено описание устройства и реализация простой, но достаточно мощной стековой машины; приведены многочисленные примеры программ, а также список задач, в том числе нетривиальных. На сайте издательства dmkpress.com содержатся дополнительные материалы, среди которых исходные коды простого транслятора стековой машины (на языке Java).
Издание предназначено прежде всего пытливым старшеклассникам, студентам вузов, а также тем, для кого программирование – хобби.
Genres und Tags
Книга предназначена внушить вам одну очень простую мысль: если вы – программист и вы не знаете что такое стек, то вы – дно!
Теперь собственно о самом содержании:
Автор рассказал о стеке, как о структуре данных на примере разбора скобочных структур и разбора арифметических выражений (Обратная польская нотация -RPN). Тут никаких нареканий, все четко и по делу.
При рассказе, зачем нужен программный стек в приложениях и тут Остапа понесло… Автор придумал свой (псевдо) ассемблер для «облегчения». Чтобы на примере маленьких подпрограмм (функций) объяснить зачем нужен стек. Как этим стеком пользоваться, как появляется и что представляет собой стековый фрейм. Классический пример – конечно рекурсивная функция расчета факториала. По мне автор все хорошо объяснил, но как то затянул что ли. Потом его этот асм, ну зачем? Почему нельзя было взять красивый и лаконичный ассемблер от ARM, а не некий аналог да еще аля x86. Можно было на этом ассемблере (ARM) приводить реальные асм коды реальных функций или даже Си функций! с полным объяснением. Это позволило бы упростить понимание примеров и в свою очередь приблизить читателя к реальному «железу». И если что-то не ясно, читатель всегда может обратиться к дополнительной литературе, так как это – «нормальный» реальный ассемблер.
В приложении есть, рассмотрение реализации стека на массиве и связном списке (правда на псевдо коде). Ну наверное автор прав и приводить полную реализацию излишне.
Приводить в пример язык Форт, ну тоже как то мимо. ИМХО, не хватает описания того, как в современных языках использовать стек из коробки: C++ STL, C#, Java . Чтобы джуниоры понимали, что все уже есть и не нужно велосипедить.
Общее впечатления от книги, хорошее. Автор пишет с юмором иногда даже с сарказмом, но он реально по делу! Если бы не псевдо асм, поставил бы твердую 5, а так все же 4.
Периодически захожу на сайт издательства ДМК-Пресс и интересуюсь новинками, пока их можно приобрести со скидкой. Не так давно моё внимание привлекла эта небольшая книжка на 140 страниц. Полистал содержание и отрывки из глав. Как оказалось, в книге рассматривается довольно широкий круг вопросов:
- проверка скобочной сбалансированности текста, - трансляция инфиксных арифметических выражений в постфиксную с учётом приоритетов операций и скобок, - вычисление постфиксных арифметических выражений, - устройство стековых виртуальных машин. В том числе рассматривается вопрос способа вызова подпрограмм, возврата из них, вопрос передачи аргументов подпрограммам, рекурсивные подпрограммы, - использование стековых конечных автоматов для трансляции исходных текстов программ на контекстно-независимых языках, - реализация виртуальной стековой машины, - трансляция программ с ассемблера в код виртуальной стековой машины, - даётся представление о языке программирования Forth.
Весь материал подаётся в популярной форме, рассчитанной на программистов-любителей, для которых программирование - это в первую очередь хобби. Книга может пригодиться и студентам.
Моё внимание прежде всего привлекли несколько вещей: трансляция инфиксных выражений в постфиксные, реализация стековой виртуальной машины и трансляция из ассемблера в код для этой стековой машины. Также полезен для понимания, как работают синтаксические анализаторы, раздел про стековые конечные автоматы. Про способ вызова подпрограмм и передачи аргументов через стек я знал и так, потому что у меня имеется опыт написания программ на ассемблере, поэтому только эти разделы показались мне не особо интересными. Книжку я читал долго - смаковал, т.к. она не большая, а темы интересные. Теперь интересно будет поделать упражнения и попробовать сделать свою реализацию виртуальной стековой машины и своего транслятора с ассемблера для неё.
Примеры с лифтом настораживают, датчик веса.
Может быть опасно для кого-то, если датчик сломается.
Возможно это какой-то не правильный пример, но не хочется полагать, что это связано с какой-то темной стороной.
Bewertungen, 3 Bewertungen3