임베디드 소프트웨어를위한 기능적 프로그래밍


15

나는 어젯밤에 친구와 F # 및 Functional Programming에 대해 이야기하고 있었고 그는 나에게 흥미로운 질문을 제기했다. 기능적으로 임베디드 소프트웨어를 어떻게 사용 하시겠습니까? 이것은 이것이 상태 비 저장 코드 측면에서 상당히 자연스러운 것처럼 보이지만 임베디드은 메모리에 매우 소박하다는 것을 의미하며 기능 측면에서 그 이야기를 확신하지 못합니다.

기능이 포함 된 언어 또는 패키지에 대한 제안 사항이 있습니까?


이 링크는 ftp.cs.york.ac.uk/pub/malcolm/thesis.html에 도움이 될 수 있습니다 . 포스트 스크립트 파일을 다운로드하여 읽으십시오.
Ubermensch

@ Ubermensch 감사하지만 해당 링크에 액세스하려고 할 때 오류가 발생합니다.
Onorio Catenacci

3
이 SO 질문을 살펴보십시오 . 그것은 당신이 요구 한 것에 매우 밀접한 것으로 보입니다. 그리고이 페이지는 Haskell.Atom와 아두 이노 프로그래밍을 다루는
Bhargav 바트

@OnorioCatenacci이 링크는 실제 포스트 스크립트 파일입니다. ftp.cs.york.ac.uk/pub/malcolm/thesis.ps.Z
Ubermensch

답변:


2

Forth 는 임베디드 시스템 프로그래밍에 탁월한 선택입니다. 스택 언어이기 때문에 함수 구성 ( concatenative programming ) 측면에서 분석 할 수 있습니다 . 더 기능적인 측면을 가진 언어가 효율적으로 구현 될 수 없었지만 아직까지는 (내 지식으로는) 존재하지 않는 이유는 없습니다.


1
연결 프로그래밍은 기능 프로그래밍과는 매우 다른 패러다임이지만 Haskell 기능 언어 언어 의 일부 단순화 된 측면을 구현 하는 기능적 기능 ( funforth )이 있습니다.
Mark Booth

@MarkBooth : 그렇게 다르지 않습니다. 연결 프로그래밍 (정의에 의해 정의 됨)은 고차 콤비 네이터를 많이 사용하며 많은 기능 개념이 연결 코드로 직접 변환됩니다.
Jon Purdy

3

하나의 옵션은 Erlang 입니다. 로부터 위키 피 디아 페이지 :

Erlang 은 범용 동시 가비지 수집 프로그래밍 언어 및 런타임 시스템입니다. Erlang의 순차적 하위 집합은 엄격한 평가, 단일 할당 및 동적 입력 기능을 갖춘 기능적 언어입니다. 동시성을 위해 액터 모델을 따릅니다. Ericsson은 분산 된 내결함성 소프트 실시간 논스톱 애플리케이션을 지원하도록 설계되었습니다. 핫 스와핑을 지원하므로 시스템을 중지하지 않고 코드를 변경할 수 있습니다.

스레드는 대부분의 언어에서 복잡하고 오류가 발생하기 쉬운 주제로 간주되지만 Erlang은 동시 프로그래밍을 단순화하기 위해 프로세스를 작성하고 관리하기위한 언어 레벨 기능을 제공합니다. Erlang에서는 모든 동시성이 명시 적이지만 프로세스는 공유 변수 대신 메시지 전달을 사용하여 통신하므로 잠금이 필요하지 않습니다.

첫 번째 버전은 1986 년에 조 암스트롱에 의해 개발 된 원래 에릭슨 내에서 고유의 언어 이었지만, 1998 년에 오픈 소스로 출시되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.