Udah jam 6 sore, lagi ada di lab kampus, saya pun kebingungan didepan komputer, bingung mau ngapain.
Mungkin ini namanya “resource overload” *istilah ngasal, jangan di-quote*, kalo diem di kosan aja, nggak ada internet, langsung pengen browsing ini-itu, tapi giliran ada internet sepuasnya, cepet, mantep di kampus langsung terpaku -.-
Oke lah ya daripada ngenet nggak jelas, dan bingung mau buka apaan, mending bikin postingan iseng tentang “Fun”Pro ah xD
In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. – wikipedia
Di semester 4 ini ada mainan baru, functional programming (y)!
Hmm, walaupun nama mata kuliahnya “Pemrograman Deklaratif” (yang saya sendiri nggak tau dengan jelas ini kuliah ngapain), tapi rasa-rasanya bahasan matkul ini sih sama aja kyk FunPro semester dulu-dulu.
Nah, konon katanya matkul paradigma programming yang satu ini nih, beda banget sama paradigma “imperative” yang udah saya pelajarin di semester-semester sebelumnya (dari C, C++, Java), bahkan si dosen pun udah me-wanti-wanti kalo emang agak susah beralih dari satu paradigma ke paradigma lain.
Sejauh ini yang saya tangkep dari konsep Functional Programming sih dari sisi main-main functionnya, di Functional Programming (di kampus pake bahasa Haskell) semua yang diotak-atik adalah fungsi, bahkan bikin konstanta pun pake fungsi.
Salah satu contohnya sih gini, ini adalah dua source code yg fungsinya sama, mengurutkan 2 buah urutan pake algoritma QuickSort (diambil dari Haskell.org)
Pake bahasa C
// To sort array a[] of size n: qsort(a,0,n-1) void qsort(int a[], int lo, int hi) { int h, l, p, t; if (lo < hi) { l = lo; h = hi; p = a[hi]; do { while ((l < h) && (a[l] <= p)) l = l+1; while ((h > l) && (a[h] >= p)) h = h-1; if (l < h) { t = a[l]; a[l] = a[h]; a[h] = t; } } while (l < h); a[hi] = a[l]; a[l] = p; qsort( a, lo, l-1 ); qsort( a, l+1, hi ); } }
Pake Haskell
qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
Nah, keliatan banget kalo disini konsep Functional Programming butuh jumlah kode yg lebih dikit, karena dalam Functional Programming kita nggak harus ngurusin urusan yang kecil-kecil kayak semacem variabel buat looping ato variabel temporary, dll, di Functional Programming kita dengan gampang bisa nerjemahin dari definisi formal sebuah algoritma ke kodingan langsung.
Okelah ya moga-moga saya bisa lancar di matkul ini (moga-moga dapet A juga sih hehe), dan moga-moga juga info-yang-sebenarnya-nggak-penting ini bisa jadi nice inpoh lah buat semuanya xD