Selasa, 18 Maret 2014

Perkembangan Teori Komputasi

Perkembangan Teori Komputasi dan Implementasinya

Pada postingan kali ini , saya ingin menjelaskan tentang perkembangan komputasi modern. Ada dua hal yang akan di bahas yaitu pertama jelaskan perkembangan teori komputasi dan sebutkan implementasi" komputasi komputasi pada bidang matematika, fisika, kimia, ekonomi, geologi dan geografi.
Menurut Wikipedia, Komputasi adalah sebetulnya bisa diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakan komputer.
Berkaitan dengan perkembangan komputasi tidak terlepas dengan perkembangan panjang bit komputer dan kecepatan komputasi itu sendiri.
Asal mula sebuah PC



Mari kita lihat sejarah latar belakang sebuah PC modern, dimana diawali pada tahun 1981, kurang lebih 32 tahun. PC diperkenalkan pertama kali oleh IBM yang bekerja pada microcomputer 16-bit menggunakan Intel 8086 atau 8088 sebagai processornya dan menggunakan sistem operasi Microsoft (DOS, akhirnya Windows).



PC benar-benar mengalami perkembangan begitu jauh dimulai dari microprocessor 8-bit (seperti Commodore 64), yang cukup terkenal sampai akhir tahun 1980-an. PC yang tampak diatas, merupakan komputer hybrid (cangkokan) yang sangat menarik. Ditandai oleh peralihan dari arsitektur 8-bit ke arsitektur 16-bit. PC tersebut memuat dua processor yaitu: 8-bit Z80 dan 16-bit 8088. Sehingga dimungkinkan untuk bekerja pada beberapa sistem operasi yang berbeda, seperti CP/M dan MS-DOS 2.
Setiap processor memiliki jalur (bus) sendiri-sendiri, membagi RAM sebesar 128 KB secara bersama. Dan itu merupakan kemajuan mesin yang istimewa.

Lebar Bit 
Pertama kali microprocessor yang diproduksi oleh Intel adalah 4 bit. Ini berarti, pada suatu operasi tunggal, processor bisa melakukan proses sebanyak 4 bit panjangnya. Dengan kata lain lebar mechine word adalah 4 bit. Intel 4004 merupakan jenis processor 4-bit dengan arsitektur 4-bit.
Nantinya processor bisa memproses sebesar 8 bit dalam satu satuan waktu, seperti Intel 8008, 8080. PC merupakan pelopor komputer 16-bit. Dengan mengembangkan processor 80386-nya, mereka telah berubah menjadi arsitektur 32-bit yang masih dipakai sampai sekarang. Selanjutnya terus berkembang lebih jauh lagi dengan arsitektur 64-bit (misalnya Processor Itanium dari Intel dan Processor Athlon 64 dari AMD).

 Macam-macam Komputasi Modern
Komputasi modern terbagi tiga macam, yaitu komputasi mobile (bergerak), komputasi grid dan komputasi cloud. Penjelasan lebih lanjut dari jenis-jenis komputasi modern sebagai berikut:

Mobile Computing.


Mobile Computing atau komputasi bergerak memiliki beberapa penjelasan, salah satunya komputasi bergerak merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa kabel dan mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel. Contoh dari perangkat komputasi bergerak seperti GPS, juga tipe dari komputasi bergerak seperti smartphone dan lain sebagainya.

Grid Computing



Komputasi Grid menggunakan komputer yang terpisah oleh geografis, didistribusikan dan terhubung oleh jaringan untuk menyelesaikan masalah komputasi skala besar.
Ada beberapa daftar yang dapat digunakan untuk mengenali sistem komputasi grid, yaitu:

  • Sistem untuk koordinat sumber daya komputasi tidak dibawah kendali pusat 
  • Sistem menggunakan standart dan protocol yang terbuka 
  • Sistem mencoba mencapai kualitas pelayanan yang canggi. yang lebih baik diatas kualitas komponen individe pelayan komputasi grid. 



