5 Bahasa Pemrograman Fungsional Yang Harus Anda Ketahui

Apa itu Pemrograman Fungsional?
Jika Anda memiliki latar belakang dalam matematika, Anda memiliki kepala mulai pada pemrograman fungsional. Ini karena paradigma pemrograman fungsional memperlakukan komputasi seperti fungsi matematika. Jika Anda tidak memiliki latar belakang matematika, ini dapat membuat Anda merasa bingung.

Pada dasarnya, pemrograman fungsional memperlakukan fungsi dan data sebagai tidak berubah. Anda meneruskan data ke fungsi, dan umumnya mengembalikan data yang diubah atau jenis data lainnya. Dalam pemrograman fungsional, fungsi tidak boleh mengubah data asli atau status program.

Ada kesamaan dengan filosofi Unix bahwa setiap program harus melakukan satu hal dengan baik. Suatu fungsi tidak boleh menyentuh berbagai bagian dari program Anda. Sebagai gantinya, ia harus mengambil inputnya dan memberi Anda output.

Idealnya, fungsi harus murni bila memungkinkan dalam pemrograman fungsional. Ini berarti bahwa dengan input yang sama, output fungsi akan selalu tetap sama.

Pemrograman Fungsional vs Berorientasi Objek
Ini adalah penyimpangan dramatis dari sesuatu seperti pemrograman berorientasi objek. Dalam pemrograman berorientasi objek, Anda sering memiliki objek dasar dengan berbagai metode yang didedikasikan untuk mengubah data atau keadaan yang merupakan bagian dari objek itu. Suatu metode bahkan dapat mengubah data atau menyatakan jika tidak secara eksplisit dinyatakan.

Dalam program praktis, terkadang ini masuk akal. Karena itu, hal itu dapat membuat program lebih sulit untuk dipertahankan, karena tidak selalu jelas apa yang mengubah keadaan atau data. Pemrograman fungsional pada awalnya digunakan dalam lingkungan akademik, tetapi juga dapat membantu mencegah masalah-masalah semacam ini.

1. JavaScript
JavaScript

Beberapa bahasa pemrograman memungkinkan pemrograman fungsional sementara yang lain mendorong atau bahkan menegakkannya. JavaScript termasuk dalam kategori pertama. Meskipun Anda dapat menggunakan paradigma pemrograman fungsional dalam bahasa tersebut, Anda dapat dengan mudah menggunakan pendekatan berorientasi objek.

Yang mengatakan, ada banyak paradigma pemrograman fungsional yang dibangun ke dalam JavaScript. Ambil, misalnya, fungsi tingkat tinggi. Ini adalah fungsi yang dapat menggunakan fungsi lain sebagai argumen.

JavaScript memiliki beberapa fungsi yang berfungsi dengan array seperti map (), kurangi (), filter (), dan lainnya, yang semuanya merupakan fungsi tingkat tinggi. Ini memungkinkan Anda menghubungkan mereka bersama-sama untuk dengan cepat melakukan segala hal dengan array.

Sementara JavaScript awal memiliki beberapa masalah dengan kemampuan berubah-ubah, versi yang lebih baru dari standar ECMAScript menyediakan perbaikan. Alih-alih kata kunci catch-all var untuk mendefinisikan variabel, Anda sekarang memiliki const dan let. Yang pertama memungkinkan Anda mendefinisikan konstanta, seperti namanya. Yang kedua, mari, membatasi ruang lingkup variabel ke fungsi yang dideklarasikan.

2. Python
Python

Seperti JavaScript, Python adalah bahasa umum yang dapat Anda gunakan dengan sejumlah paradigma pemrograman apa pun. Python mungkin memiliki kelemahan, tetapi pemrograman fungsional bukan salah satunya. Bahkan ada pengantar pemrograman fungsional dalam dokumentasi Python resmi.

Untuk memulai, Anda akan menemukan banyak peta yang sama (), filter (), kurangi (), dan fungsi serupa yang disebutkan di atas bawaan. Seperti halnya JavaScript, ini adalah fungsi tingkat tinggi karena mengambil fungsi lain sebagai argumen. Dalam Python, pemrograman fungsional memiliki keunggulan dalam bentuk kata kunci lambda.

