?

Log in

No account? Create an account
светлое будущее
Mike Potanin potan
Previous Entry Share Flag Next Entry
ROS и языки программирования.
Дослушал курс до конца, и даже выполнил все задания.
Оказалось полезно: ROS - система с развитой инфраструктурой, богатой деталями и тонкостями, разбираться с которой по текстам не имея конкретной задачи я уже много раз ленился, а искать задачу не разобравшись не рисковал.
Основная фича ROS - возможность создавать и связывать в единую систему микросервисы, работающие по принципам "статически типизированная подписка на топик". Типы сообщений представляют из себя аналог C-шных структур, алгебраические типы (и даже union) не поддерживаются.
Мы проходили API для C++. На дворе 21 век, а это API реализованно на callback-ах. При этом авторы API уже забыли про старый добрый C и не реализовали передачу пользовательских данных дополнительным аргументом, а про C++11 еще не слышали, и лямбды не принимают. В курсе общение между callback-ами делалось через глобальные переменные, но API все таки позволяет так не делать - вместо лямбд поддерживается boost::function (у которого есть конструктор из лямбды, так что не все так плохо), а вместо явного дополнительного параметра можно передать ссылку произвольный объект и на его метод (ссылки на методы я всегда считал странной, не совсем консистентной фичей, использование которой видел только в qt, который крив сам по себе, но здесь это решение оказалось вполне рабочим).
Большую роль в ROS играет страшный cmake, которым мы пользовались на уровне заклинаний "поправить такую-то строчку в таком то файле". При сборке в сообщениях проскаивает геренация библиотек не только для плюсов и питона, но еще для nodejs, lisp и какого-то eus.
У меня сложилость впечатление, что прорыв в программировании роботов произойдет тогда, когда миры робототехники и функционального программировния пересекутся - уж больно хорошо все это ложиться на функциональную парадигму. Задачи похожи на разработку UI (только вместо пользователя реальный мир, можно сказать WI), только больше и сложнее, а в интерфейсах функциональщина сильно все упрощает.
В общем возникает сильное желание попробовать там Purescript, поверх nodejs, а потом прикрутить еще Rust/gluon и Julia.

вероятно, "несовременные" (но вполне рабочие) решения и "древние" языки используются для того, чтобы получить как можно более широкий круг возможных пользователей. Если использовать эзотерику или просто малоизвестные языки и методики, то это может много кого отпугнуть

Скорее, просто о языках ни кто не задумывался, и приделывали то, что знают.
Но если сделать образ к какой-нибудь Raspberry Pi, с готовыми библиотеками для реактивного программирования и возможностью разрабатывать через браузер в стиле elm, для обучения и привлечения новичков будет идеально.

В шину сообщений ROS уже куча языков встроена. Или задача саму шину поменять на другую реализацию? Или стандарт сообщений в шине?

К вам вопрос - можете сказать, по каким книжкам лучше всего изучать R? С более-менее 0-я при том, что некоторый кругозор в ЯП есть (C++, ML/Haskell, Python, LISP и ещё немного).

ВНЕЗАПНО, нашёл ваш же ответ на вопрос от 30-го сентября сего года. Так что вопрос снят. ;-)

и вообще, вот сделаешь ты такую супер-систему, а за тобой Сара Коннор придёт с пулемётом и криками "это всё из-за тебя!!!"

Edited at 2017-11-04 04:08 pm (UTC)

Что же вы свою последнюю статью по Elm'у с Хабра не опубликовали тут? Там-то комментировать мы не можем.

Можно здесь комментировать :-).
Но она не особо про Elm. Скорее "а всего этого в Elm нет".