Подтвердить что ты не робот

C или С++ для робота?

Привет,

Я пытаюсь решить между C и С++ для моего робота. Я ветеран 5+ лет Visual Basic.NET, однако я собираюсь с Linux (Ubuntu) на этом роботе, и есть проблема совместимости между Linux и .NET Framework. Я хочу придерживаться любого языка, который я выбираю для всех своих проектов, поэтому я хочу убедиться, что я выбрал наиболее подходящий для этой задачи. Для справки, я опишу своего текущего робота в процессе и что я собираюсь делать с ним. Я нахожусь в процессе создания полноразмерного R4 Astromech (да, я один из тех парней). Я включил материнскую плату ПК с процессором Intel Core 2 2,1 ГГц, 1 ГБ оперативной памяти. Я буду использовать карту с параллельным интерфейсом с царапинами для управления приводными двигателями, головным двигателем, а также дополнительной параллельной интерфейсной картой (переход ко второму параллельному порту), который все датчики (ИК, ультразвуковое колебание, визуальное распознавание через веб-камера и т.д.). Команды будут выдаваться с использованием распознавания речи (в настоящее время у вас есть программа для распознавания с нуля VB.NET, которую я буду адаптировать к новому языку). С учетом спецификаций и желаемых целей, перечисленных выше, было бы лучше с C или С++? Я высоко ценю любые предложения, которые у вас могут быть. Благодарю! Thaskalas

4b9b3361

Ответ 1

Что вы подразумеваете под проблемой совместимости? Вы посмотрели на Mono? Это реализация .NET-библиотек с открытым исходным кодом. Он ориентирован на С#, а не на VB.NET, но если вы более комфортно в среде .NET, используйте это. Скорость здесь не проблема, так как Core2Duo достаточно быстро для того, что вам нужно сделать.

Если Mono не будет работать для вас, я бы рекомендовал С++. Для С++ существует гораздо больше библиотек (или, по крайней мере, я знаком с другими, например Boost), которые могут использовать большинство C тоже. Нет никакого реального ограничения скорости при использовании С++. Хотя использование C не было бы плохим per se, С++ имеет некоторые преимущества и недостатки, поэтому, вероятно, лучший выбор.

Ответ 2

Я бы рекомендовал использовать ROS. Это позволит вам начать работу с сложным менеджером Inter-Process Communications, а также большой библиотекой сложного кода робототехники, включая множество реализаций SLAM и других критических алгоритмов робототехники. ROS также позволяет программировать на нескольких языках, включая C, С++ и Python, поэтому вы не застряли на одном или другом языке по дороге.

Ответ 3

Я бы также рекомендовал С++ и ROS. В нашей компании мы переходим на него, потому что там так много людей работают над этим, расширяя его и добавляя множество интересных функций.

С этим вы можете забыть о реализации большинства базовых низкоуровневых материалов и начать работать над тем, что вы намерены исследовать.

Очень легко настроить и начать разработку.

Ответ 4

Поскольку вы используете Linux на нем, я бы порекомендовал подход с разделением, где вы выполняете работу на более низком уровне (интерфейс устройства, где вам может понадобиться быстродействие) на C (или С++), а на более высоком уровне материал на современном языке, например С# (с использованием Mono) или Java, или даже Python.

Python особенно чрезвычайно выразителен, имеет большой набор библиотек и имеет довольно простой интерфейс C.

Написание высокоуровневых элементов управления на низкоуровневом языке, например C/С++, быстро стареет (IMHO). Роботы должны быть веселыми!

Ответ 5

Вы считали D? Это довольно новый язык, скомпилирован в собственный код и может напрямую связываться с C. (Вся стандартная C-библиотека даже доступна из D, а привязки к POSIX API включены в стандартную библиотеку.) В основном все, что вам нужно сделать использовать любую C-библиотеку из D, скомпилировать ее с помощью компилятора C и перевести прототипы функций, декларации констант и т.д. в файл заголовка.

D достаточно низкоуровнев, что в нем написано экспериментальное ядро, но имеет современные функции, такие как сбор мусора (хотя управление ручным управлением по-прежнему разрешено), встроенные строки и массивы, а также более продвинутые/более простые в использовании средства метапрограммирования шаблонов чем С++. Самым большим недостатком является отсутствие зрелой инструментальной цепочки и библиотек для корпоративных вещей, но для ваших целей это, вероятно, не имеет значения. Кстати, если вам нужно сделать кучу манипуляций с матрицами и прочее, там проект SciD, который обеспечивает приятные шаблонные обертки над LAPACK и BLAS.

Ответ 6

Используйте С++. У вас есть пространство. Вы можете использовать его как "лучший C" для начала.

Ответ 7

С++ - это большая сумка для инструментов; почему ты этого не хочешь!? Вам не нужно использовать все инструменты, но с C у вас не будет выбора. Самое главное, что у С++ у вас есть выбор для использования сторонних библиотек C и С++.