Функциональное программирование для встроенного программного обеспечения [закрыто]


15

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

Есть предложения по языкам или пакетам для встраивания с функционалом?


Эта ссылка может помочь вам ftp.cs.york.ac.uk/pub/malcolm/thesis.html . Загрузите файл postscript и прочитайте его.
Ubermensch

@ Ubermensch спасибо, но я получаю ошибку, когда пытаюсь получить доступ к этой ссылке.
Онорио Катеначчи

3
Пожалуйста, посмотрите на этот ТАК вопрос . Кажется, это очень близко к тому, что вы просили. И эта страница посвящена программированию Arduino с помощью Haskell.Atom
Бхат,

@OnorioCatenacci Эта ссылка представляет собой фактический файл postscript ftp.cs.york.ac.uk/pub/malcolm/thesis.ps.Z
Ubermensch

Ответы:


2

Forth - отличный выбор для программирования встраиваемых систем. Будучи языком стека, он может быть проанализирован с точки зрения композиции функций ( конкатенативное программирование ). Я не вижу причин, по которым такой язык с более функциональными аспектами также не мог бы быть реализован эффективно, но пока такой вещи (насколько мне известно) не существует.


1
Конкатенативное программирование - это парадигма, очень отличающаяся от функционального программирования, но есть функциональная четверть ( интересная ), которая реализует некоторые упрощенные аспекты языка функциональных языков Haskell .
Марк Бут

@MarkBooth: не так уж и отличается; в конкатенативном программировании (в значительной степени по определению) интенсивно используются комбинаторы более высокого порядка, и многие функциональные концепции напрямую преобразуются в конкатенационный код.
Джон Пурди

3

Одним из вариантов является Erlang . Со страницы википедии :

Erlang - это универсальный параллельный язык для сборки мусора и система времени исполнения. Последовательное подмножество Erlang - это функциональный язык со строгой оценкой, единичным присваиванием и динамической типизацией. Для параллелизма следует модель актера. Он был разработан компанией Эрикссон для поддержки распределенных, отказоустойчивых, программных приложений реального времени, без остановок. Он поддерживает горячую замену, так что код может быть изменен без остановки системы.

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

Первая версия была разработана Джо Армстронгом в 1986 году. 2 Изначально это был проприетарный язык в Ericsson, но он был выпущен как открытый исходный код в 1998 году.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.