Почему робототехника делает вас лучшим инженером-программистом
Много лет преподавания робототехники в HKDI изменили мой взгляд на софт. Вот чему планирование движения научило меня в системном дизайне.
Дисциплина ограничений
Робототехника заставляет думать через ограничения. У сервопривода есть пределы. У датчика есть шум. У real-time цикла есть дедлайн. Это не оправдания, а само пространство проектирования.
В софте мы часто можем позволить себе небрежность. Добавить памяти, поднять ещё сервер или просто перехватить исключение. Робототехника так не прощает.
Чему меня научило преподавание в HKDI
Когда я преподавал в Hong Kong Design Institute, я замечал, что студенты, которым тяжело давались абстрактные программные концепции, внезапно начинали понимать их, как только мы связывали задачу с физической системой. Когда робот-манипулятор ломается из-за ошибки в state machine, state machine сразу становится чем-то реальным.
Как я применяю это в коде
Теперь, проектируя софт, я думаю о трёх вещах:
- Сроки: что произойдёт, если эта часть будет медленной?
- Состояние: как система выглядит в любой момент?
- Режимы отказа: если что-то сломается, то как именно?
Эти вопросы естественно приходят из робототехники. И они делают софт лучше.