카테고리 보관물: Software

Software

함수형 프로그래밍의 실제 구현? [닫은]

각기 다른 언어 유형을 익히고 각 언어가 능숙한 영역을 이해하려고합니다. 지금까지 나는 절차 언어, C ++ 및 java-정적 유형 객체 지향 언어 및 groovy-동적 유형 객체 지향 언어 인 C를 다루었습니다.

모든 프로그래밍 언어는 아마도 요구에 부응하기 시작했을 것입니다. 그리고 나는 모든 언어가 적어도 하나 이상의 것을 매우 능숙하다고 생각합니다. C와 마찬가지로 C ++은 브라우저 나 게임 개발과 같은 영역에서 표준이되었습니다. 쉬운 스크립팅 기능을위한 Linux 세계의 Python, 엔터프라이즈 세계의 Java 등

이제 Clojure 또는 Lisp와 같은 기능적 프로그래밍 언어를 배우고 싶습니다. 실제 시나리오에서 함수형 프로그래밍 언어는 어디에 사용됩니까? 응용 프로그램이나 UI를 개발하기 위해 Clojure 또는 Lisp를 사용한다고 생각하지 않습니다. 그래서 기본적인 프로그래밍과 학습 자료를 살펴보고 함수형 프로그래밍의 구현에 대해 간략히 이해 한 후에 어떤 종류의 프로젝트에 빠져 들어야합니까? 클로저와 같은 특정 언어를 강력히 추천하십니까?



답변

실제 기능 프로그래밍이라고 할 수 있습니다. Erlang이라고 생각합니다.

Erlang은 고 가용성에 대한 요구 사항으로 대규모 확장 가능한 소프트 실시간 시스템을 구축하는 데 사용되는 프로그래밍 언어입니다. 그 용도 중 일부는 통신, 은행, 전자 상거래, 컴퓨터 전화 통신 및 인스턴트 메시징에서 사용됩니다.

http://www.erlang.org/


답변

Stanford University의 Functional Programming에 대한 훌륭한 강의 시리즈가 있습니다. YouTube에서 확인할 수 있습니다.

LISP보다는 Scheme을 살펴 보라고 권합니다. 체계 는 추가 기능이 개선 된 Lisp의 수정 된 버전입니다. 체계는 주로 학업 및 훈련 목적에 사용됩니다. 이론적 인 컴퓨터 과학에 대한 연구를하고 싶다면 훌륭한 언어입니다.

신청 :

Android 용 Google App Inventor는 Scheme을 사용합니다. 여기서 Kawa는 Scheme 코드를 Android 기기에서 실행되는 Java Virtual Machine의 바이트 코드로 컴파일하는 데 사용됩니다. Elk Scheme은 Synopsys에서 기술 CAD (TCAD) 도구의 스크립팅 언어로 사용됩니다.

참고 : 제도의 사용법


답변

mailrank.com의 설립자 인 Bryan O’Sullivan (Facebook이 인수 함)은 Haskell에이 소프트웨어의 전체 서버 측을 구축했습니다. 그는 Strange Loop 2011에서 이것을 발표 했으며 비디오슬라이드 는 온라인으로 제공됩니다.

같은 사람이 Real World Haskell 이라는 책을 썼습니다 . 여러 사람들이 프로그래밍 튜토리얼을 언급했습니다. 이것은 귀하의 관심사에 매우 적합 할 수 있습니다 (Erlang 제안도 좋아합니다).


답변

저는 양적 거래 회사 인 Jane Street가 OCaml을 사용하여 거래 전략을 구현하고 있다는 사실을 금융 전문가들로부터 알고 있습니다. 그들은 주제에 관한 대화 링크와 함께 이유에 대해 이야기 하는 페이지 가 있습니다.


답변

다음은 일반적인 Lisp 성공 사례 목록입니다.

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

Common Lisp은 부분적으로 만 기능적이지만 (OOP 및 절차 적 지원뿐만 아니라 자신이나 라이브러리로 구현하려는 모든 것) 지원하지만 매우 실용적인 언어이며 유능한 프로그래머에게 매우 강력합니다. 실제로 우수한 RESTAS 프레임 워크로 웹 앱을 작성하는 데 사용합니다 .

그리고 내가 지금하고있는 상용 파이썬 프로젝트는 lisp로 작성된 서비스로 보완 될 것입니다 (RESTAS는 RESTful 서비스에 탁월합니다).


답변

컴파일러 (일반 언어 또는 DSL 용)로 다이빙하는 것이 좋습니다. 여기서 함수형 프로그래밍이 가장 좋습니다. ADT 및 스펙트럼 한쪽의 패턴 매칭에서 다른 쪽 Lisp 매크로에 이르기까지 많은 흥미롭고 유용한 것들이 있습니다.


답변

Hume을 살펴볼 수 있습니다 .

로부터 흄 프로그래밍 언어 페이지 :

Hume (Higher-order Unified Meta-Environment)은 동시 안전에 중요한 시스템을 개발, 입증 및 평가하기위한 통합 도구 세트를 갖춘 강력한 형식의 대부분의 기능을 갖춘 언어입니다. ume (Hume)은 새로운 수준의 추상화 및 확률을 도입하여 실시간 임베디드 및 안전에 중요한 시스템을 포함하여 자원이 제한된 시스템에 대한 언어 설계의 경계를 확장하는 것을 목표로합니다.

로부터 위키 피 디아 흄의 페이지 :

ume (Hume)은 스코틀랜드 의 세인트 앤드류 대학교 (St Andrews University)헤리엇 와트 대학 (Heriot-Watt University) 에서 개발 된 기능 기반 프로그래밍 언어로 18 세기 철학자 데이비드 ume (David Hume)의 이름을 따서 명명되었습니다. 실시간 임베디드 시스템을 대상으로 매우 추상적이지만 시간과 공간 실행 비용을 정확하게 추출하여 제한된 시간과 공간 제약 조건 하에서 실행될 프로그램을 작성할 수있는 디자인을 목표로합니다.

ume은 기능적 프로그래밍 아이디어를 유한 상태 오토마타 아이디어와 결합하는 데는 특이 하다 . Automata는 통신 프로그램을 일련의 “박스”로 구성하는 데 사용됩니다. 여기서 각 상자는 높은 수준의 패턴 일치를 사용하여 순전히 기능적인 방식으로 입력을 출력에 매핑 합니다. 또한 일련의 레벨로 구성되는 경우는 드물며, 각 레벨은 서로 다른 기계 속성을 노출하므로 매우 드문 경우입니다.