Buku yang dapat diakses tentang pemrograman fungsional [ditutup]


17

Saya mencari buku yang menjelaskan pemrograman fungsional dengan cara yang dapat diakses. Saya juga lebih suka yang tidak terlalu membosankan, dan tidak menggunakan bahasa esoterik.

Idealnya itu akan menggunakan contoh yang menunjukkan situasi di mana pemrograman fungsional mengarah ke solusi yang lebih elegan atau lebih sederhana daripada pendekatan imperatif.

Saya memiliki cukup banyak pengalaman pemrograman, tetapi tidak memiliki pengetahuan pemrograman fungsional. Terima kasih atas sarannya


3
Saya ingin tahu apakah ada bahasa tertentu yang ada dalam pikiran Anda ketika Anda mengatakan Anda tidak ingin menggunakan "bahasa esoterik".
MatrixFrog

@ MatrixFrog: Saya 99% yakin bahwa dengan "bahasa esoterik", maksudnya adalah Skema. Dia mungkin sadar bahwa SICP akan menjadi buku pertama yang direkomendasikan.
user16764

@ user16764 Tapi "dapat diakses"? Itu akan menjadi Cara Mendesain Program (atau edisi ke - 2 ) berdasarkan pada alasan yang diberikan oleh penulis (s) dalam Struktur dan Interpretasi dari Kurikulum Ilmu Komputer .
Mark C

Jawaban:


13

Saya akan sugest dimulai dengan " The Little Schemer " (dan mungkin " The Reasoned Schemer " setelah itu).

Jika Anda pikir Skema terlalu esoteris, atau jika Anda suka Javascript, Douglas Crockford telah menerjemahkan banyak latihan ke dalam Javascript: http://javascript.crockford.com/little.html

Jika Anda menikmati C #, " Pemrograman Fungsional Dunia Nyata " oleh Tomas Petricek akan menjadi tempat yang sangat baik untuk memulai. Ini juga berfungsi sebagai pengantar yang bagus untuk F #.


10

Jika Anda menyukai Bahasa dan [Kurung] Yang Diketik Secara Statis:

Haskell sementara agak berat pada kemurnian paradigma pemrograman, memiliki salah satu pengantar terbaik untuk bahasa yang belum saya lihat dalam bentuk "Pelajari Anda Haskell Untuk Bagus!". Formulir buku adalah opsional karena situs web ini gratis tetapi ini adalah satu penulis yang saya tidak merasa sama sekali underwhelmed oleh. Dunia Nyata Haskell baik tetapi benar-benar lebih baik diambil sebagai tindak lanjut dari [Learn..Good]. RWH juga gratis dengan kebaikan kertas opsional.

Dari Haskell Anda dapat beralih dengan mudah ke varian ML lainnya seperti F # atau OCaml yang keduanya lebih banyak digunakan. Untuk tepi pendarahan ATS .

Jika Anda suka (dan Dynamic_Typing Parentheses):

Skema lebih berorientasi secara fungsional dari dua dialek Lisp utama, lebih kecil dan lebih murni daripada Common Lisp tetapi kurang banyak digunakan dalam industri. Saya pribadi suka The Structure and Interpretation of Computer Programs, tetapi ini adalah teori yang cukup berat, bahwa walaupun agak sulit untuk ditelan akan membuat Anda menjadi programmer yang lebih baik.

Jika Anda lebih memilih Common Lisp, Common Lisp Praktis atau Land of Lisp tampak seperti investasi yang baik, yang pertama adalah online gratis dan yang kedua cukup murah dan yang lebih penting (untuk beberapa) game fokus. Ini lebih kuat meskipun kurang murni dari Skema.

Dari ini, Anda dapat memperluas ke Clojure jika Anda mau. Ini Lisp untuk JVM sehingga lebih mudah untuk digunakan dan lebih mampu bertahan dari tuduhan menjadi "akademis" yang dapat digunakan Clojure ke .NET dan beralih ke Javascript juga. Untuk .NET asli, coba IronScheme .

Anda juga dapat memisahkan perbedaan dan mempelajari keduanya sekaligus dengan Write Yourself a Scheme dalam 48 Jam di Haskell.


Jika Anda menggunakan SICP, ada juga banyak video ceramah tentang buku ini, yang paling terkenal adalah: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham adalah penulis yang baik dan memiliki buku gratis tentang mengapa lisp
simoraman

1
Saya membaca versi online gratis dari Real World Haskell, dan kemampuan untuk membaca komentar sambil membaca teks sangat membantu. Jadi, bahkan jika Anda mendapatkan versi kertas, Anda mungkin ingin membaca versi online juga. Beberapa bagian tidak terlalu membingungkan dengan komentar.
MatrixFrog

4

Sumber favorit saya adalah Pengantar Lembut untuk Haskell . Saya membaca bagian dari Learn you a Haskell dan O'Reilly Real-World Haskell dan Simon Thompson's Craft of Functional Programming , tapi jujur ​​saya melakukan lebih baik dengan intro yang lembut. Ini seperti K&R Haskell: dokumen tipis yang diproduksi oleh pencipta bahasa. Tidak bertele-tele, tidak menggurui, tetapi tidak mencoba membebani Anda dengan pengetahuan mereka, juga.


1
The Gentle Pendahuluan sangat langsung dan tanpa basa-basi, seperti pukulan kuat untuk perut. Lembut dalam arti bahwa ia melakukan kekerasan tanpa kejahatan, tidak mencari untuk memanjakan atau untuk mendominasi; melainkan, dengan harapan agar pembaca dapat menemukan kekuatan batin yang diperlukan untuk melawan.
CA McCann

1
Hmm, sensei, tidak yakin saya akan menggunakan citra itu, tapi apa pun. Ini bukan kekerasan atau kekuatan batin adalah masalah, tapi aku akan setuju dengan sisanya. "Lembut" sedikit lucu di sini. Seperti "proposal sederhana".
JohnL4

1
Ya, saya mengambil beberapa ... kebebasan kreatif kecil di sana. ;] Namun memang dibutuhkan sedikit ketabahan mental, untuk melewati sesuatu yang begitu tumpul dibandingkan dengan materi pengantar lainnya di sekitar hari-hari ini (untuk bahasa apa pun, bukan hanya Haskell). Namun, perbandingan dengan K&R membuat saya berpikir Anda sudah terbiasa dengan gaya seperti itu. Saya umumnya berasumsi bahwa "lembut" dimaksudkan berbeda dengan belajar dari Haskell Report dan setumpuk makalah penelitian.
CA McCann

1

http://hop.perl.plover.com/ termasuk buku yang dapat Anda unduh secara gratis. Ini menjelaskan cara menggunakan banyak teknik fungsional di Perl.

Sebagian besar dari apa yang dikatakannya dapat dengan mudah diterjemahkan ke dalam JavaScript, Ruby atau Python.


1

Saat ini saya sedang belajar pemrograman fungsional. Namun saya belajar menggunakan Haskell.

Berikut adalah beberapa buku online (Anda juga dapat membelinya di hardcover iirc)

Haskell tidak esteroik dan menjadi lebih utama (kemungkinan tidak mainstream seperti LISP atau Erlang). Namun itu adalah bahasa fungsional murni, dan akan memaksa Anda untuk mempelajari paradigma pemrograman fungsional. Sebagai lawan dari pendekatan setengah fungsional setengah imperatif Anda akan mendapatkan menggunakan bahasa yang tidak murni fungsional.

Orang-orang telah mengembangkan WebServers, Klien Bittorrent dan beberapa aplikasi dunia nyata menggunakan haskell. Namun saya pribadi menggunakannya untuk mempelajari konsep-konsep dan kemudian menerapkannya ke C # & F # yang bekerja sangat baik sejauh ini.

Nikmati.


1

Saya mendengar hal-hal baik tentang "Struktur dan Interpretasi Program Komputer" beberapa kali. Ini buku nyata, jadi Anda mungkin ingin mendapatkannya di Paper juga, lihat http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871 .

Ini tersedia secara bebas di sini http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) dan bahkan ada video ceramah ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )


SICP bagus, tetapi tidak dapat diakses dalam pengalaman saya.
willem

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.