Anda dapat menggunakan ekspresi lambda dalam beberapa cara. Salah satu cara untuk menggunakannya adalah sebagai singkatan untuk fungsi sederhana. Ketika ditugaskan ke variabel, Anda bisa memanggil ekspresi lambda persis seperti yang Anda lakukan dengan fungsi Python standar. Keuntungan nyata dari ekspresi lambda datang ketika Anda menggunakannya sebagai fungsi anonim.


Fungsi anonim berfungsi dalam JavaScript dan bahasa lain di daftar ini juga. Mereka sangat berguna ketika digunakan dengan fungsi tingkat tinggi karena Anda dapat mendefinisikannya di tempat. Tanpa fungsi anonim, Anda harus menetapkan sebelumnya penambahan sederhana sebagai fungsi yang dipesan lebih dahulu.

3. Clojure
Clojure

Tidak seperti JavaScript dan Python, Clojure mungkin bukan nama rumah tangga, bahkan di antara programmer. Jika Anda tidak terbiasa, Clojure adalah dialek bahasa pemrograman Lisp, yang dimulai pada akhir 1950-an. Ini membawa serta cara yang sangat spesifik dalam melakukan hal-hal yang kebetulan sempurna untuk pemrograman fungsional.

Seperti dialek Lisp lainnya, Clojure memperlakukan kode sebagai data. Ini berarti bahwa kode dapat secara efektif mengubah dirinya sendiri. Tidak seperti dialek Lisp lainnya, Clojure berjalan pada platform Java dan dikompilasi ke bytecode JVM. Ini berarti dapat bekerja dengan perpustakaan Java, apakah itu ditulis dalam Clojure atau tidak.


Tidak seperti bahasa sebelumnya dalam daftar ini, Clojure adalah bahasa pemrograman fungsional dari bawah ke atas. Itu berarti mengadvokasi ketidakmampuan sedapat mungkin, terutama dalam struktur data.

4. Elm

Elm

Salah satu bahasa yang lebih baru dalam daftar ini, Elm adalah bahasa murni fungsional yang awalnya dirancang oleh Evan Czaplicki pada 2012. Bahasa ini telah mendapatkan popularitas di kalangan pengembang web, khususnya untuk membuat antarmuka pengguna.

Tidak seperti setiap entri sebelumnya pada daftar ini, Elm menggunakan pengecekan tipe statis. Ini membantu memastikan tidak ada pengecualian runtime, dengan kesalahan yang ditangkap saat kompilasi. Ini berarti kesalahan yang kurang terlihat bagi pengguna, yang merupakan nilai tambah utama.


Kompiler Elm menargetkan HTML, CSS, dan JavaScript. Dengan cara yang sama Anda bisa menggunakan Clojure untuk menulis program yang berjalan di Java, Anda bisa menulis aplikasi yang menggunakan pustaka JavaScript di Elm.

5. Haskell
Haskell

Haskell adalah bahasa yang diketik secara statis, murni fungsional. Tidak seperti Elm, Haskell telah ada untuk sementara waktu. Versi pertama bahasa ini dirancang pada tahun 1990. Standar terbaru adalah Haskell 2010, sedangkan versi berikutnya direncanakan untuk tahun 2020.

Seperti yang telah kami jelajahi, sifat fungsional murni Haskell berarti bahwa menurut desain, fungsi tidak boleh memiliki efek samping. Ini membuatnya sangat cocok untuk memecahkan masalah-masalah dunia nyata terlepas dari akar pemrograman fungsional di dunia akademis.


Terlepas dari kurangnya popularitas mainstream, Haskell telah dipekerjakan di beberapa proyek yang banyak digunakan. Window manager Xmonad sepenuhnya ditulis dalam Haskell. Pandoc, yang mengonversi berbagai jenis markup ke dan dari format lain juga menggunakan bahasa.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel