Skip to main content

Apa itu pemrograman fungsional?

Pemrograman fungsional adalah paradigma pemrograman di mana basis perhitungan adalah evaluasi ekspresi.Beberapa karakteristik adalah penggunaan fungsi tingkat tinggi, transparansi referensial dan evaluasi malas.Keuntungan dari gaya pemrograman termasuk bahwa program mudah dibaca, sangat dapat diandalkan dan dapat dipecah menjadi komponen.Kerugiannya adalah bahwa perhitungan mungkin lambat dan gaya dan sintaksnya benar -benar berbeda dari gaya pemrograman umum lainnya.Gaya pemrograman fungsional lebih sering dianut oleh akademisi daripada oleh para profesional ilmu komputer.

Seperti namanya, fungsi adalah bagian mendasar dari paradigma pemrograman ini.Fungsi dapat bersarang dalam fungsi lain, yang disebut fungsi orde tinggi, dan setiap fungsi tingkat tinggi dapat dipecah menjadi fungsi blok bangunan yang mudah dipahami dan debug.Contoh beberapa fungsi tingkat tinggi adalah peta dan sarang.Peta fungsi mengambil fungsi f dan daftar variabel, misalnya (x, y, z) dan memberikan hasil dalam daftar: peta [f, (x, y, z)] ' (f (x), f(y), f (z)).Nest mengambil fungsi f, variabel x, dan jumlah iterasi: sarang [f, x, 3] ' f (f (f (x))).

Pemrograman fungsional murni membutuhkan input dan mengembalikan output tanpa pernah mengubah keadaan variabel.Dengan kata lain, fungsi dengan input yang sama akan selalu memberikan hasil yang sama terlepas dari apa yang telah terjadi sebelumnya dalam program.Ini disebut transparansi referensial.Karena fungsi matematika secara referensial transparan, pemrograman fungsional intuitif bagi banyak ahli matematika, insinyur dan ilmuwan.

Transparansi referensial fungsi berarti bahwa urutan evaluasi fungsi tidak penting.Oleh karena itu fungsi tidak perlu dievaluasi sampai hasilnya diperlukan, yang disebut evaluasi malas.Ini sangat kontras dengan pemrograman imperatif, di mana suatu program dimulai dengan perintah pertama dan berjalan melalui daftar sampai perintah terakhir.Evaluasi Lazy melompati bagian -bagian dari program yang tidak mengikuti secara logis atau berlebihan, yang secara otomatis mengoptimalkan program dan dapat mengurangi waktu komputasi.

Pemrograman fungsional memiliki banyak keunggulan dibandingkan paradigma pemrograman lainnya.Fungsi dengan input dan output yang jelas mudah dibaca dan dipahami.Setelah fungsi benar -benar debugged, ia dapat digunakan secara andal dalam aplikasi lain.Mesin Multicore mungkin dapat menghitung fungsi yang dievaluasi secara independen secara paralel, secara drastis meningkatkan kinerja program.

Sayangnya, tidak semua program meminjamkan diri untuk komputasi paralel, dan program fungsional komputasi mungkin agak lambat.Program fungsional sangat bergantung pada rekursi, yang seringkali kurang efisien sehingga menggunakan loop tradisional atau metode iterasi.Faktanya, pemrograman fungsional bisa sangat canggung dan sulit dipelajari karena tidak menyerupai paradigma lain yang lebih umum seperti pemrograman berorientasi objek.

Akademisi cenderung mendukung pemrograman fungsional karena memberikan cara yang jelas dan dapat dipahami untuk memprogram masalah dunia nyata yang kompleks yang kompleks dunia nyata yang kompleks dunia nyata yang kompleks secara dunia nyata yang kompleks nyata secara dunia nyata yang kompleks secara nyata kompleks dunia nyata yang kompleks secara dunia nyata yang kompleks secara dunia nyata yang kompleks secara dunia nyata yang kompleks dunia nyata dunia nyata dunia nyata.Beberapa bahasa murni adalah Haskell dan Erlang.Mathematica berspesialisasi dalam matematika simbolik, R khusus dalam statistik dan J adalah khusus dalam analisis keuangan.Bahasa multiparadigma seperti Scala dan F# mendukung pemrograman fungsional dan gaya pemrograman lainnya.