И глаза округлятся, и волосы встанут дыбом
Я получил письмо от незнакомого мне человека — менеджера компетенции «Электроника» по стандартам WorlSkills Russia, которое меня обрадовало: «Я являюсь поклонником автоматного стиля программирования для микроконтроллеров. Часто сталкивался с Вашими статьями по программированию. С удовольствием прочитал Вашу книгу „Автоматное программирование“. Я рад, что благодаря Интернету, есть возможность обратиться к Вам лично! Микроконтроллерами увлекаюсь лет 20, и больше 10 лет занимаюсь обучением программированию студентов среднего профессионального образования. Пришло время обобщить накопленный опыт. Сейчас работаю над методическими пособиями по программированию на языке Си для микроконтроллеров STM32. Основная идея курса — подвести обучаемых к решению задач в стиле конечных автоматов».
Но моя радость была недолгой — пока я не посмотрел присланную мне презентацию программирования светофора. Вот мой ответ: «Спасибо за письмо! Все хорошо, но у нас с Вами различное представление об автоматном программировании. По моему мнению, это должно происходить так: cтроится граф переходов автомата (система графов переходов, если поведение системы целесообразно задать так), по нему пишется изоморфный код, а потом дописываются драйверы для входов и выходов (пример по ссылке). У Вас в презентациях автоматами и не пахнет. Возможно, что это и не так, но их запаха я не почувствовал. А вот применение автоматного программирования при использовании ПЛИС. Все это сильно отличается от того, что делаете Вы!».
Потом я продолжил: «По временной диаграмме надо строить граф переходов, а лучше его строить сразу, тогда будет автоматное программирование в моем понимании, а так… Но самое удивительное состоит в том, что Ваше удовольствие от чтения моей книги, и то, что Вы делаете, даже не соприкоснулось! Может быть, эти работы и подводят к идее автоматного программирования, но какого-то сильно отличного от моего! Обучение заявленной компетенции у Вас происходит отлично, только к моему пониманию автоматного программирования это никак не относится. С наилучшими пожеланиями, Шалыто».
Ответ мне, который многое прояснил: «Спасибо за высказанную точку зрения! К сожалению, с Вашей книгой я столкнулся сравнительно недавно, и долгое время я не решался написать Вам. Но именно Ваша книга навела меня на мысль о том, что я что-то делаю не так. Сейчас я в этом убедился».
Я: «Думаю, что Вы все делаете так: классно учите «Электронике», но не автоматному программированию в моем понимании. На сайте уйма примеров. Особенно в разделе «Курсовые проекты».
Мне: «Ваш сайт есть у меня в закладках. Спасибо за этот ресурс. Я смотрел некоторые курсовые, и у меня округлялись глаза, но до прозрения ещё далеко».
Я: «Очень близко: «Возьмите присланный по ссылке курсовик, разберитесь с графом переходов автомата (то, что у него срезана одна вершина — это не страшно, так как там приводится изоморфный код, по которому эта вершина однозначно восстанавливается) и реализуйте его, не как у нас — чисто программно, а на Вашем контроллере, и все станем на свои места. После этого у Вас от удивления не только глаза округлятся, но и волосы встанут дыбом!»