Perkenalan Paradigma Pemrograman Fungsional Praktis

Anda adalah seorang software engineer (atau developer, atau programmer, tergantung bagaimana Anda suka menyebutnya). Sehari-harinya, Anda sering menghabiskan waktu dengan teks editor atau IDE kesayangan Anda, secangkir kopi (atau teh, if you’re that kind of person), dan beberapa browser tab terbuka pada situs dokumentasi sejuta umat, Stack Overflow, asyik hacking proyek sampingan Anda.
Suatu hari, Anda mendengar suatu istilah baru: pemrograman fungsional. Mungkin Anda membacanya sekilas ketika sedang menyusuri forum. Mungkin juga seorang developer yang Anda ikuti blognya menyebutnya sambil lalu di akhir sebuah tulisan. Atau mungkin kolega Anda di kantor membisikkan kata-kata tersebut ketika tak sengaja tertidur di mejanya.
Bagaimana pun, Anda penasaran. Anda mulai bertanya pada mahaguru Google tentang istilah tersebut. Wikipedia Bahasa Indonesia menyebutnya sebagai,
Paradigma pemrograman yang memperlakukan proses komputasi sebagai evaluasi fungsi-fungsi matematika.
Anda mulai khawatir. Kata “M” yang terlarang pada definisi itu membuat Anda bergidik.
Anda pun sudah berpikir akan menyerah… namun Anda sadar, kata “menyerah” tidak ada di kamus Anda. Anda bertekad untuk mengungkap rahasia yang menyelubungi paradigma yang disebut pemrograman fungsional ini. Seberapa susah, sih, memangnya?
Lalu Anda menemukan artikel ini. Anda kemudian bergumam:
Ini dia.
Kalau Anda sadari, prosa di atas adalah usaha saya untuk menarik Anda membaca artikel ini. Saya berharap saya berhasil menarik perhatian Anda; kalau tidak… yah, Anda sudah membaca sejauh ini, mengapa tidak coba lanjutkan? :-D
Tidak praktis!
Ada banyak miskonsepsi yang sering saya temui ketika saya mencoba membicarakan pemrograman fungsional dengan kolega saya. Hampir semuanya berujung pada anggapan bahwa paradigma fungsional itu akademis dan teoretis sehingga tidak praktis, terlalu sulit dipelajari, dan terlalu menakutkan (kata “M” tadi, ingat?).
Menurut saya, persepsi-persepsi tersebut tidak sepenuhnya benar. Seri artikel ini ditujukan untuk meluruskan hal tersebut.
Tujuan kita bersama
Untuk dapat mengikuti artikel ini, saya mengasumsikan Anda punya setidaknya pengetahuan dasar pemrograman dalam bahasa apa pun.
Goal saya dengan tulisan ini adalah untuk mengenalkan pada Anda apa sebenarnya paradigma fungsional itu beserta manfaatnya. Tidak akan ada banyak konsep dan istilah matematika di sini; saya akan mencoba menjelaskan dengan istilah umum yang harapannya dapat dengan mudah dimengerti. Saya ingin meyakinkan Anda bahwa dengan pengetahuan tentang paradigma ini, Anda akan menjadi engineer yang lebih kompeten.
Untuk mencapai goal tersebut secara efektif, saya akan membagi seri artikel ini menjadi beberapa artikel tersendiri. Tiap-tiap bagian akan fokus pada apa saja karakteristik paradigma pemrograman fungsional dan apa manfaat praktisnya. Di akhir seri, akan ada pembahasan secara singkat tentang bagaimana penerapan paradigma ini dalam industri software engineering beserta masalah-masalah yang mereka pecahkan, agar lebih menginspirasi.
Satu hal yang perlu saya tekankan di awal, paradigma fungsional bukanlah mengenai bahasa pemrograman. Sangat mudah untuk keliru dan menempatkan fokus terlalu besar pada “bahasa-bahasa pemrograman fungsional” seperti Haskell, OCaml, Scala, F#, dan lainnya. Saya akan menggunakan berbagai macam bahasa pemrograman pada artikel ini untuk mengilustrasikan hal tersebut.
Paradigma fungsional lebih merupakan sebuah kerangka berpikir. Kerangka berpikir yang dapat membantu Anda memecahkan masalah yang mungkin Anda tidak sadar Anda miliki.
Pada seri artikel ini, saya akan menggunakan istilah fungsi (function) untuk mengacu pada unit komputasi yang pada bahasa pemrograman berorientasi objek seperti Java dan Ruby mungkin lebih akrab disebut method.)
Okay, let’s get on with it!
Saya tahu Anda tidak sabar — saya juga!
Terdapat lima bagian (plus satu perkenalan) pada seri ini, masing-masing membahas sebuah konsep tentang paradigma pemrograman fungsional. Silakan klik tautan berikut untuk langsung ke artikel pertama:
Atau, gunakan daftar tautan di bawah untuk navigasi ke artikel-artikel lainnya dalam seri ini:
- Perkenalan Paradigma Pemrograman Fungsional Praktis
- Pemrograman Deklaratif — Paradigma Fungsional Praktis, Part 1
- Pure Functions dan Efek Samping — Paradigma Fungsional Praktis, Part 2
- Transformasi Data dan Immutability — Paradigma Fungsional Praktis, Part 3
- Higher-order Function — Paradigma Fungsional Praktis, Part 4
- Penerapan Paradigma Fungsional di Industri — Paradigma Fungsional Praktis, Part 5
Apakah Anda menyukai yang Anda baca? Apa saya melewatkan sesuatu? Beritahu saya melalui kolom komentar!
Paradigma Fungsional adalah sebuah blog tentang berbagai hal yang berkaitan dengan paradigma pemrograman fungsional (functional programming) di dunia pengembangan software. Tulisan-tulisan di blog ini akan dimuat dalam Bahasa Indonesia, karena menurut saya resource untuk belajar paradigma fungsional dalam bahasa kita masih sangat kurang.
Apabila Anda tertarik untuk mengetahui lebih lanjut tentang dunia paradigma fungsional, silakan ikuti blog ini!