Cloud Computing



Komputasi Cloudmerupakan gaya komputasi yang terukut dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet. Komputasi Cloud menggambarkan pelengkap baru, konsumsi dan layanan IT berbasi model dalam internet, dan biasanya melibatkan ketentuan dari keterukuran dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

Adapun perbedaan antara komputasi mobile, komputasi grid dan komputasi cloud, dapat dilihat penjelasannya dibawah ini:

  • Komputasi mobile menggunakan teknologi komputer yang bekerja seperti handphone, sedangkan komputasi grid dan cloud menggunakan komputer. 
  • Biaya untuk tenaga komputasi mobile lebih mahal dibandingkan dengan komputasi grid dan cloud. 
  • Komputasi mobile tidak membutuhkan tempat danmudah dibawa kemana-mana, sedangkan grid dan cloud membutuhkan tempat yang khusus.
  • Untuk komputasi mobile proses tergantung si pengguna, komputasi grid proses tergantung pengguna mendapatkan server atau tidak, dan komputasi cloud prosesnya membutuhkan jaringan internet sebagai penghubungnya. 
Implementasi teori komputasi di berbagai bidang antara lain
1. Matematika
Matematika komputasi adalah salah satu cabang dari ilmu matematika yang berurusan dengan komputer. Yang dipelajari dalam kuliah ini adalah beberapa metode komputasi untuk menyelesaikan beberapa masalah numerik, antara lain: masalah-masalah persamaan non-linear, sistem persamaan linear, interpolasi, diferensiasi numerik, integrasi numerik, masalah nilai awal, masalah nilai eigen, dan sebagainya. Tentu saja, komputasi merupakan hal yang menarik untuk dipelajari karena dapat membantu memecahkan masalah-masalah matematis dengan lebih mudah dan menyenangkan.
2. Fisika
Fisika komputasi adalah studi implementasi numerik algoritma untuk memecahkan masalah di bidang fisika di mana teori kuantitatif sudah ada. Dalam sejarah, fisika komputasi adalah aplikasi ilmu komputer modern pertama di bidang sains, dan sekarang menjadi subbagian dari sains komputasi.

3.Kimia
Kimia komputasi adalah cabang kimia yang menggunakan hasil kimia teori yang diterjemahkan ke dalam program komputer untuk menghitung sifat-sifat molekul dan perubahannya maupun melakukan simulasi terhadap sistem-sistem besar (makromolekul seperti protein atau sistem banyak molekul seperti gas, cairan, padatan, dan kristal cair), dan menerapkan program tersebut pada sistem kimia nyata. Contoh sifat-sifat molekul yang dihitung antara lain struktur (yaitu letak atom-atom penyusunnya), energi dan selisih energi, muatan, momen dipol, kereaktifan, frekuensi getaran dan besaran spektroskopi lainnya. Simulasi terhadap makromolekul (seperti protein dan asam nukleat) dan sistem besar bisa mencakup kajian konformasi molekul dan perubahannya (mis. proses denaturasi protein), perubahan fase, serta peramalan sifat-sifat makroskopik (seperti kalor jenis) berdasarkan perilaku di tingkat atom dan molekul. Istilah kimia komputasi kadang-kadang digunakan juga untuk bidang-bidang tumpang-tindah antara ilmu komputer dan kimia.
4. Ekonomi
kimia memiliki teori-teori yang diterjemahkan dibidang komputer menghitung kadar-kadar zat setiap benda, yang pada akhirnya tercipta alat-alat untuk menghitung zat tersebut yang dicontrol dengan algoritma
5. Geologi
Teori komputasi biasanya digunakan untuk pertambangan, sebuah sistem komputer digunakan untuk menganalisa bahan-bahan mineral dan barang tambang yang terdapat di dalam tanah.

