Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Paradigma pemrograman
Pemrograman komputer merupakan suatu proses iteratif penulisan dan 
penyuntingan kode sumber sehingga membentuk sebuah program. Penyuntingan
 kode sumber meliputi proses pengetesan, analisis, pembetulan kesalahan,
 pengoptimasian algoritma, normalisasi kode, dan kadang-kadang 
pengkoordinasian antara satu programmer dengan programmer lainnya jika 
sebuah program dikerjakan oleh beberapa orang dalam sebuah tim. Seorang 
praktisi yang memiliki keahlian untuk melakukan penulisan kode dalam 
bahasa pemrograman disebut sebagai programmer komputer atau programmer, pengembang perangkat lunak, atau koder. Istilah rekayasa perangkat lunak (bahasa Inggris: Software engineering) seringkali digunakan karena proses penulisan program tersebut dipandang sebagai suatu disiplin ilmu perekayasaan.
Paradigma pemrograman
Program komputer dapat dikategorikan menurut paradigma bahasa 
pemrograman yang digunakannya. Dua paradigma utama yang umum digunakan 
adalah imperatif dan deklaratif.
Program yang ditulis dalam bahasa pemrograman imperatif biasanya 
memiliki algoritma yang ditulis dalam serangkaian klausal 
pendeklarasian, ekspresi aritmatis, dan sejumlah perintah.Pendeklarasian meliputi pendeklarasian variabel serta tipe data atas variabel tersebut, contoh: 
var x: integer; Penggunaan ekpresi operasi aritmatis yang menghasilkan nilai, contoh: 2 + 2 menghasilkan nilai 4. Dan perintah yang melingkupi pendelegasian nilai atas hasil dari operasi aritmatis tersebut ke dalam sebuah variabel, contoh: x := 2 + 2; if x = 4 then lakukan_sesuatu();
 Salah satu bentuk kritik atas implementasi imperatif ini adalah efek 
samping yang timbul atas pendelegasian perintah terhadap variabel yang 
berada diluar cakupan dari fungsi tersebut atau lebih dikenal sebagai non-local variable.
Program yang ditulis dengan bahasa deklaratif meliputi sejumlah 
properti yang harus dipenuhi untuk mendapatkan suatu bentuk hasil 
tertentu. Properti tersebut tidak mencerminkan suatu gambaran atas 
proses kerja suatu program namun merupakan suatu bentuk deklarasi 
relasional matematis atas sejumlah objek melaui properti-propertinya. 
Dua bagian utama atas pemrograman deklaratif adalah bahasa pemrograman fungsional dan bahasa pemrograman logikal. Prinsip dasar dibalik bahasa pemrograman fungsional (Haskell)
 adalah mencegah timbulnya efek samping seperti yang terdapat pada model
 pemrograman imperatif sehingga membuatnya lebih mudah untuk digunakan 
membuat program yang melakukan sejumlah operasi matematis.
Sementara itu, prinsip dari sebuah bahasa pemrograman logikal (Prolog)
 adalah mendefinisikan permasalahan yang hendak diselesaikan, tujuan 
yang hendak dicapai, dan membiarkan sistem melakukan analisis atas 
detail solusi terhadap permasalahan tersebut.
 Tujuan utama atas sebuah program didefinisikan dengan cara membuat 
sejumlah tujuan-tujuan yang lebih kecil, kemudian pada tiap-tiap tujuan 
tersebut secara lebih lanjut didefinisikan tujuan-tujuan lain yang lebih
 kecil lagi, dan begitu seterusnya. Jika suatu arahan tujuan yang 
didefinisikan gagal digunakan untuk menemukan solusi atas suatu 
permasalahan, maka arahan tujuan anakan yang lebih kecil akan di 
telusuri ulang, dan arahan lainnya akan diujicobakan.
Bentuk dari cara sebuah program dibuat bisa berupa tekstual ataupun 
visual. Dalam pemrograman visual, elemen-elemen program biasanya 
dimanipulasi secara grafis, sementara bila dibuat secara tekstual 
artinya sebuah program ditulis secara manual.
Kompilasi atau interpretasi
Program komputer dalam bentuk yang dapat dibaca oleh manusia biasanya disebuat sebagai kode sumber.
 Kode sumber dapat dikonversikan menjadi bentuk berkas yang dapat 
dieksekusi secara langsung oleh komputer. Proses pengkonversian ini 
disebut sebagai proses kompilasi dan biasanya dilakukan sebuah program 
utilitas dari bahasa pemrograman yang digunakan yang disebut sebagai kompiler.
 Pada beberapa bahasa pemrograman tertentu, kode sumber dapat langsung 
dieksekusi sebagai sebuah program dengan menggunakan bantuan utilitas 
yang disebut sebagai interpreter.
Baik melalui proses kompilasi ataupun interpretatif, eksekusi program dapat dilakukan dalam sebuah proses batch
 tanpa membutuhkan interaksi dengan manusia, namun program interpretatif
 memungkinkan pengguna untuk menulis perintah dalam suatu sesi 
interaktif. Pada kasus ini sebuah program dieksekusi sebagai sebuah 
perintah, yang kemudian dieksekusi baik secara serial ataupun paralel. 
Bahasa pemrograman yang menyediakan fitur interaktif seperti ini 
dinamakan sebagai bahasa skrip.
Kompiler digunakan untuk menerjemahkan kode sumber dari suatu bahasa pemrograman menjadi kode objek ataupun kode mesin.
 Kode objek biasanya membutuhkan proses lebih lanjut sehingga dapat 
menjadi kode mesin, dan kode mesin merupakan instruksi-instruksi yang 
dikenali dan dapat secara langsung dieksekusi oleh prosesor. Program 
komputer yang telah terkompilasi biasanya disebut sebagai berkas 
eksekutabel, ataupun berkas biner; yang merujuk pada bentuk sistem biner
 yang digunakan untuk menyimpan kode mesin tersebut.
Program komputer yang diinterpretasikan -baik secara batch 
ataupun dalam modus interaktif- biasanya akan diterjemahkan terlebih 
dulu ke dalam sejumlah token baru kemudian dieksekusi, atau bisa juga 
token-token tersebut dioptimasi lebih lanjut sehingga menjadi sejumlah 
instruksi yang memiliki tingkat efisiensi yang lebih baik dan disimpan 
sebagai berkas P-Code terpisah untuk dieksekusi kemudian oleh interpreter. BASIC, Perl, dan Python
 merupakan beberapa contoh dari bahasa pemrograman yang menyediakan 
fasilitas penerjemahaan langsung. Alternatif lainnya, program komputer 
yang ditulis dalam bahasa pemrograman Java merupakan hasil kompilasi kode sumber ke dalam bytcode yang kemudian dieksekusi oleh interpreter yang disebut sebagai mesin virtual java.
Kerugian utama pemanfaatan interpreter adalah unjuk kerja program 
biasanya lebih lambat dibandingkan dengan program yang dikompilasi 
terlebih dulu. Namun keuntungannya proses pengembangan perangkat lunak 
biasanya bisa dilakukan lebih cepat karena proses pengetesan atas 
berjalannya program dapat dilakukan dalam waktu yang relatif singkat. 
Tanpa memerlukan tahapan-tahapan kompilasi sebelumnya. Kerugian lainnya 
adalah, untuk dapat menjalankan program tersebut, utilitas interpreter 
harus disertakan dalam setiap pendistribusian, berbeda halnya dengan 
program terkompilasi yang dapat didistribusikan tanpa menyertakan 
kompiler bahasa yang digunakan karena sifatnya yang sudah dalam bentuk kode mesin.
Umumnya saat ini bahasa-bahasa pemrograman interpretatif telah dilengkapi pula dengan kompiler JIT (Just in Time)
 yang akan menganalisis serta menerjemahkan instruksi-instruksi yang 
paling sering digunakan ke dalam bahasa mesin pada saat program 
dijalankan sehingga tingkat unjuk kerjanya dapat ditingkatkan 
mengimbangi unjuk kerja program yang terkompilasi.
Eksekusi dan penyimpanan
Sebuah program komputer biasanya akan disimpan terlebih dahulu dalam memori utama (RAM) komputer sebelum dijalankan yang biasanya dilakukan oleh sistem operasi.
 Prosesor kemudian akan mengeksekusi program tersebut, instruksi demi 
instruksi sampai program tersebut diterminasi. Sebuah program yang 
tengah dieksekusi oleh prosesor dinamakan sebagai proses.
 Terminasi ataupun penghentian eksekusi sebuah program biasanya terjadi 
