Apakah Javascript adalah bahasa fungsional? Saya tahu ia memiliki objek & Anda juga dapat melakukan OOP, tetapi apakah ini juga merupakan bahasa fungsional, dapatkah digunakan dengan cara itu?
Terkadang, orang akan mengatakan pemrograman fungsional, ketika yang mereka maksud adalah pemrograman imperatif atau pemrograman prosedural . Sebenarnya, pemrograman fungsional adalah:
Dalam ilmu komputer, pemrograman fungsional adalah paradigma pemrograman yang memperlakukan komputasi sebagai evaluasi fungsi matematika dan menghindari keadaan dan data yang bisa berubah . Ini menekankan penerapan fungsi, berbeda dengan gaya pemrograman imperatif, yang menekankan perubahan dalam keadaan. Pemrograman fungsional berakar pada kalkulus lambda, sistem formal yang dikembangkan pada 1930-an untuk menyelidiki definisi fungsi, aplikasi fungsi, dan rekursi. Banyak bahasa pemrograman fungsional dapat dilihat sebagai elaborasi pada kalkulus lambda.
Meskipun Javascript tidak dikenal secara luas atau digunakan sebagai bahasa fungsional, Javascript memiliki beberapa elemen fungsional :
JavaScript memiliki banyak kesamaan dengan Skema. Ini adalah bahasa yang dinamis. Ini memiliki tipe data fleksibel (array) yang dapat dengan mudah mensimulasikan ekspresi-s. Dan yang paling penting, fungsinya adalah lambda.
Skema adalah dialek Lisp , dan mungkin salah satu bahasa yang dipikirkan sebagian besar programmer ketika mereka membahas pemrograman fungsional. Ketika datang ke orientasi objek , Javascript adalah bahasa yang berorientasi objek. Tetapi orientasi objeknya adalah berdasarkan prototipe :
Pemrograman berbasis prototipe adalah gaya pemrograman berorientasi objek di mana kelas tidak ada, dan penggunaan kembali perilaku (dikenal sebagai pewarisan dalam bahasa berbasis kelas) dilakukan melalui proses kloning objek yang ada yang berfungsi sebagai prototipe. Model ini juga dapat dikenal sebagai pemrograman tanpa kelas, berorientasi prototipe atau berbasis instance. Delegasi adalah fitur bahasa yang mendukung pemrograman berbasis prototipe.
Jadi walaupun Javascript berorientasi objek, ia tidak mengikuti model berbasis kelas yang lebih umum , seperti halnya bahasa seperti C ++, C #, Java dan PHP (dan beberapa lainnya). Dan tentu saja itu juga bahasa yang sangat penting, yang mengarah pada kebingungan dengan pemrograman fungsional yang saya jelaskan di atas.
Anda tahu bagaimana OOP menjadi / tampak seperti evolusi berikutnya dalam pemrograman, apakah itu berarti bahwa 'Pemrograman Fungsional' adalah evolusi berikutnya
Orientasi objek dan pemrograman fungsional hanyalah dua dari banyak paradigma pemrograman yang berbeda , mereka adalah gaya pemrograman yang berbeda dengan konsep dan abstraksi yang berbeda. Kata kuncinya adalah "berbeda". Tidak ada paradigma tunggal yang lebih baik daripada yang lain atau lebih berkembang daripada yang lain, masing-masing dan setiap skenario cocok lebih baik dari yang lain. Beberapa mungkin lebih tua asalnya daripada yang lain, tetapi dalam istilah evolusi yang membuat mereka lebih baik, karena mereka telah bertahan lebih lama. Tapi itu bukan cara yang sangat cerdas untuk melihatnya.
Javascript, seperti yang saya jelaskan di atas dan beberapa bahasa lainnya, multi-paradigma. Hal ini memungkinkan Anda untuk menulis kode dalam gaya imperatif, berorientasi objek dan gaya fungsional. Terserah Anda untuk memilih mana yang paling cocok untuk apa pun yang Anda bangun. Ada juga beberapa bahasa paradigma tunggal, contoh kanonik adalah Java, yang hanya memungkinkan untuk pemrograman berorientasi objek berbasis kelas 1 .
Anda harus benar-benar menahan keinginan untuk memperlakukan bahasa & paradigma sebagai pernyataan mode. Ada banyak omong kosong di luar sana, kebanyakan ditulis oleh fanboys / fangirls atau orang pemasaran, dengan sedikit (jika ada) pengetahuan dan pemahaman pemrograman. Istilah seperti "lebih baik", "lebih berkembang" dll, tidak berlaku.
Saya belajar paling baik melalui contoh-contoh, mungkin seseorang dapat menunjukkan melakukan tugas yang sama dengan cara OOP & kemudian dengan cara Pemrograman Fungsional bagi saya untuk memahami & membandingkan apa yang pemrograman fungsional lakukan / adalah.
Itu akan menjadi cara yang buruk untuk belajar. Orientasi fungsional dan objek adalah gaya yang sangat berbeda, dan contoh apa pun selain yang sangat sederhana tidak akan cocok dengan satu atau gaya lainnya.
1 Tetapi belakangan mencoba memperluas cakupannya ke pemrograman generik, mari kita lihat bagaimana kelanjutannya.
Kesimpulannya:
- Berkonsentrasi pada belajar Javascript, itu adalah bahasa yang indah dan sangat berguna. Pelajari bahasa, bukan hype.
- Cukup banyak paradigma yang berbeda, semuanya sama-sama bermanfaat. Terserah Anda untuk memilih mana yang Anda sukai dan mana yang paling cocok apa pun yang Anda bangun.
- Jika Anda ingin mempelajari pemrograman fungsional, pilih bahasa yang lebih cocok, seperti Skema atau Clojure . Tetapi pertama-tama Anda harus memahami konsep matematika yang terlibat.
- Lakukan riset sebelum Anda bertanya. Sebagian besar pertanyaan Anda dijawab oleh artikel Wikipedia yang relevan. Mengetahui cara meneliti dan bertanya adalah keterampilan yang sangat penting bagi setiap programmer.