6.Geografi
Teori komputasi terdapat penggunaan komputasi yang diterapkan pada GIS (Geographic Information System) yang berguna untuk menyimpan, memanipulasi dan menganalisa informasi geografi.
7.Sosiologi
Teori komputasi terdapat pada Computational Sosiology yaitu penggunaan metode komputasi dalam menganalisa fenomena sosial.
8.Biologi
Terdapat pada Bioinformatika merupakan ilmu yang mempelajari penerapan teknik komputasional untuk mengelola dan menganalisis informasi biologis. Bidang ini mencakup penerapan metode-metode matematika, statistika, dan informatika untuk memecahkan masalah-masalah biologis, terutama dengan menggunakan sekuens DNA dan asam aminoserta informasi yang berkaitan dengannya. Contoh topik utama bidang ini meliputi basis data untuk mengelola informasi biologis, penyejajaran sekuens (sequence alignment), prediksi struktur untuk meramalkan bentuk struktur protein maupun struktur sekunderRNA, analisis filogenetik, dan analisis ekspresi gen. 

konsep objek terdistribusi dan object interface

Meskipun teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer namun seiring dengan perkembangannya, sistem ini dinilai tidak efisien lagi.  Dalam membuat aplikasi client server, programmer masih harus membuat fungsi-fungsi yang sama untuk aplikasi yang berbeda. Kadang kala kode program yang sama digunakan dengan melakukan copy paste dan melakukan sedikit perubahan untuk menyesuaikan dengan aplikasi yang baru dibuat. Jika ada perubahan, fungsi tersebut dalam masing-masing aplikasi harus di update satu persatu lagi. Hal ini mengakibatkan perawatan program menjadi susah dan fungsi-fungsi tersebut dapat menjadi tidak konsisten satu sama lain.

CORBA
Common Object Request Broker Architecture (CORBA) merupakan standar yang dikeluarkan oleh Object Management Group (OMG). Spesifikasi CORBA ini berisi sebuah spesifikasi  infrastruktur yang disebut Object Request Broker (ORB) yang memungkinkan aplikasi klien untuk dapat berkomunikasi dengan obyek secara remote. Spesifikasi ini meliputi antarmuka program, protokol komunikasi dan model obyek atau layanan yang memungkinkan aplikasi yang ditulis dengan berbagai macam bahasa pemrograman.
CORBA membungkus kode program yang dibuat dengan bahasa pemrograman tertentu menjadi sebuah obyek yang ditambah dengan informasi mengenai kemampuan kode program dan cara mengaksesnya. Obyek tersebut dapat dipanggil oleh program lain melalui jaringan. CORBA menggunakan interface definition languange (IDL) untuk menunjukkan interface atau antarmuka yang dapat digunakan oleh program atau obyek lain. Dari IDL tersebut CORBA akan memetakannya ke implementasi yang lebih spesifik dari masing-masing bahasa pemrograman.

COM
Component Object Model (COM) adalah teknologi yang diciptakan oleh Microsoft untuk memungkinkan komunikasi antaraplikasi. Teknologi ini sudah  disediakan untuk beberapa platform tetapi kebanyakan digunakan untuk platform Windows. Teknologi ini sudah diperkenalkan oleh microsoft pada tahun 1993 tetapi baru populer pada tahun 1997. Perkembangan teknologi COM ini bermula dari teknologi OLE (Object Linking and Embedding) yang dibuat untuk memungkinkan aplikasi dapat saling bertukar data.

DCOM
Pada tahun 1996 diperkenalkan Distributed Component Object Model (DCOM) sebagai jawaban Microsoft atas CORBA. DCOM dibandingkan dengan COM memiliki  kelebihan mampu untuk terdistribusi dan berkomunikasi antarkomponen melalui jaringan. DCOM dan CORBA saling berkompetisi untuk menjadi standar dalam distribusi komponen melalui internet. Namun dibalik kesulitan dalam hal keamanan, sebuah browser yang berjalan menggunakan teknologi http sudah dapat menggantikan teknologi tsb.

