Сергей Мелодин Об авторе О сайте

Автоматное программирование

13 Nov 2019

Рецензия

Обложка

Рецензия

  • Н. Поликарпова, А. Шалыто
  • Автоматное программирование

Мысли

Проектирование программных систем, и особенно систем со сложным поведением, «в уме» практически невозможно. Спецификации фиксируют результат процесса проектирования, освобождая ум разработчика для решения других задач. Спецификациями можно обмениваться с другими разработчиками, а также непосредственно использовать в качестве входных данных для следующего этапа разработки системы – реализации.

Мне кажется, это главная мысль, которую я подчёркиваю для себя уже не в первой книге. Не важно насколько хорош твой код, если он без документации и визуализации - это всего лишь код, в котором нужно разбираться.

В остальном, книга на цитаты разбирается не особо, потому что получается выделить что-то типа такого:

Машина Тьюринга (МТ) – самый «мощный» из рассматриваемых абстрактных вычислителей. Образно машину Тьюринга можно назвать «автоматом с ленточной памятью». Более формально МТ – это семерка W ,Y,δ , y0 ,b,F , где W – конечный алфавит ленточных символов, Y – конечное множество состояний, δ :W ×Y →W ×Y ×{←,→,↓} – функция переходов, которая по считанному с ленты символу и состоянию определяет новое состояние, новый символ, который необходимо записать на ленту, и направление сдвига головки (влево, вправо, либо остаться на месте), y0 ∈Y – начальное состояние, b∈W – специальный ленточный символ «пробел», F ⊂ Y – множество допускающих состояний.

Очень интересно, но не особо понятно, если вы не математик.

Тем не менее, в книге жесть сконцентрирована в одной главе и явно обозначена авторами, что тут можно пропустить. Но даже там, если хорошенько разобраться, всё написано достаточно доступным языком с наглядными иллюстрациями.

автоматы-и-ооп

Чего в книге нет, так это рекомендаций использовать готовые реализации какого-то софта, построенного на конечных автоматах. В мире JavaScript для этого есть аж две библиотеки: javascript-state-machine и xstate. С другой стороны, книга же о фундаментальных вещах. Может, и не стоило.

Зацепило

Авторы постарались разложить материал таким образом, чтобы явно прослеживались причинно-следственные связи и получился естественный процесс знакомства с темой. Хоть книга и является технической литературой, она не лишена некоторого юмора:

Современные социологи считают, что форма семейных отношений в человеческом обществе прошла эволюцию от неограниченной полигамии (когда каждый член общества мог иметь детей от любого числа людей противоположного пола) через полигинию или гаремную семью (когда мужчина мог вступить в брак с несколькими женщинами, однако каждая женщина имела не более одного мужа) к моногамии (в которой ячейкой общества является семья из двух человек противоположного пола). Моногамия на сегодняшний день считается наиболее развитой и здоровой формой семейных отношений и, более того, является единственной законной формой семьи в большинстве стран мира. Автоматное программирование в процессе своего развития повторяет ошибки человечества, но в другом порядке. Начав с гарема (один автомат, управляющий множеством объектов управления), мы пришли к полигамии (множество автоматов, совместно управляющих множеством объектов управления). В главе 3 станет ясно, как принципы объектной технологии приведут к современной формулировке парадигмы автоматного программирования и провозглашению в автоматном обществе ценностей здоровой моногамной семьи – автоматизированного объекта управления.

В книге делают неоднократный акцент на автогенерации кода из диаграмм состояний, чтобы не писать код вручную. Мне кажется что скоро эта идея станет настолько реальна, что программистов станет резко меньше. “Что нам стоит дом построить - нарисуем, будем жить”.

Также, описана задача про часы с будильником. Очень занятная с точки зрения сначала решить самому, а потом посмотреть как было предложено авторами. Я решал её ранее на Хекслете и после прочтений книги стал настолько увлечён данной темой, что внедрил библиотеку javascript-state-machine в проект и выступил на работе с митапом. Вон там и часы выглядывают: Митап

Резюмирование

Как минимум, это просто интересная книга для программиста с хотя бы небольшим стажем. Если более детально погружаться в тему, то есть возможность изучить вопрос всесторонне в рамках одной достаточно небольшой и лёгкой на восприятие книги. Стоит ли это делать - вопрос открытый, но знать про такой инструмент, как автоматное программирование, должен каждый хороший инженер. Пока ребята из Виллабаджо пишут индусский код и дебажат в проде, ребята из Вилларибо построили архитектуру с помощью автоматного программирования и попивают смузи с яхты.