10

저는 몇 년 동안 코딩을 해왔습니다. 너무 복잡하지 않았습니다. C++은 제가 가장 잘 아는 것입니다. 나는 최근 Paul Graham의 사이트, 공포에 빠져 들었다. 그리고 지금 여기에있다.함수 프로그래밍의 "방법으로 나 자신을 계몽하는"것을 배우려면 어떻게해야합니까?

함수 프로그래밍의 "방법으로 나 자신을 계몽하는"것을 배우려면 어떻게해야합니까? Haskell, Scheme 또는 CLisp?

+0

당신도 스칼라를 가지고 있습니다. 이것은 약간의 모멘텀을 가지고 있습니다 : http://www.scala-lang.org/. 또한 C++ 배경에서 오는 D에서 흥미로운 FP 구문을 찾을 수 있습니다. D에서는 의미가있을 때마다 (순수한) FP를 사용합니다. –

+0

우리는 VM에 있지만 F #은 Scala의 .NET 대응 요소입니다. – Kos

답변

5

3 가지 중에서 가장 중요한 것은 Scheme이 가장 간단하다는 것입니다. SICP은 Scheme을 사용하며, 그 자체로 기능적 방법을 프로그래밍하는 법을 배우기에 좋은 자료입니다.

그러나 Common Lisp에는 강력한 오류 처리 (예외보다 강력 함), multimethodsaspect oriented programming에 대한 지원과 같이 매우 표현하기 쉬운 많은 고급 기능이 있습니다.

하나부터 시작할 수도 있지만, 결국에는 많은 언어를 공부해야합니다.

+5

Common Lisp에는 많은 멋진 기능이 있지만 대부분 기능 프로그래밍과 관련이 없습니다. – Chuck

+0

@Chuck : 매우 사실입니다. 그게 내가 Scheme을 통해 Common Lisp을 시작할 것을 권장하는 이유 중 하나이다. 나는 다만 도울 수없는 그런 팬 일 뿐이다. Vivant NCITS/J13. – outis

+0

Scheme은 기능적 언어가 어떻게 뒤에서 작동하는지 이해하고자 할 때 유용합니다. –

5

3 명이 모두 좋다. 당신이 하스켈에 결정하는 경우

,이 큰 ressource는 다음과 같습니다 learnyouahaskell과 다른 답변 말하는 것처럼도 real world haskell

4

, 세 가지가 좋다.

그러나 Lisp을 결정하면 Clojure이 가장 최근의 윤회라고 생각합니다.

+2

Clojure는 OO Lisp를 원한다면 꽤 좋지만 함수 프로그래밍을 배우고 싶다면 좋지 않은 선택이다. 그것은 꼬리 호출 제거를하지 않습니다! – Porculus

+2

@ Porculus : Clojure는 Java와의 통합 문제로 인해 꼬리 호출 제거를하지 않지만'recur' 연산자로 재귀 솔루션을 허용합니다. 내가 아는 바로는, Common Lisp보다 여전히 강력하게 기능하는 것처럼 보입니다. – Chuck

+1

Clojure는 제가 알고있는 다른 Lisp보다 기능적입니다. 스타일이 하스켈에 훨씬 가깝습니다. 게으른 시퀀스, 불변의 데이터 구조, 엄격하게 통제 된 변경 가능성, OOP 낙담 등 ..... TCO에 관해서는'recur'가있는 경우 99 %를 처리하고 나머지 1 %는 대체 좋은 솔루션을 제공합니다. 나는 Clojure를 사용하여 3 년 동안 TCO에 대한 문제가 없었습니다 ..... – mikera

18

함수형 프로그래밍에 관심이 있다면 하스켈 만이이 목록에있는 순전히 기능적인 언어입니다. Common Lisp는 약한 기능의 혼합 패러다임 언어이며 Scheme은 기능은 강력하지만 여전히 순수하지는 않습니다. Lisps는 다른 이유로 흥미 롭지 만 하스켈은 함수형 프로그래밍의 최첨단 기술입니다.

덧붙여 말하자면 내가 하스켈 (Haskell)과 같이 더욱 강력하게 기능하는 언어를 권장하는 이유는 "기능적 프로그래밍 학습"의 많은 부분이 프로그램을 다른 방식으로 생각하는 법을 배우기 때문입니다. 귀하의 언어가 비상식적으로 쓰는 것이 자연스럽게 느껴지더라도 그렇게 생각하기가 쉽지 않으며 다른 방법이 있다는 것을 결코 깨닫지 못합니다.

+0

더 순수한 언어가 함수 프로그래밍을 학습하는 데 더 적합하다는 것은 당연하다고 생각하지 않습니다. 또한 너무 큰 기능적 사고 방식으로 들어가는 장벽이 될 수도 있습니다. 개인적으로 루비, 루아, 파이썬으로 기능하는 프로그래밍을하고 있습니다. OCaml은 내가 개념을 이해하기에는 너무 외계적이어서 함수 프로그래밍을하지 못하게했다. Scheme은보다 실용적인 접근 방식이 될 것이라고 생각합니다. –

4

'기능 프로그래밍의 방법을 배우세요?

순수 함수형 프로그래밍 (부작용), 강력한 정적 타이핑을 강조 기능 스타일의 하스켈의 강력한 모범, 멀티 코어 병렬 처리에 중점을 둔 실용적인 구현과도 약 2000 (거대한 커뮤니티를하면서 라이브러리 http://hackage.haskell.org 및 많은 온라인 리소스에서 사용 가능).

사람들이 프로그래밍에 대해 어떻게 생각하는지 재교육하는 것이 다소 유명합니다.

그러나 이것은 옹호이며 유용한 stackoverflow 질문 및 대답 세션이 아닙니다. 당신이 배우고 자하는 것을 스스로 결정해야합니다.

3

F #, ML 또는 OCaml에 대해 들어 보셨습니까? 이 세 가지 언어는 ML 제품군에 속합니다.

F#은 Microsoft에서 지원하는 새로운 ML 언어이며 Visual Studio 2010과 함께 제공됩니다.F # (또는 기타 ML 언어)에 대한 좋은 점은 명령 코드를 작성하고 점진적으로 좋은 기능 스타일을 배울 수 있다는 것입니다.

다음은 Project Euler #2에 대한 예입니다. 내가 처음했을 때, 나는 명령적인 스타일을 사용했다. 나중에, 나는 강력한 함수 프로그래밍 개념 인 lazy sequence를 사용하는 법을 안다.

관련 문제