RMI
Remote Method Invocation (RMI) adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.
RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi
Langkah-Langkah Pembuatan Program dengan RMI
Dalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi remote interface. Dengan melihat pada definisi interface, seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.
Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote object melalui RMI registry.
Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah. Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client

Senin, 10 Maret 2014

Sistem Terdistribusi

Sistem terdistribusi adalah sekumpulan prosesor yang tidak saling berbagi memori atau clock dan terhubung melalui jaringan komunikasi yang bervariasi, yaitu melalui Local Area Network ataupun melalui Wide Area Network. Prosesor dalam sistem terdistribusi bervariasi, dapat berupa small microprocessorworkstationminicomputer, dan lain sebagainya. Berikut adalah ilustrasi struktur sistem terdistribusi:


Gambar 23.1. Struktur Sistem Terdistribusi
Struktur Sistem Terdistribusi

Karakteristik sistem terdistribusi adalah sebagai berikut:
  1. Concurrency of components.  Pengaksesan suatu komponen/sumber daya (segala hal yang dapat digunakan bersama dalam jaringan komputer, meliputi H/W dan S/W) secara bersamaan. Contoh: Beberapa pemakai browser mengakses halaman web secara bersamaan
  2. No global clock.  Hal ini menyebabkan kesulitan dalam mensinkronkan waktu seluruh komputer/perangkat yang terlibat. Dapat berpengaruh pada pengiriman pesan/data, seperti saat beberapa proses berebut ingin masuk ke critical session.
  3. Independent failures of components.  Setiap komponen/perangkat dapat mengalami kegagalan namun komponen/perangkat lain tetap berjalan dengan baik.
Ada empat alasan utama untuk membangun sistem terdistribusi, yaitu:
  1. Resource Sharing.  Dalam sistem terdistribusi, situs-situs yang berbeda saling terhubung satu sama lain melalui jaringan sehingga situs yang satu dapat mengakses dan menggunakan sumber daya yang terdapat dalam situs lain. Misalnya, user di situs A dapat menggunakan laser printer yang dimiliki situs B dan sebaliknya user di situs B dapat mengakses file yang terdapat di situs A.
  2. Computation Speedup.  Apabila sebuah komputasi dapat dipartisi menjadi beberapa subkomputasi yang berjalan bersamaan, maka sistem terdistribusi akan mendistribusikan subkomputasi tersebut ke situs-situs dalam sistem. Dengan demikian, hal ini meningkatkan kecepatan komputasi (computation speedup).
  3. Reliability.  Dalam sistem terdistribusi, apabila sebuah situs mengalami kegagalan, maka situs yang tersisa dapat melanjutkan operasi yang sedang berjalan. Hal ini menyebabkan reliabilitas sistem menjadi lebih baik.
  4. Communication.  Ketika banyak situs saling terhubung melalui jaringan komunikasi, user dari situs-situs yang berbeda mempunyai kesempatan untuk dapat bertukar informasi.
Tantangan-tantangan yang harus dipenuhi oleh sebuah sistem terdistribusi:
  1. Keheterogenan perangkat/multiplisitas perangkat.  Suatu sistem terdistribusi dapat dibangun dari berbagai macam perangkat yang berbeda, baik sistem operasi, H/W maupun S/W.
  2. Keterbukaan.  Setiap perangkat memiliki antarmuka (interface) yang di-publish ke komponen lain. Perlu integrasi berbagai komponen yang dibuat oleh programmer atau vendor yang berbeda
  3. Keamanan.  Shared resources dan transmisi informasi/data perlu dilengkapi dengan enkripsi.
  4. Penangan kegagalan.  Setiap perangkat dapat mengalami kegagalan secara independen. Namun, perangkat lain harus tetap berjalan dengan baik.
  5. Concurrency of components.  Pengaksesan suatu komponen/sumber daya secara bersamaan oleh banyak pengguna.
  6. Transparansi.  Bagi pemakai, keberadaan berbagai perangkat (multiplisitas perangkat) dalam sistem terdistribusi tampak sebagai satu sistem saja.


