기능적 프로그래밍에 대한 접근 가능한 책 [닫기]


17

함수형 프로그래밍을 액세스 가능한 방식으로 설명하는 책을 찾고 있습니다. 또한 나는 너무 둔하지 않고 난해한 언어를 사용하지 않는 것을 선호합니다.

이상적으로는 함수형 프로그래밍이 명령형 접근 방식보다 더 우아하거나 간단한 솔루션으로 이어지는 상황을 보여주는 예제를 사용합니다.

나는 적당한 양의 프로그래밍 경험이 있지만 기능적 프로그래밍에 대한 지식은 없다. 어떤 제안에 감사드립니다


3
"비밀 한 언어"를 사용하고 싶지 않다고 말했을 때 염두에 두었던 특정 언어가 있는지 궁금합니다.
MatrixFrog

@MatrixFrog : 나는 "비밀 한 언어"로 Scheme을 의미한다고 99 % 확신합니다. 그는 SICP가 첫 번째로 권장되는 책이라는 것을 알고 있었을 것입니다.
user16764

@ user16764 그러나 "접근 가능"? 그것은 컴퓨터 과학 커리큘럼의 구조와 해석 에서 저자가 제시 한 이론적 근거에 기초 하여 프로그램을 설계하는 방법 (또는 제 2 판 )입니다 .
Mark C

답변:



10

정적으로 입력 된 언어와 [브라켓]을 좋아하는 경우 :

Haskell은 순전히 프로그래밍 패러다임에 무겁지만, "아주 좋은 것을 위해 Haskell을 배우십시오!" 의 형태로 본 언어에 대한 최고의 소개 중 하나를 가지고 있습니다 . 웹 사이트가 무료이기 때문에 책 양식은 선택 사항이지만 이것은 내가 전혀 느끼지 못한 한 명의 저자입니다. 실제 세계 Haskell 은 좋지만 실제로 [Learn..Good]의 후속 조치로 사용하는 것이 좋습니다. RWH는 옵션으로 종이로 된 장점도 있습니다.

Haskell에서 더 널리 사용되는 F # 또는 OCaml 과 같은 다른 ML 변형으로 쉽게 전환 할 수 있습니다 . 블리딩 엣지 ATS의 경우 .

원하는 경우 (및 Dynamic_Typing 괄호) :

Scheme은 Common Lisp보다 작고 순수하지만 두 가지 주요 Lisp 방언 중 기능적으로 지향적이지만 산업에서는 덜 널리 사용됩니다. 나는 개인적 으로 컴퓨터 프로그램의 구조와 해석을 좋아 하지만 꽤 이론적으로 무거운 책입니다. 조금 삼키기가 어려우면 더 나은 프로그래머가 될 것입니다.

Common Lisp를 선호한다면 Practical Common Lisp 또는 Land of Lisp 가 좋은 투자처럼 보이지만, 첫 번째는 무료이며 두 번째는 상당히 저렴하고 더 중요합니다 (일부) 게임 중심입니다. Scheme보다 덜 강력하지만 덜 강력합니다.

원하는 경우 클로저 로 확장 할 수 있습니다 . JVM을위한 Lisp이므로 배포가 쉬우 며 "학업 적"혐의로부터 더 효과적으로 방어 할 수 있습니다. Clojure는 .NET에 배포하고 Javascript로도 넘어갈 수 있습니다. 네이티브 .NET의 경우 IronScheme을 사용해보십시오 .

Haskell 에서 48 시간 내에 Write Yourself a Scheme을 사용 하여 차이점을 한 번에 배울 수 있습니다 .


SICP와 함께 가면이 책에 많은 비디오 강의가 있습니다. 가장 유명한 것은 groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham은 훌륭한 작가이며 lisp가 꿀벌의 무릎 인 이유 paulgraham.com/onlisptext.html
simoraman

1
무료 온라인 버전의 Real World Haskell을 읽고 있으며 텍스트를 읽는 동안 주석을 읽는 기능이 매우 유용합니다. 따라서 종이 버전을 구하더라도 온라인 버전도 읽을 수 있습니다. 일부 부분은 주석과 혼동을 줄입니다.
MatrixFrog

4

내가 가장 좋아하는 소스는 Haskell에 대한 젠틀 소개 입니다. 나는 당신에게 Haskell 과 O'Reilly Real-World Haskell 과 Simon Thompson의 함수형 프로그래밍 기술 배우기의 일부를 읽었 지만, 솔직히 소개와 함께 더 잘하고 있습니다. Haskell의 K & R과 비슷합니다. 언어 작성자가 만든 얇은 문서입니다. 말도 안되고, 선심도 아니고, 당신의 박해로 당신을 압도하려고하지도 않습니다.


1
젠틀 소개 훨씬 위장 확고한 펀치처럼 매우 직접적이고 실제적인 것입니다. 악의없이 폭력을 행하며, 껴안거나 지배하려고하지 않는다는 점에서 온화합니다. 오히려 독자가 반격에 필요한 내면의 힘을 발견하게되기를 바랍니다.
CA McCann

1
흠, 선생님, 나는 그 이미지를 사용할지 확실하지 않지만 무엇이든. 폭력적이지 않고 내면의 힘도 문제가되지 않지만 나머지는 동의 할 것입니다. 여기서 "젠틀"은 약간 유머러스합니다. "최신 제안"처럼.
JohnL4

1
그렇습니다. 나는 그곳에서 약간의 자유를 얻었습니다. ;] 요즘 다른 입문용 자료 (하스켈뿐만 아니라 다른 언어)와 비교할 때 무딘 것을 극복하는 데는 약간의 정신적 용기가 필요합니다. K & R과의 비교는 당신이 그런 스타일에 익숙하다고 생각합니다. 나는 일반적으로 "부드럽다"는 하스켈 보고서와 연구 논문의 학습과는 대조적이라고 생각했다.
CA McCann

1

http://hop.perl.plover.com/ 에는 무료로 다운로드 할 수있는 책이 포함되어 있습니다. Perl에서 많은 기능 기술을 사용하는 방법을 설명합니다.

그것이 말하는 대부분은 JavaScript, Ruby 또는 Python으로 매우 쉽게 번역 될 수 있습니다.


1

현재 기능 프로그래밍을 배우고 있습니다. 그러나 나는 Haskell을 사용하여 배우고 있습니다.

다음은 온라인 서적입니다 (하드 커버 iirc에서 구입할 수 있습니다).

Haskell은 에스테르 계가 아니며 주류가되고 있습니다 (LISP 나 Erlang만큼 주류가 아님). 그러나 이것은 순수한 기능적 언어이며 기능적 프로그래밍 패러다임을 배워야합니다. 반 기능적 반 기능 접근 방식과는 달리 순수한 기능이 아닌 언어를 사용하게됩니다.

사람들은 haskell을 사용하여 WebServer, Bittorrent Client 및 몇 가지 실제 응용 프로그램을 개발했습니다. 그러나 개인적으로 개념을 배우고 지금까지 환상적으로 작동하는 C # & F #에 적용하고 있습니다.

즐겨.


1

"컴퓨터 프로그램의 구조와 해석"에 대해 여러 차례 좋은 소식을 들었습니다. 이 책은 실제 책이므로 Paper에서도 얻을 수 있습니다 . http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871을 참조 하십시오 .

http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) 에서 무료로 사용할 수 있으며 강의 비디오 ( http : //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )


SICP는 훌륭했지만 내 경험으로는 접근 할 수 없었습니다.
willem

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