Программирование Arduino на Паскале?
Мой вопрос прост: существует ли какой-нибудь язык программирования Pascal или класса Pascal (FPC, Delphi, mikroPascal) для Arduino?
Желательно (надеюсь, я не прошу слишком многого), чтобы язык был не старше 10 лет.
Обновление:
Давайте не будем начинать пламенную войну о том, «почему язык программирования xxx намного лучше Паскаля» и сосредоточимся на сути этого вопроса. Я знаю, что у Паскаля есть недостатки (нет ничего идеального, верно?). Я принимаю их и все еще хочу ими пользоваться :)
Большое спасибо.
@Gravity, 👍0
Обсуждение4 ответа
Лучший ответ:
Не Pascal, а Ada, которая гораздо менее ограничительна, чем Pascal, но при этом обладает теми же преимуществами по сравнению с низкоуровневым программированием и гораздо более активно поддерживается версиями языка, выпущенными совсем недавно, в 2012 году, и формально доказуемым языком SPARK, на случай, если вам понадобится. ваш код работает.
Любой процессор, который поддерживает gcc, потенциально может поддерживать Ada, чей компилятор Gnat полностью является частью gcc.
Это еще не вся история, потому что вам также нужна поддержка системы времени выполнения для средств Ada, но для процессора AVR Arduino существует хорошо зарекомендовавшая себя среда в виде Проект AVR-Ada.
Он генерирует красивые маленькие исполняемые файлы, вы будете удивлены, насколько меньше места занимают простые исполняемые файлы Gnat по сравнению с исполняемыми файлами Arduino - если только вы еще не провели такое же сравнение между Arduino и C... который, в конце концов, использует то же самое компилятор gcc.
Для Arduino на базе ARM (по крайней мере, Arduino Due) то же самое возможно, хотя поддержка более новая и, возможно, менее налаженная, см. проект Cortex-GNAT.
Покинув Arduino, Ада также была продемонстрирована на процессоре MSP430 — моем собственном проекте, к сожалению, забытом на данный момент.
Прочтите свой вопрос. Вы СПЕЦИАЛЬНО спросили о «... или языках, подобных Паскалю». Насколько удивительной может быть Ада? лучший способ узнать это — учиться. Вы можете использовать подмножество, подобное Pascal, и игнорировать расширенные функции, если хотите; некоторые из них в любом случае не подходят для MCU. Что касается версий языка, последний стандарт для Паскаля, похоже, ISO7185:1990, возможно, вы путаете версии компилятора со стандартами языка? Конечно, Gnat обновляется гораздо чаще, чем сам язык., @user_1818839
Уточнения: 1. Я говорю о производных от Паскаля (микроПаскаль, FPC, Delphi и т.д.). 2. Я говорю о «вещи», которую вы устанавливаете и используете на своем компьютере, а не об ISO. Когда я буду писать программу для Arduino, я буду использовать настоящее программное обеспечение (надеюсь, Pascal), а не ISO., @Gravity
Я согласен, что ты не «принимаешь» это, кстати. Один или два комментария указывали на возможные альтернативные варианты: если вы продолжите, и они окажутся полезными, вы всегда можете добавить свой собственный ответ. В качестве альтернативы раньше существовал какой-то интерфейс Pa для gcc. Итак, если вы серьезно относитесь к Pascal, почему бы не попробовать создать его для серверной части AVR, и в этом случае проект AVR-Ada (система времени выполнения) и моя документация MSP430-Ada могут дать полезные подсказки о некоторых шагах на этом пути. . (Работа над gcc нетривиальна!) Удачи..., @user_1818839
В любом случае, пока кто-нибудь не даст другой ответ (если вообще когда-либо), Ада действительно ближе всего к Паскалю. Я приму ваш ответ: лучшей альтернативы не существует. Спасибо, в любом случае. Проголосовал за., @Gravity
@Кенни, я слышу твою устаревшую критику в адрес Паскаля. Ада страдает от того же иррационального нежелания об этом думать, и это влияло на меня на протяжении многих лет. Я начал программировать на первом большом языке Вирта (Algol-W), также использовал Turbo Pascal (фантастический для своей эпохи), а затем его третий (Modula-2 — отличный, но со своими ограничениями). Затем на протяжении десяти лет или около того C и C++, благодаря их коммерческой неизбежности, несмотря на безумие их дизайна. В поисках более разумной альтернативы попробовал Аду (ранее недоступную). После C++ это больше походило на исцеление, чем на обучение. Не рекомендация, просто рассказ о путешествии., @user_1818839
@BrianDrummond- Хорошо, я попробую. Я хочу купить свою первую плату Arduino., @Gravity
Можно ли запрограммировать Arduino на языке Паскаль?
Ответ: да и нет. Ответ — да, потому что можно портировать виртуальную машину p-code на Arduino и скомпилировать ее.< /п>
Ответ будет отрицательным, если расширить вопрос следующим вопросом: «Существует ли поддерживаемая среда разработки Arduino/AVR с открытым исходным кодом для Pascal?»
Существует несколько коммерческих продуктов AVR/Pascal. Вы можете легко найти их в Интернете.
Наконец, возможным упрощенным решением является использование p2c, транслятора с Паскаля на C, в качестве препроцессора в Arduino IDE. В сборке Arduino есть хуки для добавления дополнительных инструментов.
Удачи!
Спасибо @MikaelPatel. Честно говоря, я не против заплатить (до) 100 баксов за коммерческий инструмент Pascal. За лицензию Delphi я плачу на порядок больше, так что 100 — это не так уж и много. P2C кажется достойной альтернативой. Я рассмотрю P2C вместо Ada (как рекомендует Брайан). Проголосуйте за (но на данный момент я оставлю сообщение Брайана как ответ). Еще раз большое спасибо., @Gravity
интерфейсный интерфейс Pascal для коллекции компиляторов Gnu (gcc, на которой почти все программирование AVR) уже существует. Поэтому компилятор Паскаля для AVR в принципе существует, если не факт (и я не знаю, что его нет). Я бы начал с того, что связался с людьми, работающими над GPC, чтобы узнать, что уже сделано.
На sourceforge также есть Pascal p5c --> https://sourceforge.net/projects/pascal-p5c/
Он использует gnu c в качестве промежуточного кода, поэтому должен работать на любой платформе, где доступен gcc.
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Операторы If и while не работают
- Проблема повторения
- В чем разница между delay() и delaymicroseconds()
- Как реализовать Arduino NANO в качестве адаптера RS-232 к USB (или нужен Arduino Mega?) Для связи с 3D принтером
- Выход 3,3 В при установке вывода на высокий уровень
- Может ли Arduino UNO постоянно хранить код?
- Использование библиотеки Arduino fix_fft или arduinoFFT для фильтрации определенного звука?
Поскольку обычная среда Arduino основана на C++, вам лучше всего искать «Pascal for AVR», который представляет собой используемый микроконтроллер, и похоже, что есть несколько вариантов., @PeterJ
Возможно у Микроэлектроники есть какой-нибудь компилятор на базе Паскаля., @Marko Buršič
Почему вы хотите? Можно утверждать, что C++ «похож на Паскаль». Раньше я активно программировал на Паскале и перешел на C/C++, когда стало очевидно, что самое серьезное программирование ведется на этих языках., @Nick Gammon
Однажды я выучу C, как вы рекомендуете. А пока мой вопрос касается Паскаля. В любом случае большое спасибо за вашу рекомендацию., @Gravity
Брайан В. Керниган, «Почему Паскаль — не мой любимый язык программирования», http://www.threedee.com/jcm/psystem/whypascal.html, @Mikael Patel
@MikaelPatel - ВАУ! Я не могу поверить, что люди до сих пор цитируют статьи, написанные на заре эры программирования. ВСЕ недостатки, показанные в статье, теперь исчезли. Я думаю, что в '81 году у C было гораздо больше проблем/недостатков. C получил стандартизацию ANSI только в 1988 году. Давай, Микаэль, обнови свои знания и процитируй достойную статью из 201x, чтобы избавиться от смущения. С 1981 года Паскаль развивался миллиардами способов (см. современные языки на основе Паскаля, такие как FPC+Lazarus и Delphi)! Не живите прошлым!, @Gravity
@Кенни Как насчет того, чтобы внести свой вклад? Цитата, немного кода, тестирование на использование того, что доступно в основной версии, и т. д. Я думаю, что вы пока не завели здесь друзей. Существует множество причин, по которым Паскаль оставил основное направление разработки и почему большинство разработчиков встроенных систем используют C/C++. Мы - те немногие, кто пытается помочь вам сменить фокус. Очевидно, вы можете продолжать искать Arduino Pascal, но будет сложно найти поддерживающие библиотеки, драйверы и т. д. Пожалуйста, посмотрите на картину в целом — живите в настоящем :) :) :), @Mikael Patel
@MikaelPatel-Вклады, связанные с программированием/электроникой, не имеют особого значения, если они указывают на какую-то древнюю статью, написанную еще в 81 году. Я не думаю, что публикация (как вы) первой случайной ссылки, найденной в Google, полезна для сообщества. Итак, вместо того, чтобы публиковать какой-то случайный мусор, я воздержусь до тех пор, пока не получу что-то актуальное для сообщества., @Gravity
@MikaelPatel-Спасибо за отрицательный голос за месть. Пожалуйста, помните, что вопрос не в том, «Почему мистер Патель ненавидит Паскаль», а в том, «Можно ли запрограммировать Arduino на Паскале?». Ответьте ЭТО, если хотите дать что-то ценное сообществу!, @Gravity
@Кенни Да, нам следует сосредоточиться на твоем первоначальном вопросе. Пожалуйста, посмотрите мой ответ. Дебаты по Паскалю сильно отклонились от темы. Кого волнует, почему кто-то захочет это сделать. Это не имеет значения. Вы должны получить ответ на вопрос об использовании Pascal на Arduino., @Mikael Patel