Gambar 23.2. Local Area Network
Local Area Network

Dalam sistem operasi terdistribusi, user mengakses sumber daya jarak jauh (remote resources) sama halnya dengan mengakses sumber daya lokal (local resources). Migrasi data dan proses dari satu situs ke situs yang lain dikontrol oleh sistem operasi terdistribusi.
Berikut ini adalah fitur-fitur yang didukung oleh sistem operasi terdistribusi:
  1. Data Migration.  Misalnya, userdi situs A ingin mengakses data di situs B. Maka, transfer data dapat dilakukan melalui dua cara, yaitu dengan mentransfer keseluruhan data atau mentransfer sebagian data yang dibutuhkan untuk immediate task.
  2. Computation Migration.  Terkadang, kita ingin mentransfer komputasi, bukan data. Pendekatan ini yang disebut dengan computation migration
  3. Process Migration.  Ketika sebuah proses dieksekusi, proses tersebut tidak selalu dieksekusi di situs di mana ia pertama kali diinisiasi. Keseluruhan proses, atau sebagian daripadanya, dapat saja dieksekusi pada situs yang berbeda. Hal ini dilakukan karena beberapa alasan: Load balancing. Proses atau subproses-subproses didistribusikan ke jaringan untuk memeratakan beban kerja. Computation speedup. Apabila sebuah proses dapat dibagi menjadi beberapa subproses yang berjalan bersamaan di situs yang berbeda-beda, maka total dari process turnaround time dapat dikurangi. Hardware preference. Proses mungkin mempunyai karakteristik tertentu yang menyebabkan proses tersebut lebih cocok dieksekusi di prosesor lain.Misalnya, proses inversi matriks, lebih cocok dilakukan di array processor daripada di microprocessor Software preference. Proses membutuhkan software yang tersedia di situs lain, di mana software tersebut tidak dapat dipindahkan atau lebih murah untuk melakukan migrasi proses daripada software Data access.
Sistem operasi terdistribusi (distributed operating system) menyediakan semua fitur di atas dengan kemudahan penggunaan dan akses dibandingkan dengan sistem operasi jaringan (network operating system).
Berikut adalah dua tipe jaringan yang dipakai dalam sistem terdistribusi:
  • Local Area Network (LAN). LAN muncul pada awal tahun 1970-an sebagai pengganti dari sistem komputer mainframe. LAN, didesain untuk area geografis yang kecil. Misalnya, LAN digunakan untuk jaringan dalam sebuah bangunan atau beberapa bangunan yang berdekatan. Umumnya, jarak antara situs satu dengan situs yang lain dalam LAN berdekatan. Oleh karena itu, kecepatan komunikasinya lebih tinggi dan peluang terjadi kesalahan (error rate) lebih rendah. Dalam LAN, dibutuhkan high quality cable supaya kecepatan yang lebih tinggi dan reliabilitas tercapai. Jenis kabel yang biasanya dipakai adalah twisted-pair dan fiber-optic. Berikut adalah ilustrasi dari Local Area Network:
  • Wide Area Network.  WAN muncul pada akhir tahun 1960-an, digunakan sebagai proyek riset akademis agar tersedia layanan komunikasi yang efektif antara situs, memperbolehkan berbagi hardware dansoftware secara ekonomis antar pengguna. WAN yang pertama kali didesain dan dikembangkan adalah Arpanet yang pada akhirnya menjadi cikal bakal dari Internet. Situs-situs dalam WAN tersebar pada area geografis yang luas. Oleh karena itu, komunikasi berjalan relatif lambat dan reliabilitas tidak terjamin. Hubungan antara link yang satu dengan yang lain dalam jaringan diatur oleh communication processor. Berikut adalah ilustrasi dari Wide Area Network