baik karena permintaan dari pengguna, interupsi pengguna, kesalahan atas
 program itu sendiri, ataupun kesalahan atas perangkat keras yang 
digunakan.
Program terpancang
Beberapa program komputer tertentu dipancangkan langsung pada perangkat 
kerasnya sebagai program yang dipanggil untuk kebutuhan identifikasi 
serta inisialisasi atas berbagai aspek untuk memastikan perangkat keras 
tersebut berfungsi.
 Saat proses inisialisasi tersebut, program terpancang tersebut akan 
dipanggil oleh sistem operasi, program terpancang tersebut kemudian akan
 menjembatani penggunaan perangkat keras tersebut sehingga sistem 
operasi dapat menggunakannya dengan baik.
Pemrograman manual
Program komputer awalnya diinput secara manual ke prosesor
 utama dengan memanfaatkan sejumlah pengalih sebagai representasi atas 
instruksi yang atas status konfigurasi on/off. Setelah menetapkan 
konfigurasi tersebut, tombol eksekusi akan ditekan. Proses ini kemudian 
dilakukan secara iteratif. Program komputer dalam sejarahnya pernah juga
 ditulis melalui paper tape' atau punched cards. Setelah dimasukkan dan alamat awal eksekusi telah dimasukkan, tombol eksekusi akan ditekan.
Pembuatan program otomatis
Pemrograman generatif
 merupakan sebuah tipikial dari pemrograman komputer yang akan membuat 
kode sumber melalui kelas-kelas generik, prototipe, aspek, templat, dan 
pembuat kode (code generator) untuk meningkatkan produktifitas 
programmer. Kode sumber yang dibuat oleh utilitas pemrograman tersebut 
misalnya pemroses templat pada sebuah IDE. Bentuk yang paling sederhana adalah pemroses makro yang terdapat pada bahasa pemrograman C.
Eksekusi simultan
Umumnya sistem operasi yang ada saat ini sudah mendukung pemanfaatan multitasking
 yang memungkinkan beberapa program komputer dijalankan pada saat yang 
bersamaan di sebuah komputer. Untuk dapat menjalankan beberapa program 
tersebut pada saat yang bersamaan, sistem operasi memanfaatkan mekanisme
 penjadualan proses yang merupakan suatu mekanisme yang akan mengatur 
pengalihan prosesor dalam melakukan pemrosesan sehingga beberapa program
 komputer tersebut dapat berinteraksi dengan pengguna saat dijalankan.
 Di sisi perangkat keras yang digunakan, prosesor modern saat ini 
umumnya telah mendukung beberapa core prosesor yang dipancangkan sebagai
 sebuah prosesor yang memungkinkannya menjalankan beberapa program 
sekaligus.
Sebuah program komputer dapat melakukan kalkulasi secara simultan 
pada beberapa jenis operasi di saat yang bersamaan dengan memanfaatkan thread atau sebagai proses terpisah. Umumnya prosesor yang ada saat ini sudah mendukung arsitektur multithreading yang teroptimasi untuk menjalankan beberapa thread secara efisien.
Lihat pula
Rujukan
- Knuth, Donald E. (1997). The Art of Computer Programming, Volume 1, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89683-4.
- Knuth, Donald E. (1997). The Art of Computer Programming, Volume 2, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89684-2.
- Knuth, Donald E. (1997). The Art of Computer Programming, Volume 3, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89685-0.
- ^ Stair, Ralph M., et al. (2003). Principles of Information Systems, Sixth Edition. Thomson Learning, Inc.. hlm. 132. ISBN 0-619-06489-7.
- ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. hlm. 58. ISBN 0-201-50480-4.
- ^ Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley. hlm. 75. ISBN 0-201-56885-3.
- ^ a b Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley. hlm. 213. ISBN 0-201-56885-3.
- ^ Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley. hlm. 244. ISBN 0-201-56885-3.
- ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. hlm. 97. ISBN 0-201-50480-4.
- ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. hlm. 30. ISBN 0-201-50480-4.
- ^ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. hlm. 11. ISBN 0-13-854662-2.
- ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. hlm. 6. ISBN 0-201-50480-4.
- ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. hlm. 100. ISBN 0-201-50480-4.
- ^ Akhter, Shameem (2006). Multi-Core Programming. Richard Bowles (Intel Press). hlm. 11–13. ISBN 0-9764832-4-6.
 
Tidak ada komentar:
Posting Komentar