Mengenal Pemrograman Fungsional

Yana Permana 11 Mei 2016

Mengenal Pemrograman Fungsional

Ketika banyak orang berbicara tentang topik pemrograman fungsional, mereka selalu menyebutkan kata kunci 'fungsional' yang sering membingungkan. Mereka selalu menyebutkan fitur yang disuguhkan pemrograman fungsional seperti data yang tidak berubah, fungsi first-class dan optimisasi tail call. Mereka juga selalu menyebutkan teknik yang selalu digunakan dalam pemrograman fungsional seperti mapping, reducing, pipelining, recursing, currying dan fungsi level atas lainnya. Mereka juga selalu bilang keuntungan pemrograman fungsional seperti parallelization, lazy evaluation, dan determinism.

Namun jangan terpaku pada istilah tersebut, pemrograman fungsional mempunyai karakterisitik yang penting yaitu 'The absence of side effects'. Artinya bahwa pemrograman fungsional tidak bergantung pada data yang diluar fungsi, dan tidak merubah data yang ada di luar fungsi.

Sebagai contoh perbedaan fungsi yang termasuk ke dalam pemrograman fungsional dan bukan diimplementasikan dalam bahasa pemrograman Python sebagai berikut:

Tidak fungsional

a = 0
def increment():
    global a
    a += 1

Fungsional

def increment(a):
    return a + 1

Pada contoh lain, pemrograman fungsional tidak melakukan iterasi dalam struktur data seperti list, stack dan lain-lain. Untuk melakukan iterasi terhadap data, teknik yang digunakan biasanya dengan fungsi map() dan reduce().

Cara kerjanya, fungsi map() berguna mengumpulkan item sebagai elemen baru dan disimpan dalam koleksi kosong. Fungsi map() melakukan iterasi untuk setiap koleksi dan menyimpan setiap nilai dalam koleksi baru yang kemudian dikembalikan sebagai koleksi baru.

Baca juga: Virtual Reality dan Perkembangannya

Sebagai contoh, dibawah ini merupakan implementasi kuadrat.

squares = map(lambda x: x * x, [0, 1, 2, 3, 4])
print squares
# result => [0, 1, 4, 9, 16]

Apa saja sih keuntungan yang disediakan pemrograman fungsional? Ini dia.

  • Pemrograman fungsional membolehkan kita untuk menulis kode dengan potensi bug yang rendah karena setiap komponen telah diisolasi.
  • Penggunaan rekursif dan fungsi first-class membolehkan kita untuk menampilkan bukti sederhana dari struktur kode.
  • Parallelization, lazy evaluation, determinism dan masih banyak lagi.
Pemrograman fungsional termasuk kedalam paradigma menulis kode tanpa merubah state. Alasan utamanya, pemrograman fungsional melakukan pemanggilan fungsi yang dapat menghasilkan hasil yang sama secara berturut-turut. Untuk melakukan implementasi pemrograman fungsional, kita bisa menggnakan berbagai bahasa pemrograman yang mendukung fungsi first-class.

Dengan demikian pemrograman fungsional adalah pemrograman yang mempunyai karakteristik 'The absence of side effects'. Artinya fungsi yang ditulis tidak bergantung pada data. Pemrograman fungsional juga membawa gaya baru dalam menulis kode sehingga bisa lebih menghemat baris kode. (yp)

Referensi 1. http://stackoverflow.com/questions/24279/functional-programming-and-non-functional-programming 2. https://maryrosecook.com/blog/post/a-practical-introduction-to-functional-programming