Mengapa Pemrograman Fungsional

38

Apa masalahnya dengan pemrograman fungsional? Saya melihat banyak berbicara tentang itu tetapi jujur ​​saja saya tidak pernah menemukan mereka sama sekali berguna. Mengapa begitu banyak universitas tampaknya mengajar mereka?


sumber
6
Sangat besar dalam pemrograman AI.
aqua
3
@ aqua - bukankah itu seharusnya menjadi jawaban mengapa tidak?
Martin Beckett
5
Saya juga ingin menunjukkan bahwa bahkan bahasa OO tradisional mulai memasukkan konsep dari pemrograman fungsional. Linq (dalam. NET), menjadi contohnya.
apoorv020
Saya pikir pemrograman fungsional lebih melatih otak Anda, dan dapat mengarah pada kode yang benar-benar bernanah. Jadi itu sangat keren.
Adel
2
@ apoorv020: Dan obat generik, tupel, dan pengumpulan sampah dan ... semua berasal dari bahasa fungsional.
Jon Harrop

Jawaban:

60

Mulailah dengan Mengapa Masalah Pemrograman Fungsional . Kemudian pindah ke Why Why Function Programming Matters Matters . Beberapa peluru:

  • Pemrograman fungsional memungkinkan Anda untuk memikirkan masalah secara berbeda
  • Abstraksi fungsional sangat kuat dan memungkinkan Anda untuk MENINGGALKAN kode Anda dengan cara yang tidak tersedia untuk paradigma lain
  • Di masa depan multi-core kami, bahasa fungsional mungkin lebih mudah untuk dipecah menjadi tugas-tugas simultan (meskipun bahasa tidak-fungsional juga bekerja keras untuk masalah ini).
  • Lebih mudah membuktikan bahwa program yang ditulis dalam bahasa fungsional murni (tanpa efek samping) secara matematis benar.
Corbin March
sumber
5
+1 - Ini semua adalah poin yang sangat bagus, dan semuanya dijelaskan dengan lebih ringkas dan lebih detail daripada yang saya coba lakukan.
jmort253
1
Dengan poin keempat Anda, apakah maksud Anda bahasa dapat dibuktikan benar, atau program ditulis dalam bahasa tersebut? Bagaimanapun, baik bahasa tidak murni dan program yang ditulis dalam bahasa tidak murni dapat dibuktikan benar, hanya saja jauh lebih sulit dan berantakan.
Jörg W Mittag
1
@ Jörg W Mittag, jauh lebih mudah untuk menjelaskan tentang sifat-sifat bahasa itu sendiri. Semantik denotasi adalah sepele untuk bahasa fungsional, dan cukup rumit untuk imperatif.
SK-logic
lucu bagaimana tautan kedua memberikan beberapa argumen "eksplisit", mengetahui bahwa saya bahkan tidak membaca tautan pertama.
jokoon
+1: Jawaban yang bagus. Saya terutama suka bagaimana Anda menempatkan poin peluru # 1 dan # 2 pada kata-kata.
Jim G.
9

Konsep Pemrograman Fungsional membangun fondasi yang akan mengubah cara Anda berpikir dan membantu Anda memecahkan masalah dunia nyata.

Konsepnya mirip dengan mengapa kita semua belajar Kalkulus Multi-Variabel, Aljabar, dan / atau Fisika Teknik sebagai jurusan Ilmu Komputer, meskipun kita mungkin tidak pernah membutuhkan pengetahuan khusus itu dalam karier kita.

Inilah sebabnya mengapa Sekolah Hukum mencintai kandidat dengan gelar BS dalam Matematika. Mempelajari Matematika mengajarkan Anda untuk memikirkan berbagai konsep secara logis, dan pemrograman fungsional mengajarkan Anda berbagai abstraksi dan banyak konsep penting lainnya yang membantu Anda memecahkan masalah dan melihatnya dengan cara yang berbeda.

Singkatnya, pemrograman fungsional membantu mengajarkan Anda cara belajar.

jmort253
sumber
Mungkin itu tidak benar-benar membutuhkan nama? Bukankah ini desain program yang 'benar'?
4

Ketika Anda mulai, pemrograman fungsional adalah model pemikiran terbaik. Karena sebagian besar program Anda tidak memerlukan orientasi objek. Setidaknya itulah pengalaman saya.

Namun, sekarang saya masuk ke beberapa aplikasi yang memerlukan pemisahan tampilan dan logika, saat itulah saya mulai memisahkan semua logika dan kode tampilan, untuk membuatnya lebih mudah bagi masing-masing melakukan yang terbaik.

Tetapi Anda tidak akan tahu mengapa melakukan itu, kecuali Anda menguasai Fungsional terlebih dahulu. Saya tidak pernah menyukai orang-orang yang mendesak saya, atau bahwa OO adalah solusi untuk semuanya. Pastikan saja pendekatan apa pun yang Anda gunakan, masuk akal untuk apa yang sedang Anda kerjakan, dan tidak terlalu curam untuk mengambil terlalu banyak waktu dari pekerjaan yang akan Anda lakukan.

crosenblum
sumber
1
+1 - Saya suka Anda menunjukkan menggunakan teknik terbaik untuk pekerjaan itu: Pastikan itu masuk akal.
jmort253
1
Sayangnya, akal sehat jarang di industri kami. Karena kita masing-masing memiliki pengalaman yang sama sekali berbeda, yang karena kesalahan yang kita lakukan berbeda, masing-masing dari kita mengembangkan kebiasaan yang berbeda, dan mengapa kita melakukannya ... Seperti mengadaptasi kontrol sumber, tidak masuk akal bagi siapa pun yang selalu bekerja dengan diri mereka sendiri.
crosenblum
"Akal sehat adalah hal yang paling terdistribusi di dunia, karena masing-masing berpikir dia sangat diberkahi dengan itu sehingga bahkan mereka yang paling sulit untuk puas dalam semua hal lain tidak dalam kebiasaan menginginkan lebih dari itu daripada mereka sudah memiliki." - Descartes
3

Karena itu menekankan kata kerja, bukan kata benda. Terkadang kata kerja yang penting.

Hanya sedikit Roger
sumber
OOP menekankan kata benda. Terkadang kata bendalah yang penting. Bagaimana kita tahu yang mana? - Dilema Palsu. Sistem
3

Karena secara umum menggunakan lebih sedikit kode untuk menyelesaikan tugas yang sama. Lebih sedikit kode untuk ditulis, lebih sedikit kode untuk dipelihara. Selain lebih sedikit kode, ia juga cenderung memiliki lebih sedikit status, dan karenanya sedikit lebih mudah untuk dipikirkan (setelah Anda terbiasa).

Alex Baranosky
sumber
Jadi, bukankah itu hanya definisi 'lebih baik'? Mengapa kami ingin melakukan apa pun selain apa yang telah Anda jelaskan?
2

Mungkin karena universitas ingin mengajarkan sesuatu dari semua paradigma pemrograman, dan untuk beberapa hal pemrograman fungsional lebih baik (seperti menggambarkan pergerakan karakter permainan dan menggambarkan animasi)

Coyote21
sumber