Minggu, 26 Januari 2014

Catatan Dasar Pemrograman 1

Paradigma Pemrograman


Paradigma dapat diartikan sebagai sudut pandang tertentu (dalam suatu persoalan, realitas, keadaan dan sebagainya). Paradigma hanya memberikan pandangan yang terbatas terhadap sebuah realitas karena paradigma membatasi dan mengkondisikan jalan berpikir kita, mengarahkan kita terhadap beberapa hal dan mengabaikan hal lainnya.
                Dalam pemrograman pun terdapat beberapa paradigma. Masing-masing dari paradigma tersebut memiliki prioritas strategi analisis dalam memecahkan persoalan. Di sini, pemrogram dituntut untuk dapat cerdas memilih paradigma yang akan digunakan, karena beberapa jenis persoalan memang dapat dipecahkan dengan baik menggunakan sebuah paradigma sedangkan persoalan yang lain tidak cocok.
                Terdapat empat contoh paradigma pemrograman, yaitu :
1.       Paradigma prosedural atau imperatif
Dasar dari paradigma ini adalah instruksi, yang mana mempunyai efek yang dapat diukur pada pernyataan program. Paradigma ini didasari oleh konsep mesin Von Neumann (stored program concept).
Stored program concept adalah memori yang dibedakan menjadi dua, yaitu memori instruksi dan memori data. Masing-masing dari memori ini dapat diberi nama dan harga. Instruksi akan diproses satu per satu (secara berurutan atau sekuensial) oleh pemroses tunggal. Dalam instruksi ini juga terdapat percabangan kondisional, yaitu beberapa instruksi yang menentukan instruksi berikutnya yang akan dieksekusi. Paradigma ini hampir sama dengan penulisan resep makanan dan cara perbaikan mobil (step by step).
Tipe instruksi yang biasanya menggunakan paradigma prosedural adalah assignment, IO, dan pemanggilan procedure. Contoh bahasa yang mewakili paradigma ini adalah Fortran, Algol, Pascal, Basic dan C.
Pemrograman dengan paradigma ini sangat tidak manusiwai karena kita harus berpikir dalam batasan mesin. Akan tetapi, keuntungan dari pemrograman dengan paradigma ini adalah efisiensi eksekusi karena dekat dengan mesin.
2.       Paradigma fungsional
Paradigma fungsional didasari oleh konsep teori fungsi dalam matematika. Jika dibandingkan dengan paradigma prosedural, paradigma fungsional lebih simple dan bersih karena paradigma prosedural didasari ide digital computer.
Fungsi dapat berbentuk sebagai fungsi primitf atau komposisi dari fungsi-fungsi lain yagn telah terdefinisi. Penyelesaian maslaah didasari atas aplikasi dari fungsi-fungsi tersebut. Nilai yang dihasilkan non-mutable. Mustahil untuk melakukan perubahan dari sebuah composite value, tetapi masih dimungkingkan untuk membuat sebuah salinan revisi dari composite value. Semua komputasi dapat dilakukan dengan pemanggilan fungsi.
Dengan paradigma pemrograman ini, pemrogram tidak perlu lagi mempermasalahkan memorisasi dan struktur data, dan bagaiman mesin mengeksekusi program. Setiap fungsi diibaratkan sebagai sebuah kotak hitam, degan merakit kotak hitam ini dari keadaan awal hingga akhir pemrogram bisa menghasilkan program yang besar. Kelemahan dari paradigma fungsional adalah keberatan kinerja dan efisiensinya karena harus diolah lebih dari paradigma prosedural (oleh pemroses bahasanya). Contoh bahasa pemrograman yang mewakili paradigma ini adalah LOGO,APL dan LISP.
3.       Paradigma deklaratif, predikatif atau lojik
Paradigma lojik sangat cocok ketika digunakan pada persoalan tentang fakta dan relasi. Paradigma ini didasari oleh aksiom (fakta dan aturan deduksi), inference rules (penguraian sekumpulan fakta dan aturan-aturan) dan queries (ketika pemakai mengajukan pertanyaan, program akan menjawab apakah penyataan itu dapat dideduksi dari aturan dan fakta yang ada). Berdasarkan paradigma ini, program akan memakai aturan deduksi untuk mencocokkan pertanyaan dengan fakta-fakta yang ada untuk menjawab pertanyaan. Contoh bahasa pemrograman yang mewakili paradigma ini adalah Prolog.
4.       Paradigma berorientasi objek (Object Oriented)
Paradigma berorientasi objek menjadi cukup populer di beberapa tahun terakhir ini. Paradigma ini didasari oleh teori tentang konsep dan model interaksi antara manusia dengan fenomena nyata di dunia.

Paradigma ini menawarkan konsep class, inheritance, polymorphism dan menekankan pentingnya pendefinisian statik kelas untuk menciptakan objek pada saat runtime, yang kemudian dimanipulasi atau saling berinteraksi. Kelas adalah objek yang mempunyai atribut yang sama. Objek sendiri mempunyai atribut (kumpulan sifat) dan kelakuan (kumpulan reaksi, metoda). Data dan juga operasi dienkapsulasi dalam objek. Interaksi objek berarti penyampaian pesan. Kelas merepresentasikan konsep, sedangkan objek merepresentasikan fenomena. Kelas diorganisasi dalam sebuah inheritance hierarchies. Contoh bahasa pemorgraman yang mewakili paradigma ini adalah Smalltalk, Eifel, Java dan C++.