Почему C, C ++ и LISP так распространены во встроенных устройствах и роботах? - PullRequest
19 голосов
/ 21 октября 2009

Похоже, что наиболее востребованными языками программного обеспечения для встраиваемых устройств и роботов являются C, C ++ и LISP. Почему более поздние языки не проникли в эти приложения?

Например, Erlang может показаться особенно подходящим для роботизированных приложений, поскольку он облегчает параллельное программирование и позволяет выполнять горячую замену кода. Python может показаться полезным, если только по какой-либо другой причине, кроме поддержки нескольких парадигм программирования. Я даже удивлен, что Java не сделала набег в общее роботизированное программирование.

Я уверен, что одним из аргументов было бы: «Некоторые новые языки интерпретируются, а не компилируются», подразумевая, что скомпилированные языки быстрее и используют меньше вычислительных ресурсов. Это все еще тот случай, когда мы можем разместить виртуальную машину Java на сотовом телефоне или SunSpot? (и разве LISP не интерпретируется в любом случае?)

Ответы [ 16 ]

1 голос
/ 26 октября 2009

Я только что прочитал некоторые вводные материалы Erlang, и одним из первых, что они сказали, было то, что Erlang был пригоден для «мягкого» контроля в реальном времени. Это не то, что я хотел бы от любого робота рядом со мной.

Кроме того, я бы сказал, что роботы (как в промышленных) в настоящее время не нуждаются в горячей замене кода. Они работают по частям, и всегда будет запланированное время простоя для перезагрузки кода в соответствующий момент - что, конечно, хорошо проверено в автономном модуле.

1 голос
/ 21 октября 2009

Похоже, что языковые навыки программного обеспечения, наиболее востребованные для встроенных устройств и роботов, это C, C ++ и LISP. Почему более поздние языки не проникли в эти приложения?

Я предполагаю, что речь идет о требованиях к пространству, производительности и надежности.

Например, Erlang может показаться особенно подходящим для роботизированных приложений, поскольку он облегчает параллельное программирование и позволяет выполнять горячую замену кода. Python может показаться полезным, если только по какой-либо другой причине, кроме поддержки нескольких парадигм программирования. Я даже удивлен, что Java не сделала набег в общее роботизированное программирование.

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

Я уверен, что одним из аргументов было бы: «Некоторые новые языки интерпретируются, а не компилируются», подразумевая, что скомпилированные языки работают быстрее и используют меньше вычислительных ресурсов.

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

Это все еще тот случай, когда мы можем разместить виртуальную машину Java на сотовом телефоне или SunSpot?

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

(и разве LISP не интерпретируется в любом случае?)

Нет, компиляция профессиональных реализаций, AFAIKT.

0 голосов
/ 07 мая 2010

В этом году Java сделала еще одну веху, став опцией программирования для ПЕРВОГО соревнования по робототехнике . FRC - это впечатляющее соревнование, в котором участвуют более 77 000 школьников, наставников и волонтеров со всего мира, создающих роботов весом 120 фунтов за шесть недель. Я только что опубликовал некоторые результаты по этому поводу в своем блоге.

По странному совпадению (или нет) он использует ту же виртуальную машину Java, что и Sun SPOT, упомянутые в первоначальном вопросе.

0 голосов
/ 22 октября 2009
  • Встраиваемой системе требуется минимум минимальной ОС и простое (не всегда) приложение, поскольку большинство ОС являются буквой "C", это естественный выбор

  • Нехватка ресурсов обработки / Оптимизация использования ресурсов памяти с очень низкого уровня. C (преимущество над C ++) имеет большой диапазон оптимизации

0 голосов
/ 21 октября 2009

Поработав с робототехникой, я отвечаю за эффективность. Да, вы можете запустить виртуальную машину Java на мобильных телефонах. Но насколько это будет эффективно? Я был в команде, которая хотела запустить виртуальную машину Java на полной машине с Windows XP на роботе, запустив несколько приложений для мониторинга в реальном времени в Matlab. Излишне говорить, что мы бросали фреймы, как будто это не чье-то дело. Мораль этой истории - отвергайте людей, которые не понимают вычисления, даже если вам нужно переопределить ваших руководителей, если это приведет к потере вашей работы.

Да, вы можете запустить Python, и я видел, как это делается для управления несколькими процессами Си. Но, в конце концов, запуск C позволяет вам выполнять некоторые прямые манипуляции с соединениями намного проще и надежнее, чем некоторые из кодов более высокого уровня, и поэтому является предпочтительным.

0 голосов
/ 21 октября 2009

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

LISP в основном используется в исследовательских роботах, подобных тем, которые участвовали в соревнованиях DARPA. Эти типы роботов нуждаются в большем количестве «интеллекта», чем промышленные или коммерческие роботы.

...