Варианты программирования, отличные от C++

Можно ли запрограммировать Arduino на любом языке программирования, кроме C++? Если да, то какие языки программирования? Какое программное обеспечение мне понадобится для компиляции и загрузки моего кода на Arduino?

, 👍15

Обсуждение

Связанный: http://arduinoprosto.ru/q/105/programming-an-arduino-using-python-rather-than-cc, @The Guy with The Hat

К сожалению, это эффективная копия вопроса, отличного от Arduino.SE: [см. здесь](http://electronics.stackexchange.com/q/67160/17375). Я думаю, что вопрос, который я связал, должен быть перенесен сюда после окончания бета-тестирования. , но не сейчас., @apnorton

@anorton Этот вопрос касается альтернативных IDE. Этот вопрос не является дубликатом, потому что он говорит об альтернативных языках программирования., @tstew

@user2202326 user2202326 Извините ... Я, кажется, припоминаю, что в этой ветке больше людей отвечало на разных языках, чем на IDE, но, видимо, я ошибался. Продолжать., @apnorton

Вы можете заглянуть в Netduino, если вы знакомы с C# (подойдет Visual Studio, но есть и другие способы компиляции кода C#). Я не знаю, какая у вас плата и совместима ли она. http://netduino.com/, @Jason Down


5 ответов


Лучший ответ:

5

Некоторые широко известные:

  • Ада
  • Базовый
  • Форт, alt, alt
  • Java
  • Паскаль
  • Питон
  • C (mac) и C (Windows)

Теоретически вы должны иметь возможность расширить avr-gcc для поддержки других языков, хотя это непростая задача. Я также должен предостеречь, что поддержка языков, отличных от C, обычно имеет довольно серьезные ограничения на языковые компоненты — например, даже в C++ не рекомендуется создавать экземпляры новых объектов как malloc и free. чрезвычайно затратны как по объему памяти, так и по циклам.

Помимо использования Google, применимы следующие ссылки Нажмите здесь.

,

9

Теоретически можно использовать любой компилятор, выводящий сборку AVR (ограничения по модулю на размер кода, использование оперативной памяти и т. д.).

Бэкенды AVR существуют как для LLVM, так и для GCC -- так что теоретически, приложив некоторые усилия, большинство языков, поддерживаемых LLVM и внешними интерфейсами GCC, могут быть скомпилированы в AVR. Под большим вопросом будет библиотечная поддержка и т.д.

Тем не менее, вот несколько странных вариантов, соответствующих духу вопроса, а не его букве [1].

  • AMForth, четвертый диалект можно прошить на Arduino.
  • AVR-Ada: Ada для микроконтроллеров AVR.
  • BASIC: верните Goto!

О, и вы могли бы написать необработанную сборку AVR!

[1]- Я еще не пробовал!

,

1

Поскольку avr-g++ должен поддерживать все стандартные конструкции C/C++, можно использовать встроенный ассемблер. Дополнительная информация в этой ветке форума arduino.cc

,

Встроенная сборка не является частью стандартов C/C++, но gcc и компилятор C Microsoft поддерживают ее, хотя и несовместимо., @tbodt

true, как и файл avr_gcc., @Faux_Clef

В любом случае ничто не сравнится с написанием исполняемого кода в шестнадцатеричном формате., @Faux_Clef


2

Некоторые люди также работают над системами на основе Javascript node.js. Уже общедоступным является Espruino, а другим — Tessel. который будет запущен весной 2014 года.

,

2

Я удивлен, что никто не упомянул сборку AVR!

Ассемблирование часто не считается самым интересным или даже простым методом программирования, но, тем не менее, это на 100% возможно со всеми Arduino на основе AVR. Платы SAM, скорее всего, не будут работать с этой разновидностью, но в их программировании по-прежнему можно использовать ассемблер.

Все платы Arduino (на момент публикации) поддерживают программирование сборки через Atmel Studio, SDK для чипов на базе Atmel.

Assembly изначально поддерживается всеми устройствами Atmel и не требует загрузчика для работы, поэтому все программы работают в режиме реального времени.

,

Обратите внимание, что сборка также поддерживается цепочкой инструментов gcc, которая включена в установку Arduino IDE., @Edgar Bonet

@EdgarBonet Правильно, поэтому __asm__("Код сборки здесь") работает, чтобы добавить встроенную сборку в любой эскиз. Однако для большинства программ это плохая идея, так как с помощью этого метода трудно добиться независимости от платформы., @tuskiomi