Sebelum membahas pemrograman, alangkah baiknya kita mencoba mengenal komputer terlebih dahulu. Mengapa? Karena membuat suatu program komputer, nantinya tentu akan kita gunakan di atas komputer (Kalau di atas penggorengan, itu sih ayam goreng. He3). Saya bukannya menyepelehkan Anda dengan menuduh bahwa Anda tidak tahu apa itu komputer, namun disini saya hanya sedikit memberikan gambaran kepada Anda bagaimana suatu program komputer itu dibuat dan bekerja.
Pada dasarnya, komputer adalah alat bantu hitung matematika. Apa yang dihitung? Yang dihitung adalah bilangan basis dua / biner / binary (Itu loh, bilangan yang isinya hanya 0 dan 1, yang seperti di film-film hacker tuh). Nah, hasil perhitungan itulah yang nantinya akan digunakan untuk membantu menyelesaikan masalah yang kita hadapi sehari-hari. Jadi apabila Anda suatu permasalahan dan Anda dapat mendeskripsikannya ke dalam suatu logika matematika, maka percayalah bahwa komputer dapat menemukan solusi dari masalah Anda. Bahkan solusi yang ditemukan komputer terkadang lebih baik dari solusi yang Anda temukan sendiri. Sebagai contoh adalah permainan catur yang ada di komputer. Coba panggil teman Anda yang menurut Anda paling jago bermain catur. Kemudian Anda minta melawan komputer di permainan catur dengan tingkat kesulitan yang tinggi. Pasti kemungkinan besar pemenangnya adalah sang komputer. Padahal belum tentu si pembuat pemain catur digital itu bisa bermain sebagus hasil buatannya. Lalu muncul pertanyaan, bagaimana cara komputer bekerja sehingga bisa sepandai itu?
Secara garis besar, komputer bekerja melalui 4 tahap:
Pertama, komputer akan menerima masukan dari Anda. Entah itu berupa hasil ketikan saat Anda menggunakan keyboard, "klik" yang Anda lakukan pada mouse komputer rumah Anda, suara merdu yang Anda pamerkan pada microphone di sebuah notebook, atau mungkin paras Anda sendiri yang gambarnya diambil menggunakan perangkat WebCam (Nah ini nie, hobi anak jaman sekarang. Foto atau rekam dirinya sambil bergaya, lalu upload deh. Ha3).
Kedua, nantinya masukan itu akan diteruskan dan disimpan pada memori sembari diambil sebagian demi sebagian untuk diproses di prosessor. Proses ini akan berlanjut terus hingga data yang ada di memori habis atau ada suatu kondisi yang menyebabkan proses ini berhenti.
Ketiga, prosessor akan memproses data tadi dengan melakukan perhitungan-perhitungan tertentu terhadapnya untuk mendapatkan suatu solusi. Semakin canggih suatu prosessor, maka semakin cepat pula ia menyelesaikan tiap perhitungan.
Terakhir, komputer akan menggabungkan dan meneruskan solusi yang dia temukan kepada Anda jika memang ditemukan solusinya. Solusi ini bisa berupa tulisan, gambar, video, musik, dan lain-lain, walaupun sebenarnya solusi tersebut hanyalah deretan angka biner yang secara kasat mata tidak ada artinya bagi kita.
Anda masih bingung? Apabila Anda masih bingung, dapat kita ilustrasikan seperti ini. Anda "naksir" dengan anak tetangga sebelah. Namun Anda tidak berani mengungkapkannya secara langsung. Maka dari itu, Anda berniat mengungkapkan cinta Anda itu melalui surat yang nantinya akan Anda kirimkan lewat jasa POS (Cie cie..., cuit cuit..., preketek preketek.... Bruakakak 99x ^o^). Prosedurnya tentu akan seperti ini:
Pertama, Anda merangkai kata-kata mutiara dan menulisnya pada sepucuk surat cinta berwarna merah jambu. Setelah selesai, Anda membawanya ke kantor POS terdekat. Ini diibaratkan proses yang pertama. Anda membuat suatu masukan, lalu diteruskan ke pihak yang bertugas.
Kedua, pihak POS tidak akan langsung mengirimkannya. Mereka akan menyimpan terlebih dahulu surat tersebut bersama dengan surat-surat yang lain untuk dipilah-pilah. Mana surat yang tujuannya jauh, dan mana yang dekat. Mana surat yang penting, dan mana surat yang tidak begitu penting (Nah loe, surat cinta Anda dianggap penting ngga' ya kira-kira? Coba tanyakan pada Pak POS dulu deh. OK ^^). Dari hasil pemilahan didapatkan mana surat-surat yang harus dikirimkan terlebih dahulu, dan mana surat-surat yang harus menunggu. Ini adalah ibarat dari proses yang kedua. Masukan Anda terlebih dahulu disimpan dalam memori. Kemudian masukan tersebut diproses sebagian demi sebagian sesuai dengan tingkat prioritas-nya.
Ketiga, setelah surat-surat yang ada ditata dengan rapi dan surat Anda telah memasuki giliran untuk diantarkan, Pak POS pun mengantarkan surat Anda kerumah tetangga Anda itu dengan gagah berani sembari menghalau segala halangan dan rintangan yang ada. Semakin kuat dan lincah Pak POS-nya maka surat Anda akan semakin cepat sampai tujuan. Inilah ibarat proses yang ketiga. Prosessor akan memproses potongan-potongan data dari masukan Anda pada memori. Kemudian prosessor akan menghasilkan suatu solusi seperti Pak POS menjadi solusi masalah cinta Anda (applause deh buat Pak POS-nya).
Terakhir, waktunya si do'i membaca isi surat Anda. Mengetahui perasaan Anda kepadanya, tentu tidak akan membuat dia diam saja. Dia akan menjawabnya, entah lewat surat juga, atau mungkin si do'i menemui Anda secara langsung dan menyatakan jawabannya apakah cinta Anda diterima atau justru ditolak mentah-mentah. Ini adalah gambaran dari proses yang terakhir. Komputer akan menjawab masukan Anda dengan suatu keluaran. Entah keluaran itu menggunakan media yang lain dengan media yang Anda gunakan saat memberikan masukan, ataupun menggunakan media yang sama dengan saat Anda memberikan masukan seperti yang terjadi pada berbagai macam komputer "touch-screen" yang ada saat ini. Anda tekan monitornya, eh monitor itu sendiri yang beraksi. Hebat bukan orang-orang zaman sekarang???!
Namun tidak menutup kemungkinan dalam suatu kondisi terkadang membuat si do'i menjadi malas menjawab penyataan cinta Anda itu. Kondisi seperti apa? Bermacam-macam. Misalnya saja karena surat Anda terlalu lebay baginya. Atau bisa juga dikarenakan tulisan Anda tidak bisa dibaca (Nah ini nie, aku banget. Boro-boro nulis, ngetik aja jelek). Seperti si do'i, komputer pun dapat melakukan hal yang sama. Apabila sang komputer merasa masukan Anda tidak membutuhkan keluaran atau masukan Anda tidak masuk akal baginya, maka dia tidak akan memberikan keluaran apapun.
Melihat proses yang dilakukan oleh komputer seperti itu, mungkinkah komputer menyelesaikan sebuah permasalahan yang rumit? Jika Anda bayangkan sekilas, mungkin komputer tidak akan bisa menyelesaikan permasalahan yang rumit jika dia hanya mengandalkan perhitungan terhadap bilangan biner. Tetapi disinilah letak kecerdasan komputer. Komputer memiliki kemampuan untuk memecah suatu permasalahan yang kompleks menjadi potongan-potongan permasalahan kecil yang dapat dia hitung menggunakan konsep biner-nya. Lalu komputer akan menggabungkan solusi-solusi kecilnya menjadi solusi permasalahan kompleks yang ada. Dan sang komputer melakukan tiap potongan pekerjaannya dengan sangat cepat juga pasti. Ingat, komputer merupakan perangkat digital. Ia hanya membuat keputusan apakah solusinya berupa 0 atau 1, negatif atau positif, salah atau benar, tolak atau terima (Tidak seperti saya. Kalau ditanya jawabannya "mungkin", "maybe", "kalau ndagh salah", dan masih banyak bentuk-bentuk ambigu lainnya. Jangan ditiru ya!!! ^^). Hebat bukan cara kerja komputer? Tetapi bagi saya masih lebih hebat orang-orang yang membuat komputer. Bisa-bisanya mereka memiliki ide untuk membuat alat seperti itu. "Amazing"....
Bentuk dari komputer itu sendiri bermacam-macam seiring dengan perkembangan zaman. Mulai dari bentuk yang paling sederhana seperti kalkulator, komputer sekitar pertengahan abad 19 yang ukurannya lebih besar dari lemari pakaian saya, beragam spesifikasi PC (Personal Computer), laptop, notebook, netbook, handphone, smartphone, dan masih banyak lagi yang lainnya. Munculnya bentuk komputer yang beragam juga dikarenakan kebutuhan konsumen yang beragam sehingga para produsen komputer menjadi tertantang untuk menghasilkan produk yang sesuai dengan kebutuhan pasar. Misalnya, Anda adalah seseorang yang suka bepergian namun Anda dituntut harus sering terkoneksi dengan jaringan internet. Maka Anda pasti memilih menggunakan netbook, komputer tablet, atau mungkin smartphone yang notabene mudah dibawa kemana-mana. Jika Anda seorang gamers, Anda tentu akan lebih memilih menggunakan PC dengan spesifikasi tinggi yang membuat Anda lupa makan minum saat bermain game favorit Anda. Betul tidak? Atau mungkin Anda seseorang yang casual sehingga pakaian yang Anda miliki terbilang cukup banyak. Maka Anda dapat memilih membeli komputer yang berkembang sekitar pertengahan abad 19 untuk membantu tugas lemari pakaian Anda. Wkwkwk, bercanda.... ^^
Dan catatan terakhir yang perlu Anda ingat, komputer menjadi bermanfaat hanya ketika 3 komponennya telah terpenuhi, yaitu Hardware (Perangkat Keras), Software (Perangkat Lunak / Aplikasi), dan Brainware (Pengguna). Ada pengguna dan perangkat keras tanpa ada perangkat lunak, maka komputer hanya akan menjadi sebuah hiasan saja. Ada pengguna dan perangkat lunak tanpa ada perangkat keras, maka komputer hanya akan menjadi suatu teori belaka. Dan yang paling parah, ada perangkat keras dan lunaknya, tapi orangnya pada ngacir. Siapa yang pakai komputernya coba??? -_-a
2. GAMBARAN SINGKAT BAHASA PEMROGRAMAN
Setelah kita membahas komputer dan mengetahui bagaimana sebuah komputer bekerja, pertanyaan lain muncul. Bagaimana cara kita memerintah komputer melakukan suatu hal sedangkan untuk berkomunikasi dengannya saja kita mengalami kesulitan? Bukankah kita sudah tahu bahwa komputer hanya mengerti bahasa mesin (deretan-deretan biner) sedangkan deretan-deretan biner tidak akan ada artinya bagi kita?
Jawaban Anda benar, jika Anda menjawab Bahasa Pemrograman-lah solusinya. Bahasa pemrograman adalah suatu bahasa yang sengaja dibuat oleh para ahli komputer sebagai media komunikasi antara pengguna dengan komputer. Isi bahasa tersebut berupa perintah / instruksi yang ditujukan untuk komputer. Namun seperti bahasa-bahasa komunikasi pada umumnya, kedua belah pihak baik pengguna maupun komputer harus mengerti bahasa ini terlebih dahulu agar tidak terjadi kesalah-pahaman. Mempelajari bahasa pemrograman sangatlah mungkin dilakukan oleh pengguna karena bahasa pemrograman memang di-desain sedemikian rupa oleh para pembuatnya agar menyerupai bahasa manusia. Nah, masalahnya terletak pada si komputer. Ternyata komputer itu bodoh dalam hal belajar. Diajari memahami suatu bahasa sekeras apapun, dia tetap sulit mengerti (Sama seperti saya. Diajari bahasa inggris ampe' yang ngajari mati gaya, tetep aja bego'. He3 ^^). Tetapi para ahli komputer tidak kehabisan akal. Mereka membuat suatu penerjemah untuk menerjemahkan bahasa pemrograman ke bahasa mesin bagi komputer. Penerjemah itu disebut dengan "compiler". Hasil terjemahan si compiler-lah yang membuat komputer dapat mengerti maksud dan tujuan pengguna. Sebagai catatan, rata-rata setiap bahasa pemrograman memiliki compiler yang berbeda-beda. Hasil dari kompilasi kode-kode program itu sendiri dinamakan dengan aplikasi.
Karena banyaknya bahasa pemrograman yang ada, maka para ahli menggolong-golongkannya. Jika diamati dari bentuk instruksi yang ada di dalamnya, bahasa pemrograman dapat dibagi menjadi tiga golongan, yaitu:
a) Bahasa pemrograman tingkat rendah. Bahasa ini juga sering disebut dengan bahasa rakitan / assembly. Mengapa disebut seperti itu? Karena instruksi yang ada di dalamnya merupakan kata-kata yang dirancang sendiri oleh para pembuatnya. Oleh karena itu, para pembuatnya lah yang mengerti maksudnya secara rinci. Jadi jika Anda memutuskan untuk belajar bahasa pada tingkat ini, saya sarankan Anda mencari referensi yang lengkap terlebih dahulu mengenai istilah-istilah didalamnya. Akan lebih baik lagi jika Anda mencari referensi resmi dari pihak developer bahasa pemrograman terkait. Yang jelas, dalam buku ini saya tidak akan menjelaskan bahasa pemrograman pada tingkatan ini karena sudah jarang sekali digunakan. Selain itu juga karena saya tidak mampu. He he he....
b) Bahasa pemrograman tingkat menengah. Selain instruksi yang dirancang sendiri oleh para pembuatnya, juga terdapat instruksi berupa simbol-simbol seperti &&, ||, !=, dan masih banyak lagi. Biasanya instruksi yang berupa simbol tersebut mewakili suatu logika matematika, seperti simbol && yang biasanya mewakili logika AND, simbol || yang biasanya mewakili logika OR, dan lain-lain. Apabila Anda merupakan seorang matematika-wan / matematika-wati, tentu Anda tidak asing dengan istilah AND, OR, NOT, dan beberapa istilah logika matematika lainnya. Namun bagi Anda yang belum mengerti, pelan-pelan saja. Nanti saya akan membahas sedikit pada bagian tertentu di bab berikutnya karena memang jika Anda mau berpikir kreatif, kita hanya butuh mengerti sedikit saja istilah-istilah matematika dalam menyelesaikan berbagai macam permasalahan pemrograman yang ada, walaupun secara teori pemrograman sangat identik dengan matematika.
c) Bahasa pemrograman tingkat tinggi. Dikatakan tingkat tinggi karena instruksi yang ada di dalamnya diambil dari unsur bahasa sehari-hari (dalam bahasa inggris) yang sering dipakai, seperti if, for, while, dan lain-lain. Sebagian besar bahasa pemrograman ternama yang ada di dunia ini merupakan bahasa pemrograman tingkat tinggi, kecuali Bahasa Assembly yang merupakan bahasa tingkat rendah, dan bahasa C yang merupakan bahasa tingkat menengah (Jangan salah loh ya, bahasa C. Bukan C++ atau C# karena walaupun sama-sama memiliki unsur C, tetapi keduanya sudah merupakan bahasa pemrograman tingkat tinggi).
Sedangkan jika diamati berdasarkan paradigma / pola penulisan-nya bahasa pemrograman dapat dibagi menjadi tiga golongan, yaitu Functional Programming, Procedural Programming, dan Object Oriented Programming. Mengapa harus dibagi menjadi tiga golongan tersebut? Mungkin sejarahnya begini. Pada mulanya, para ahli membuat bahasa pemrograman dengan paradigma Functional Programming, yaitu dengan proses eksekusi urut mulai awal hingga akhir. Sama seperti Anda menulis surat cinta pada Sub-Bab sebelumnya, pasti Anda menulisnya mulai awal hingga akhir secara urut dan terperinci sembari melontarkan kata-kata yang dapat membuat hati si do'i menjadi dag dig dug seer. Ckckck....
Memang hal ini menjadi efektif karena para penulis kode program (programmer) terbantu dalam menata instruksi yang harus dilakukan oleh komputer. Namun yang menjadi masalah adalah ketika programmer melakukan suatu kesalahan dalam penulisan kode program. Anda bayangkan saja, misalnya terdapat suatu aplikasi untuk menghitung luas dan volum bangun matematika. Didalamnya terdapat fitur untuk bangun persegi, balok, dan kubus. Kemudian suatu hari ada orang yang menemukan fakta bahwa rumus menghitung persegi yang selama ini digunakan adalah salah. Akhirnya programmer harus mengganti rumus persegi itu sendiri, rumus persegi yang ada di balok, dan rumus persegi yang ada di kubus. Sangat tidak efektif bukan? Apalagi jika kesalahannya terjadi tidak hanya satu kali, namun berulang kali. Perumpamaan itu masih ditujukan untuk aplikasi yang sederhana. Belum lagi jika yang salah merupakan bagian vital dari sebuah aplikasi besar seperti aplikasi Office? Wah, bisa-bisa si programmer bunuh diri akibat stres karena harus melakukan koreksi di tiap baris kode program sebuah aplikasi besar yang mungkin jumlahnya bisa beratus-ratus ribu, bahkan mungkin bisa lebih.
Dari permasalahan yang muncul tersebut, para ahli membuat terobosan baru, yaitu Procedural Programming. Dengan procedural programming, kita dapat mendefinisikan sendiri suatu prosedur kerja tertentu untuk nantinya dipanggil ketika sedang dibutuhkan. Sama seperti ketika teman dekat Anda meminta Anda membuatkan secangkir kopi. Anda pasti sudah hafal bagaimana cara membuat kopi karena pernah diajari oleh seseorang yang mungkin ibu, ayah, atau saudara Anda. Kalaupun Anda belum mengetahui cara membuat kopi, teman dekat Anda cukup mengajarkan sekali saja kepada Anda bahwa cara membuat kopi itu adalah dengan memasak air hingga mendidih, memasukkan gula dan kopi dengan takaran tertentu pada cangkir, kemudian menuangkan air yang telah mendidih tadi pada cangkir tersebut. Jangan lupa diaduk hingga tercampur semua. Setelah itu sebagai pelengkap, hidangkan bersama gorengan seperti pisang goreng, tahu isi lengkap dengan petis dan cabai, atau pisang molen sesuai dengan selera Anda. Bagi Anda yang merokok, juga boleh disiapkan (Ini sebenernya bahas apa toh? Kok ampe' gorengan-gorengan segala? Ha3 ^o^).
Kembali ke pokok permasalahan. Terjawab sudah kesulitan yang ada dengan dibuatnya Procedural Programming. Proses penulisan kode program menjadi lebih efisien karena sesuatu yang sama tidak perlu ditulis berulang-ulang. Cukup definisikan prosedur kerja pada sebuah fungsi yang kita buat. Saat kita membutuhkannya, cukup dengan memanggil fungsi tersebut. Untuk aplikasi dengan kapasitas menengah kebawah, adanya paradigma ini sudah cukup. Namun muncul masalah baru. Memang, dengan Procedural Programming banyak sekali permasalahan yang dapat dipecahkan. Tetapi sekali lagi masalah muncul pada aplikasi-aplikasi yang berkapasitas besar. Suatu aplikasi besar tentu memiliki masalah yang kompleks. Coba Anda bayangkan jika masalah tersebut dipecah menjadi bagian yang kecil-kecil, berapa banyak fungsi yang kita butuhkan untuk menyelesaikan tiap permasalahan yang ada? Bukankah akan menjadi banyak sekali? Dengan banyaknya fungsi tersebut, biasanya programmer akan kebingungan mendefinisikan tiap fungsi yang ada. Contohnya adalah aplikasi penghitung luas bangun matematika. Terdapat fungsi untuk menghitung luas persegi, segitiga, dan lingkaran. Lha namanya kan sama-sama "luas"? Ketika kita memanggil fungsi luas, manakah yang akan dieksekusi oleh komputer? Memang hal ini dapat diakali dengan beberapa teknik tertentu dalam pemberian nama. Namun untuk aplikasi dengan permasalahan yang kompleks, tetap saja hal ini menjadi sangat tidak efisien.
Akhirnya, para ahli mulai berpikir lagi. Dari pemikiran yang sangat keras, dihasilkan suatu paradigma baru yang kemudian diberi nama Object Oriented Programming (OOP) / Pemrograman Berorientasi Obyek. Dalam paradigma ini, masalah-masalah yang ada diumpamakan sebagai obyek-obyek yang saling berinteraksi. Tiap obyek memiliki metode sendiri dalam menyelesaikan masalahnya masing-masing. Contohnya aplikasi penghitung luas bangun matematika tadi. Permasalahan bangun matematika yang ada diumpamakan sebagai obyek yang berbeda-beda, misalnya obyek segitiga, obyek persegi, dan obyek lingkaran. Kemudian tiap obyek memiliki metode untuk menghitung luas bangunnya masing-masing. Jadi semisal kita membutuhkan si segitiga menghitung luasnya, kita tinggal berkata, "Hei segitiga, hitung luas-mu". Saat kita butuh si lingkaran menghitung luasnya, kita tinggal berkata "Hei lingkaran, hitung luas-mu". Bukankah dengan begini pemrograman menjadi lebih mudah? Programmer tidak perlu lagi menghafal nama fungsi yang dibuatnya sampai rinci karena sudah dibantu dengan penggunaan obyek yang mewakili permasalahan sebenarnya. Tetapi sebagian orang masih menganggap paradigma ini malah mempersulit keadaan. Padahal justru sebaliknya. Jadi bagi Anda yang ditakut-takuti oleh teman atau kenalan Anda bahwa OOP itu sulit, jangan langsung percaya begitu saja. Cobalah, baru Anda simpulkan sendiri. Dan nanti di bab terakhir akan sedikit saya tunjukkan bagaimana OOP menghasilkan solusi yang fantastis bagi permasalahan-permasalahan pemrograman yang ada.
3. GAMBARAN SINGKAT SISTEM OPERASI
Komputer dan bahasa pemrograman sudah kita bahas. Memang, dengan bahasa pemrograman (yang compilernya masih merupakan compiler dasar), kita sudah dapat menyuruh komputer melakukan sesuatu yang kita inginkan. Namun seberapa jauh kah? Dengan modal itu kita hanya bisa membuat komputer melakukan hal-hal yang mendasar, seperti menghitung, menerima masukan dari keyboard, atau menampilkan karakter di monitor. Bagaimana jika kita ingin komputer melakukan hal yang lebih untuk kita, misalnya menampilkan sebuah gambar di monitor? Haruskah kita menulis kode programnya dari nol? Atau ternyata pengguna bukan seorang programmer sehingga dia tidak mengerti apa-apa tentang bahasa pemrograman. Haruskah orang tersebut mempelajari pemrograman terlebih dahulu hingga mendalam hanya untuk mencoba menghitung perkalian sederhana menggunakan komputer? Apakah komputer memang hanya ditujukan untuk para programmer saja?
Pertanyaan itulah yang saya rasa muncul saat penggunaan komputer mulai merambah dunia persilatan. Bayangkan saja, jika untuk membuat suatu program sederhana yang fungsinya untuk menampilkan gambar JPEG saja kita harus menulis kode programnya dari awal. Memulai dengan koneksi awal ke perangkat keras, akses pixel di monitor, kemudian akses data yang ada di perangkat harddrive, decode file gambar, dan lain-lain, dan sebagainya. Wah, kalau kondisinya seperti itu hampir bisa dipastikan komputer yang beredar sekarang tidak jauh berbeda dengan kalkulator karena semua programmer yang membuat aplikasi-aplikasi berat menjadi gila diakibatkan stres saat menulis dan melakukan koreksi pada kode program yang dia tulis. Tapi tenang, pikiran manusia itu terus berkembang seiring berjalannya waktu. Akhirnya muncul sesuatu yang baru dalam dunia komputer pada saat itu, yaitu Sistem Operasi.
Sistem Operasi / Operating System atau yang sering disebut dengan OS saja, bisa disebut sebagai kumpulan prosedur-prosedur dasar yang bisa dibuat menggunakan bahasa pemrograman. Tetapi ingat, kata "dasar" disini tergantung zaman-nya. Di masa awal, mungkin dasar yang dimaksud hanya seperti akses ke perangkat keras, kontrol masukan dan keluaran secara dasar, atau perhitungan dasar matematika. Namun melihat Sistem Operasi yang beredar sekarang, sepertinya para pembuat sistem operasi sudah jauh menaikkan standar mereka. Sebagai contoh sistem operasi milik Microsoft Corp. yang diberi nama Windows. Saat ini, awal pemasangan sistem operasi tersebut ternyata telah mencakup di dalamnya aplikasi Web Browser, Pemutar File Multimedia, bahkan sudah terdapat Firewall. Contoh yang lain adalah sistem operasi buatan komunitas Open Source seperti distro Linux, turunan-turunan Unix, dan BSD (Berkeley System Distributed). Wah, kalau yang ini sih lebih gila lagi karena banyak di antara jenisnya yang desktop-nya bisa sampai muter-muter. Keren deh.... ^^
Perkembangan sistem operasi saat ini membuat penggunaan komputer tidak lagi hanya diperuntukkan kepada para programmer dan ahli-ahli komputer saja, tetapi juga orang yang awam terhadap teknologi komputer sekalipun. Anda tahu kenapa? Karena kini orang-orang dapat menggunakan komputer untuk menyelesaikan masalah mereka tanpa harus belajar bahasa pemrograman. Banyak sekali aplikasi-aplikasi yang memang ditujukan untuk pengguna awam. Dengan kondisi yang seperti ini, apakah kita yang ingin belajar pemrograman menjadi rugi, toh orang yang awam teknologi komputer sekalipun sudah dapat menggunakan komputer? Tentu tidak, justru sebaliknya. Dengan situasi yang seperti ini, orang-orang pasti berbondong-bondong menggunakan teknologi komputer, yang tentunya ini membuat para programmer kebanjiran klien. ^^
Secara garis besar, sebuah sistem operasi terdiri dari 5 komponen utama, yaitu:
a) Prosedur Boot. Ini merupakan prosedur awal ketika komputer dihidupkan. Berisi hal-hal yang harus dilakukan oleh komputer saat listrik mulai mengalir di syaraf-syaraf kehidupannya (Lebay Mode ON).
b) Driver. Yang ini merupakan komponen untuk berinteraksi dengan perangkat-perangkat keras. Nah, inilah yang membuat kita tidak perlu repot-repot membuat kode program sendiri setiap akan menggunakan perangkat keras. Sudah diurus oleh si sistem operasi. Coba Anda pikir, kalau setiap kita akan menggunakan flashdisk, kita harus menulis kode programnya. Wah, ampun deh.
c) Kernel. Kalau yang ini merupakan inti dari sistem operasi. Sebagai tambahan, walaupun sistem operasi yang beredar saat ini sangat banyak, tetapi sebenarnya banyak di antaranya yang menggunakan kernel yang sama loh. Sebut saja Debian, Ubuntu, atau Fedora. Mereka menggunakan sebuah kernel yang diberi nama Linux. Makanya mereka dan teman-temannya disebut distro Linux. Dan masih banyak lagi contoh lainnya.
d) Shell. Ini merupakan tampilan / interface dasar yang dimiliki oleh tiap sistem operasi (Itu loh, yang biasanya warnanya hitam, ga' ada kursor mouse-nya, cuman tulisan-tulisan ga' jelas aja. Ha3 ^o^). Contohnya seperti Command Prompt milik Windows dan Terminal milik Linux. Walaupun shell hanya merupakan interface dasar, tetapi terdapat beberapa sistem operasi yang memang tidak menyediakan GUI (Graphical User Interface) dan hanya menyediakan interface berupa shell saja, terutama sistem operasi yang difokuskan pada performance-nya ketimbang appereance-nya seperti sistem-sistem operasi untuk server website.
e) Pustaka / library / API (Application Programming Interface). Komponen ini adalah komponen yang menyediakan prosedur-prosedur standar untuk digunakan oleh para programmer dalam membuat aplikasi. Mengapa komponen ini ada? Untuk menjawab pertanyaan itu, saya ambil contoh kegunaannya bagi programmer website. Dengan adanya komponen ini, seorang programmer website tidak perlu repot-repot belajar manajemen perangkat keras untuk membuat sebuah aplikasi website. Kan kasihan kalau dia masih harus belajar memprogram perangkat keras komputer untuk membuat sebuah website. Bisa-bisa menghabiskan waktu bertahun-tahun hanya untuk membuat sebuah website sederhana. Iya kan? Selain itu, komponen ini juga merupakan penghubung antara satu aplikasi dengan aplikasi lainnya sehingga data yang ada pada sebuah aplikasi dapat berinteraksi dengan aplikasi lainnya.
Bagaimana? Sudah mengerti kah Anda tentang komponen-komponen sebuah sistem operasi? Kalau belum, mari kita coba ilustrasikan. Misalnya sistem operasi itu adalah Anda. Nah, dalam menjalankan aktivitas sehari-hari, Anda tentu punya beberapa prosedur standar, yaitu:
a) Bangun tidur. Siapa sih yang tidak pernah tidur? Saya rasa semuanya pernah. Dengan Anda bisa membaca buku ini saja, pasti Anda masih bisa bangun dari tidur Anda. Maka Bersyukurlah.... Nah, setiap bangun tidur, Anda pasti melakukan hal-hal yang sama seperti mengusap-usap mata, senam-senam kecil mungkin, atau malah tidur lagi (Ga' bener nih, ga' boleh dicontoh ya ^^)? Hal-hal yang dilakukan saat baru bangun tidur inilah yang bisa diibaratkan sebagai Prosedur Boot suatu sistem operasi.
b) Setelah bangun, bagi Anda yang tidur dengan lampu (Beh, takod-an. Ha3), pasti akan memadamkannya. Betul tidak? Atau bagi Anda yang rajin, tentu akan langsung membersihkan tempat tidur, membersihkan sesuatu yang Anda buat berantakan sebelum Anda tidur, dan mungkin juga menyapu kamar Anda. Proses inilah yang dilakukan oleh driver. Sama seperti Anda, driver melakukan kontak dengan perangkat-perangkat yang ada. Hanya saja jika bagi Anda perangkat itu adalah saklar lampu atau sapu, bagi driver perangkat itu adalah monitor, keyboard, harddrive, dan perangkat keras lainnya.
c) Setelah melaksanakan kedua hal di atas, sekarang waktunya Anda berpikir akan melakukan apa saja hari itu. Mungkin Anda ingin berbelanja, jalan-jalan, atau waktunya Anda sekolah / kuliah. Semua perencanaan dan pengaplikasiannya tentu di-handle oleh otak Anda. Otak inilah yang dapat kita ibaratkan sebagai sebuah kernel. Kernel yang merupakan inti dari sistem operasi bekerja hampir sama dengan otak Anda. Ia mengkonsep dan meng-handle apa-apa saja yang akan dilakukan oleh sistem operasi saat menerima sebuah instruksi.
d) Nah, sekarang sebelum aktivitas dilaksanakan, waktunya bersih-bersih diri dulu. Mandi pakai sabun wangi. Pakai baju yang keren biar terlihat "trendy". Dan aktivitas lainnya yang berhubungan dengan memper-elok diri. Mengapa Anda melakukan hal seperti itu? Karena Anda nantinya akan berinteraksi dengan orang lain. Jadi Anda berusaha semaksimal mungkin agar terlihat prima. Inilah yang dapat diibaratkan sebagai sebuah shell. Dia adalah komponen dasar yang dapat berinteraksi langsung dengan kita. Nantinya, shell lah yang meneruskan instruksi dari kita kepada komputer.
e) Semua sudah siap, sekarang saatnya Anda beraksi. Tunjukkan kemampuan Anda pada dunia agar orang-orang menjadi terkesima dengan Anda. Dan inilah ibarat suatu pustaka. Setiap sistem operasi dapat memiliki pustaka yang berbeda-beda, tergantung dari kemampuannya masing-masing. Sebuah sistem operasi yang dirancang untuk pengguna awam, tentu akan menggembor-gemborkan kelebihan mereka di bidang kemudahan penggunaan. Sistem operasi yang dirancang untuk sebuah server, pasti akan memamerkan sistem keamanan dan kecepatan mereka. Lalu apa yang ingin Anda pamerkan pada dunia hayo? Ada tidak? Masa' kalah dengan sistem operasi. Wkwkwk....
Dengan penjelasan tadi, mungkin Anda yang awalnya belum mengerti sistem operasi menjadi memiliki sedikit gambaran. Lalu apa sajakan sistem operasi itu? Jika pertanyaannya seperti itu, maka jawabannya adalah banyak sekali. Mungkin bagi orang awam, sistem operasi adalah Windows. Namun faktanya, sistem operasi yang ada di dunia ini ratusan, bahkan ribuan jika Anda hitung beserta sistem-sistem operasi kecil yang dibuat khusus oleh pihak-pihak tertentu. Namun walaupun jumlahnya ratusan bahkan ribuan, sepengetahuan saya inti / kernel nya hanya ada 3 buah, yaitu:
a) Windows. Kernel ini merupakan milik Microsoft Corp. Digunakan oleh sistem operasi keluarga Windows seperti Windows 98, Windows XP dan Windows 7.
b) Unix. Kernel jenis ini merupakan kernel yang dikembangkan oleh para ahli di Eropa. Contoh sistem operasi yang menggunakan kernel ini adalah keluarga BSD seperti FreeBSD, OpenBSD dan Mac (Itu loh, sistem operasi miliki Apple Corp. yang berlogo apel "kroak". He3).
c) Linux. Kalau kernel yang ini merupakan proyek open source. Sehingga banyak sekali sistem operasi yang menggunakan kernel ini karena penggunaannya untuk distribusi ulang tidak dikenakan biaya selama distribusi tersebut juga memiliki lisensi yang sama. Kernel jenis ini juga biasa disebut dengan GNU yang merupkan akronim berulang dari "GNU Not Unix". Contoh sistem operasi yang menggunakan kernel ini adalah Debian, Ubuntu, dan Fedora.
Lalu dengan sistem operasi yang begitu banyak, bahasa pemrograman apa yang harus kita pilih? Pada dasarnya, semua bahasa pemrograman itu hampir sama, selama tingkatannya sama. Jadi pilihlah bahasa pemrograman yang sesuai dengan kebutuhan dan sistem operasi yang Anda gunakan. Misalnya Anda adalah pengguna sistem operasi keluarga Windows, maka gunakanlah bahasa yang dikembangkan oleh Microsoft Corp. seperti bahasa Batch, Basic, atau C#. Jika Anda adalah pecinta open source atau fanatis Unix yang menggunakan sistem operasi seperti Ubuntu, Fedora, Mac, dan kawan-kawan, maka Anda bisa memilih bahasa pemrograman seperti C++, Python, atau Ruby. Atau mungkin Anda orangnya fleksibel sehingga menggunakan beberapa sistem operasi sekaligus, maka Anda bisa memilih bahasa-bahasa yang sifatnya "cross platform" (dapat berjalan di beberapa sistem operasi) seperti Java atau PHP. Yang jelas, karena tujuan dari buku ini bukan untuk menjelaskan satu bahasa pemrograman tertentu yang berjalan di atas platform tertentu, maka saya akan menjelaskan menggunakan bahasa yang sifatnya "cross platform" saja, yaitu dengan Java untuk pemrograman desktop-nya dan PHP untuk pemrograman web-nya.
to be continued....
________________________________________________________________________
[Klik foto utuk detil]
"Kemenangan adalah milik siapa yang siap". Studied Computer Information System.
"Kemenangan adalah milik siapa yang siap". Studied Computer Information System.
0 comments:
Post a Comment