А чтобы жизнь не казалась настолько унылой, вот вам история про самобеглые машинки и абстракции.
В идеализированном мире хочется, чтобы наша самобеглая машинка получала данные прямо из сенсоров и переводила их в сигналы на сервоприводы. Прямым, незамутнённым обучением с подкреплением, без моделей, и даже без Аллаха. Но почему-то не выходит каменный цветок. Во-первых, обучение с подкреплением требует огромного количества данных, во-вторых, все ситуации в тренировочном наборе всё равно присутствовать не будут, в-третьих, тестировать эту систему можно только целиком. А так-то отличная идея, натренировал модель на куче данных и в продакшен.
Но так как идеальной ситуации не получается, а ещё требования безопасности практически заставляют встраивать несколько независимых контуров принятия решений, то встаёт вопрос, как решить проблему автономного вождения, чтобы и тестировать внятно можно было, и модульность какая-никакая была, и богомерзкие юристы анафеме не предали. Впрочем, проблема юристов не решается никак, поэтому проще сконцентрироваться на первых двух задачах. Что для этого надо? Ну как, всё как у людей, декомпозиция проблемы, разрезание на несколько подзадач, построение конвейера принятия решений. В теории всё прекрасно.
А что на практике? А на практике получается, что если задачи общей навигации (как попасть из пункта А в пункт Б) и низкоуровневого контроля (как нажать педаль, чтобы ехать с заданной скоростью) решаются неплохо, то между ними целая пропасть среднеуровневого планирования поведения, планирования пути и планирования скорости. И даже если все эти задачи решить по отдельности, то ещё надо очень хорошо потрудиться, чтобы абстракции не начали течь. Иначе получается, что от планировщика скорости до собственно скорости транспортного средства предлагаемая скорость посредством сглаживания, упрощения и прочих чудес превратится в совершенно не ту команду на педаль, и это в лучшем случае. В худшем же предлагаемые варианты поведения будут конфликтовать между собой с совершенно неочевидными методами разрешения этих конфликтов.
Получается в итоге как в известной загадке про два стула - вот абстракции текущие, вот данные неполные. Впрочем, и то, и другое решается, по крайней мере, в ограниченных масштабах. А кто раньше доберётся до продакшена - увидим со временем.