LINUX.ORG.RU

[lisp][haskell][c] Подбор платформы для embedded системы

 , ,


1

2

Суть такова: Завершил первую фазу построения робота. Есть робот на базе stm32, freertos, моторика полностью написана на С, управление с планшета на расстоянии 150 метров, (Java+C).По сути пока что игрушка, сейчас подбираю платформу для написания более сложного софта под ML, легкого AI, все для автономной работы. Писать на С такие вещи очень тоскливо. Порылся в интернетах, нашел пару интересных вещей как ECL и транслятор Haskell в нативный С код. Просто многие модели удобно описывать с помощью фп языков, а для того, чтоб писать какие-то вещи на С, приходится долго медитировать и постигать дзен.

Подскажите кто сталкивался надо ли вообще возится с этим делом, стоит ли оно того в плане производительности?

Зы: с, lisp и haskell знаю хорошо, вопрос в том, в какой язык направить свой дзен, для просветления и чтоб все нормально работало на embedded.

Зы2: Робот летучая мышь, зачем не спрашивайте =)

только Си, только хардкор. К тому же у вас не так много памяти на кристалле, чтобы впустую тратить ее на лажи транслятора. Пишите сразу на Си.

ymn ★★★★★
()

Сделай свой DSL. Серьезно.

tailgunner ★★★★★
()

Смотря какой эмбеддед. А то в наши дни уже и 32-битный процессор с защищённой моделью и 128мб памяти эмбеддедом зовут.

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

mv ★★★★★
()
Ответ на: комментарий от buddhist

что-то мне подсказывает, что на распространенных архитектурах гцц сработает лучше, чем транслятор из хаскелла в си. хотя не проверял.

ymn ★★★★★
()

Посмотри на Copilot. У них, робот тоже был летающий ;)

Macil ★★★★★
()
Ответ на: комментарий от anonymous_sapiens

Летает

Оно летает, но не так как хотелось бы, да и батареи пока не хватает. Над стабильностью полета я еще веду исследования.

Sigrlami
() автор топика
Ответ на: комментарий от Dark_SavanT

Форт не знаю, выбор между C, Lisp или Haskell другой язык учить не хочу, много времени и так уходит на робота..

или это шутка юмора?

Sigrlami
() автор топика
Ответ на: комментарий от O02eg

Эт хорошо, но если я сейчас еще компилятор сяду писать, то разработка затянется на несколько лет, не связанная с роботом. Хотя примитивный компилятор я писал на 3-ем курсе, типа для своего языка..но это все универская ересь..

Sigrlami
() автор топика
Ответ на: комментарий от Sigrlami

Но вот нет доверия..)

Если нет доверия, то наверное тебе хаскель не очень подойдет. В силу специфики кодогенерации GHC, его невозможно использовать в качестве макрошаблонов машинного кода, как тот же лисп или даже C++.

Macil ★★★★★
()
Ответ на: комментарий от nCdy

Есть опыт или просто наводка? Я посмотрю, хотя повторюсь не хочется учить новый язык, т.к пока вникну в тонкости оптимизации своего же кода, может пройти прилично времени..

Sigrlami
() автор топика
Ответ на: комментарий от nCdy

Вот это интересно. Я думаю тогда прийдется все-таки писать какие-то тест кейсы на всех языках и тестить на железе, эх..

Sigrlami
() автор топика

Да, мне эта тема так же интересна. Поэтому если что получится пиши тут или мне )

nCdy
()

Посмотри на picolisp

Современный язык, встроенный пролог и база данных, гибкая система классов, простое подлючение С-кода и все это ~250K

anonymous
()
Ответ на: комментарий от Sigrlami

32 битный ARM cortexM4, вроде еще к эмбеду относится, или я что-то не так понимаю? не FPGA конечно...

ARMv7, ClozureCL пойдёт.

mv ★★★★★
()

Только хачкель! Или Go..

anonymous
()

http://concatenative.org/wiki/view/Concatenative language
Преимущество в том, что легко сделать свой DSL.
Ничто не мешает использовать несколько ЯП.
И да, го весьма приятный и простой язык, и на данный момент ещё и достаточно быстрый (хотя про ARM не в курсе).

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

ну, DSL я могу и на лиспе написать красиво, посмотрим что за зверь по ссылке..

конкатенационные языки или сцепляющие/склеивающие языки, как правильно?

чего только программистская душа не придумает. &)

Sigrlami
() автор топика
Ответ на: комментарий от Sigrlami

Конкатенативные языки. Ещё их называют стековыми, но языки, отличные от форта не обязательно это реализовывают именно в виде стека, factor, например, совсем не против сделать свои хитрые оптимизации.

quantum-troll ★★★★★
()
Ответ на: комментарий от Sigrlami

Не шутка юмора, в повод подумать. Форт даёт достаточно плотный код и большую гибкость нежели си. Для embedded форт вполне юзабелен, хоть и не особо популярен.

Но таки да, изучать это дело придётся.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от nCdy

erlang? для встраивания? разве что есть толковая VM для него, которая сможет работать на голом контроллере.

Dark_SavanT ★★★★★
()

Подведу итог, напишу синтетические тесты с несколькими рекурсивными фильтрами аля Калмана, алгоритмами из ML на С, LISP(ECL, CCL), Haskell(Copilot), OCaml. Все последовательно затестю на ARM-ке.

Если какой-то из ФЯП покажет скорость в пределах 85-95% от С (де-факто будет самый быстрый), то перейду на него, и займусь допиливанием компилятора/транслятора.

Нашел наработки из 90-х по real-time GC в embedded, но я им не доверяю =)

Всем спасибо за примеры, узнал для себя несколько интересных вещей. Если интересно отпишусь потом по результатам.

Sigrlami
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.