Functional Programming -.-

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s