Jumat, 22 Maret 2013

Algoritma dan Pemrograman


Definisi Program/Pemrograman
- Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang dibuat oleh programmer (pembuat program)
Paradigma Pemrograman
1. Pemrograman Prosedural
�� Berdasarkan urutan-urutan, sekuensia
�� Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan.
�� Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.
2. Pemrograman Fungsional
�� Berdasarkan teori fungsi matematika
�� Fungsi merupakan dasar utama program.
3. Pemrograman Terstruktur
�� Secara berurutan dan terstrukrtur.
�� Program dapat dibagai-bagi menjadi prosedur dan fungsi.
�� Contoh: PASCAL dan C
4. Pemrograman Modular
�� Pemrograman ini membentuk banyak modul.
�� Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
�� Sebuah program dapat merupakan kumpulan modul-modul.
�� Contoh: MODULA-2 atau ADA
5. Pemrograman Berorientasi Obyek
�� Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/property dan method/event/prosedur yang dapat dimanipulasi
�� Contoh: C++, Object Pascal, dan Java.
6. Pemrograman Berorientasi Fungsi
�� Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.
�� Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
7. Pemrograman Deklaratif
�� Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
�� Contoh: PROLOG

Algoritma
Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi, ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction) sekitar tahun 825 M
Definisi Algoritma
- Algoritma adalah urutan langkah logis tertentu untuk memecahkan suatu masalah. Yang ditekankan adalah urutan langkah logis, yang berarti algoritma harus mengikuti suatu urutan tertentu, tidak boleh melompat-lompat. (Dari Microsoft Press Computer and Internet Dictionaary 1997, 1998)
 - Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Yang ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang dapat juga berbeda dari algoritma orang lain. Sedangkan penekanan kedua adalah tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu. (Dari Algoritma dan Struktur Data dengan C, C++, dan Java oleh Moh Sjukani hal 1)
Contoh Algoritma dalam kehidupan nyata:
- Jika seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak
pasti akan melakukan suatu langkah-langkah tertentu sehingga masakannya atau
kuenya jadi.
- Jika seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah yang
harus dilakukan adalah:
�� Menulis surat
�� Surat dimasukkan ke dalam amplop tertutup
�� Amplop ditempeli perangko secukupnya.
�� Pergi ke Kantor Pos terdekat untuk mengirimkannya.
Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.
Pelaksana algoritma adalah Komputer.
Manusia dan komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah kepada komputer berupa instruksi-instruksi yang disebut program.
Alat yang digunakan untuk membuat program tersebut adalah bahasa pemrograman.
Bahasa pemrograman sangat bermacam-macam: C, C++, Pascal, Java, C#, Basic, Perl, PHP, ASP, JSP, J#, J++ dan masih banyak bahasa lainnya. Dari berbagai bahasa pemrograman cara memberikan instruksinya berbeda-beda namun bertujuan menghasilkan output yang sama.

Beda Algoritma dan Program
Program adalah kumpulan pernyataan komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Program ditulis dengan menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari bahasa pemrograman. Beberapa pakar memberi formula bahwa :
Program = Algoritma + Bahasa (Struktur Data)
Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, demikian juga sebaliknya.
Pembuatan algoritma mempunyai banyak keuntungan di antaranya :
Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya penulisan  algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.
Beberapa hal yang perlu diperhatikan dalam membuat algoritma :
Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum.
Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalannya.
Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan pada translasi tersebut, yaitu :
a.  Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila    tidak semua bahasa pemrograman membutuhkannya.
b.  Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data.
c.  Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan dan kekurangan yang berbeda.
d.  Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman yang akan digunakan.
e.  Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Hal-hal teknis ini diperhatikan ketika mengkonversikannya menjadi program.
f.  Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter.

Jenis Proses Algoritma
1. Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2. Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3. Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4. Concurrent Process: beberapa instruksi dikerjakan secara bersama.

Contoh Algoritma
Algoritma menghitung luas persegi panjang:
1. Masukkan panjang (P)
2. Masukkan lebar (L)
3. L ← P * L
4. Tulis L
Dalam Algoritma, tidak dipakai simbol-simbol / sintaks dari suatu bahasa pemrograman tertentu, melainkan bersifat umum dan tidak tergantung pada suatu bahasa pemrograman apapun juga. Notasi-notasi algoritma dapat digunakan untuk seluruh bahasa pemrograman manapun.
Definisi Pseudo-code
Kode atau tanda yang menyerupai (pseudo) atau merupakan pejelasan cara menyelesaikan suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan algoritma.
Problem: mencari bilangan terbesar dari dua bilangan yang diinputkan
Contoh Pseudo-code:
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak, kerjakan langkah 5.
4. Tampilkan bilangan pertama
5. Tampilkan bilangan kedua
Contoh Algoritma
1. Masukkan bilangan pertama (a)
2. Masukkan bilangan kedua (b)
3. if a > b then kerjakan langkah 4
4. print a
5. print b

Langkah-langkah dalam pemrograman komputer
1. Mendefinisikan masalah
Ini merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy
(oleh Henry Ledgard):
“Semakin cepat menulis program, akan semakin lama kita dapat menyelesaikannya”.
Hal tersebut berlaku untuk permasalahan yang kompleks. Tentukan masalahnya, apa saja yang harus dipecahkan dengan menggunakan komputer, dan apa inputan serta outputnya.
2. Menemukan solusi
Setelah masalah didefinisikan, maka langkah berikutnya adalah menentukan solusi.
Jika masalah terlalu kompleks, maka ada baiknya masalah tersebut dipecah menjadi
modul-modul kecil agar lebih mudah diselesaikan.
Contohnya masalah invers matriks, maka kita dapat membagi menjadi beberapa
modul:
�� meminta masukkan berupa matriks bujur sangkar
�� mencari invers matriks
�� menampilkan hasil kepada pengguna
Dengan penggunaan modul tersebut program utama akan menjadi lebih singkat dan
mudah dilihat.
3. Memilih algoritma
Pilihlah algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
4. Menulis program
Pilihlah bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika
sudah dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan
platform lainnya.
5. Menguji program
Setelah program jadi, silahkan uji program tersebut dengan segala macam kemungkinan yang ada, termasuk error-handlingnya sehingga program tersebut akan benar-benar handal dan layak digunakan.
6. Menulis dokumentasi
Menulis dokumentasi sangat penting agar pada suatu saat jika kita akan melakukan
perubahan atau membaca source code yang sudah kita tulis dapat kita ingat-ingat lagi dan kita akan mudah membacanya. Caranya adalah dengan menuliskan komentarkomentar kecil tentang apa maksud kode tersebut, untuk apa, variabel apa saja yang digunakan, untuk apa, dan parameter-parameter yang ada pada suatu prosedur dan fungsi.
7. Merawat program
Program yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang sebelumnya tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas
baru yang dulu tidak ada.

Sabtu, 16 Maret 2013

Jaringan Komputer / Internet


Jaringan komputer (jaringan) adalah sebuah sistem yang terdiri atas komputer-komputer yang didesain untuk dapat berbagi sumber daya (printer, CPU), berkomunikasi (surel, pesan instan), dan dapat mengakses informasi(peramban web). Tujuan dari jaringan komputer adalah agar dapat mencapai tujuannya, setiap bagian dari jaringan komputer dapat meminta dan memberikan layanan (service). Pihak yang meminta/menerima layanan disebut klien (client) dan yang memberikan/mengirim layanan disebut peladen (server). Desain ini disebut dengan sistem clent server, dan digunakan pada hampir seluruh aplikasi jaringan komputer.
Dua buah komputer yang masing-masing memiliki sebuah kartu jaringan, kemudian dihubungkan melalui kabel maupun nikabel sebagai medium transmisi data, dan terdapat perangkat lunak sistem operasi jaringan  akan membentuk sebuah jaringan komputer yang sederhana. Apabila ingin membuat jaringan komputer yang lebih luas lagi jangkauannya, maka diperlukan peralatan tambahan seperti Hub, Bridge, Switch, Gateway sebagai peralatan interkoneksinya.

Sejarah Internet
Berawal pada tahun 1957, melalui Advanced Research Projects Agency (ARPA), Amerika Serikat bertekad mengembangkan jaringan komunikasi terintegrasi yang saling menghubungkan komunitas sains dan keperluan militer. Hal ini dilatarbelakangi oleh terjadinya perang dingin antara Amerika Serikat dengan Uni Soviet (tahun 1957 Soviet meluncurkan sputnik).
A. Perkembangan Pertama
Perkembangan besar Internet pertama bermula dari lahirnya konsep jaringan komputer pada tahun 1940-an di Amerika yang digagas oleh sebuah proyek pengembangan komputer MODEL I di laboratorium Bell dan group riset Universitas Harvard yang dipimpin professor  Howard Aicand. Pada mulanya proyek tersebut hanyalah ingin memanfaatkan sebuah perangkat komputer yang harus dipakai bersama. Untuk mengerjakan beberapa proses tanpa banyak membuang waktu kosong dibuatlah proses beruntun (Batch Processing), sehingga beberapa program bisa dijalankan dalam sebuah komputer dengan kaidah antrian.
Kemudian ditahun 1950-an ketika jenis komputer mulai berkembang sampai terciptanya super komputer maka sebuah komputer harus melayani beberapa tempat yang tersedia (terminal), untuk itu ditemukan konsep distribusi proses berdasarkan waktu yang dikenal dengan nama TSS (Time Sharing System).[Maka untuk pertama kalinya bentuk jaringan (network) komputer diaplikasikan.Pada sistem TSS beberapa terminal terhubung secara seri ke sebuah komputer atau perangkat lainnya yang terhubung dalam suatu jaringan (host) komputer. Dalam proses TSS mulai terlihat perpaduan teknologi komputer dan teknologi komunikasi yang pada awalnya berkembang sendiri-sendiri. Departemen Pertahanan Amerika, U.S. Defense Advanced Research Projects Agency (DARPA) memutuskan untuk mengadakan riset yang bertujuan untuk menghubungkan sejumlah komputer sehingga membentuk jaringan organik pada tahun 1969. Program riset ini dikenal dengan nama ARPANET Pada tahun 1970, sudah lebih dari 10 komputer yang berhasil dihubungkan satu sama lain sehingga mereka bisa saling berkomunikasi dan membentuk sebuah jaringan. Dan pada tahun 1970 itu juga setelah beban pekerjaan bertambah banyak dan harga perangkat komputer besar mulai terasa sangat mahal, maka mulailah digunakan konsep proses distribusi (Distributed Processing). Dalam proses ini beberapa host komputer mengerjakan sebuah pekerjaan besar secara paralel untuk melayani beberapa terminal yang tersambung secara seri disetiap host komputer. Dalam proses distribusi sudah mutlak diperlukan perpaduan yang mendalam antara teknologi komputer dan telekomunikasi, karena selain proses yang harus didistribusikan, semua host komputer wajib melayani terminal-terminalnya dalam satu perintah dari komputer pusat.
Pada tahun 1960 terjadi penemuan terpenting ARPA yaitu packet switching. Packet switching adalah pengiriman pesan yang dapat dipecah dalam paket-paket kecil yang masing-masing paketnya dapat melalui berbagai alternatif jalur jika salah satu jalur rusak untuk mencapai tujuan yang telah ditentukan. Packet switching juga memungkinkan jaringan dapat digunakan secara bersamaan untuk melakukan banyak koneksi, berbeda dengan jalur telepon yang memerlukan jalur khusus untuk melakukan koneksi. Maka ketika ARPANET menjadi jaringan komputer nasional di Amerika Serikat pada 1969, packet switching digunakan secara menyeluruh sebagai metode komunikasinya menggantikan circuit switching yang digunakan pada sambungan telepon publik.
Peta logika ARPANET

Pada tahun 1969 ketika itu Departemen Pertahanan Amerika, U.S. Defense Advanced Research Projects Agency (DARPA) memutuskan untuk mengadakan riset tentang bagaimana cara menghubungkan sejumlah komputer sehingga membentuk jaringan organik.
Program riset ini dikenal dengan nama ARPANET. Pada 1970, sudah lebih dari 10 komputer yang berhasil dihubungkan satu sama lain sehingga mereka bisa saling berkomunikasi dan membentuk sebuah jaringan.
ARPANET kemudian merancang sebuah jaringan dengan kehandalan teknologi informasi yang dapat memindahkan data dalam jumlah besar dan dalam waktu yang singkat, dan ditetapkan sebagai sebuah standar pembangunan protokol baru yang saat ini dikenal TCP/IP (Transmission Control Protocol/Internet Protocol) dan disinilah awal dari segala sejarah internet yang dikenal luas sampai saat ini.
Tujuan awal dibangunnya proyek itu adalah untuk keperluan militer. Pada saat itu Departemen Pertahanan Amerika Serikat (US Department of Defense) membuat sistem jaringan komputer yang tersebar dengan menghubungkan komputer di daerah-daerah vital untuk mengatasi masalah bila terjadi serangan nuklir dan untuk menghindari terjadinya informasi terpusat, yang apabila terjadi perang dapat mudah dihancurkan.
Pada mulanya ARPANET hanya menghubungkan 4 situs saja yaitu Stanford Research Institute, University of California, Santa Barbara, University of Utah, di mana mereka membentuk satu jaringan terpadu di tahun 1969, dan secara umum ARPANET diperkenalkan pada bulan Oktober 1972. Tidak lama kemudian proyek ini berkembang pesat di seluruh daerah, dan semua universitas di negara tersebut ingin bergabung, sehingga membuat ARPANET kesulitan untuk mengaturnya.

Oleh sebab itu ARPANET dipecah manjadi dua, yaitu "MILNET" untuk keperluan militer dan "ARPANET" baru yang lebih kecil untuk keperluan non-militer seperti, universitas-universitas. Gabungan kedua jaringan akhirnya dikenal dengan nama DARPA Internet, yang kemudian disederhanakan menjadi Internet.
Tahun 1972, Roy Tomlinson berhasil menyempurnakan program e-mail yang ia ciptakan setahun yang lalu untuk ARPANET. Program e-mail ini begitu mudah sehingga langsung menjadi populer. Pada tahun yang sama, icon @ juga diperkenalkan sebagai lambang penting yang menunjukkan “at” atau “pada”. Tahun 1973, jaringan komputer ARPANET mulai dikembangkan ke luar Amerika Serikat.
Komputer University College di London merupakan komputer pertama yang ada di luar Amerika yang menjadi anggota jaringan Arpanet. Pada tahun yang sama, dua orang ahli komputer yakni Vinton Cerf dan Bob Kahn mempresentasikan sebuah gagasan yang lebih besar, yang menjadi cikal bakal pemikiran internet. Ide ini dipresentasikan untuk pertama kalinya di Universitas Sussex.

 B. Perkembangan Kedua
Perkembangan besar Internet kedua yang dicatat pada sejarah internet adalah pengembangan lapisan protokol jaringan yang terkenal karena paling banyak digunakan sekarang yaitu TCP/IP (Transmission Control Protocol/ Internet Protocol). Protokol adalah suatu kumpulan aturan untuk berhubungan antarjaringan. Protokol ini dikembangkan oleh Robert Kahn dan Vinton Cerf pada tahun 1974. Dengan protokol yang standar dan disepakati secara luas, maka jaringan lokal yang tersebar di berbagai tempat dapat saling terhubung membentuk jaringan raksasa bahkan sekarang ini menjangkau seluruh dunia. Jaringan dengan menggunakan protokol internet inilah yang sering disebut sebagai jaringan internet.
Hari bersejarah berikutnya adalah tanggal 26 Maret 1976, ketika Ratu Inggris berhasil mengirimkan e-mail dari Royal Signals and Radar Establishment di Malvern. Setahun kemudian, sudah lebih dari 100 komputer yang bergabung di ARPANET membentuk sebuah jaringan atau network. Pada 1979, Tom Truscott, Jim Ellis dan Steve Bellovin, menciptakan newsgroups pertama yang diberi nama USENET. Tahun 1981 France Telecom menciptakan gebrakan dengan meluncurkan telpon televisi pertama, dimana orang bisa saling menelpon sambil berhubungan dengan video link.
Karena komputer yang membentuk jaringan semakin hari semakin banyak, maka dibutuhkan sebuah protokol resmi yang diakui oleh semua jaringan. Pada tahun 1982 dibentuk Transmission Control Protocol atau TCP dan Internet Protokol atau IP yang kita kenal semua. Sementara itu di Eropa muncul jaringan komputer tandingan yang dikenal dengan Eunet, yang menyediakan jasa jaringan komputer di negara-negara Belanda, Inggris, Denmark dan Swedia. Jaringan Eunet menyediakan jasa e-mail dan newsgroup USENET.
Untuk menyeragamkan alamat di jaringan komputer yang ada, maka pada tahun 1984 diperkenalkan sistem nama domain, yang kini kita kenal dengan DNS atau Domain Name System. Komputer yang tersambung dengan jaringan yang ada sudah melebihi 1000 komputer lebih. Pada 1987 jumlah komputer yang tersambung ke jaringan melonjak 10 kali lipat manjadi 10.000 lebih.
Jaringan ARPANET menjadi semakin besar sejak saat itu dan mulai dikelola oleh pihak swasta pada tahun 1984, maka semakin banyak universitas tergabung dan mulailah perusahaan komersial masuk. Protokol TCP/IP menjadi protokol umum yang disepakati sehingga dapat saling berkomunikasi pada jaringan internet ini.
Tahun 1988, Jarko Oikarinen dari Finland menemukan dan sekaligus memperkenalkan IRC atau Internet Relay Chat. Setahun kemudian, jumlah komputer yang saling berhubungan kembali melonjak 10 kali lipat dalam setahun. Tak kurang dari 100.000 komputer kini membentuk sebuah jaringan. Tahun 1990 adalah tahun yang paling bersejarah, ketika Tim Berners Lee menemukan program editor dan browser yang bisa menjelajah antara satu komputer dengan komputer yang lainnya, yang membentuk jaringan itu. Program inilah yang disebut www, atau Worl Wide Web.
Tahun 1992, komputer yang saling tersambung membentuk jaringan sudah melampaui sejuta komputer, dan di tahun yang sama muncul istilah surfing the internet. Tahun 1994, situs internet telah tumbuh menjadi 3000 alamat halaman, dan untuk pertama kalinya virtual-shopping atau e-retail muncul di internet. Dunia langsung berubah. Di tahun yang sama Yahoo! didirikan, yang juga sekaligus kelahiran Netscape Navigator 1.0.

C. Perkembangan Ketiga
Perkembangan besar Internet ketiga adalah terbangunnya aplikasi World Wide Web pada tahun 1990 oleh Tim Berners-Lee. Aplikasi World Wide Web (WWW) ini menjadi konten yang dinanti semua pengguna internet. WWW membuat semua pengguna dapat saling berbagi bermacam-macam aplikasi dan konten, serta saling mengaitkan materi-materi yang tersebar di internet. Sejak saat itu pertumbuhan pengguna internet meroket.

Sabtu, 09 Maret 2013

Sejarah dan Perkembangan Komputer


a.  Sejarah Komputer
Istilah Komputer berasal dari bahasa latin computare yang berarti alat hitung, karena awalnya komputer lebih digunakan sebagai perangkat bantu dalam hal penghitung angka – angka sebelum akhirnya menjadi perangkat multifungsi. Komputer saat ini adalah hasil evolusi panjang dari komputer zaman dahulu, yang mulanya adalah alat mekanik dan elektronik.
Perkembangan komputer dimulai dengan suatu alat hitung yang disebut sempoa atau abacus. Sempoa atau Abacus adalah alat kuno untuk penghitungan yang terbuat dari rangka kayu dengan sederetan poros yang berisi manik - manik yang bisa di geser. Alat ini digunakan untuk melakukan operasi aritmatika seperti penjumlahan, pengurangan, perkalian, pembagian dan akar kuadrat. Muncul sekitar 5.000 Tahun yang lalu di cina dan masih digunakan di beberapa tempat hingga saat ini. Abacus dapat dianggap sebagai awal mula mesin komputasi (penghitungan). Penggunanya melakukan perhitungan dengan menggunakan biji - biji yang diatur pada sebuah rak. Para pedagang di masa itu menggunakan abacus untuk menghitung transaksip perdagangan. Seiring dengan munculnya pensil dan kertas, abacus kehilangan popularitasnya.
Sedangkan orang yang pertama menemukan komputer dan mengembangkannya adalah Charles Babbage (1791-1871) seorang profesor matematika Inggris. Dia adalah seorang ilmuwan di dunia yang telah banyak memberikan kontribusi bagi kehidupan manusia, terutama perkembangan komputer. Penemuan fenomenalnya yaitu Mesin penghitung (Difference Engine no.1 ) merupakan salah satu penemuan yang paling terkenal dalam sejarah perkembangan komputer dan merupakan kalkulator otomatis pertama sebagai cikal bakal kompuer. Penemuan tersebut menjadikan Charles Babbage sebagai penemu komputer dan dijuluki sebagai bapak komputer.
Tahun 1812, Babbage memperhatikan kesesuaian antara mesin mekanik dan matematika. Mesin mekanik sangat baik dalam mengerjakan tugas yang sama berulangkali tanpa kesalahan sedangkan matematika membutuhkan pengulangan sederhana dari suatu langkah-langkah tertentu. Masalah tersebut kemudian berkembang hingga menempatkan mesin mekanik sebagai alat untuk menjawab kebutuhan mekanik. Usaha Babbage yang pertama untuk menjawab masalah ini muncul pada tahun 1822 ketika ia mengusulkan suatu mesin untuk melakukan perhitungan persamaan differensial. Mesin tersebut dinamakan Mesin Differensial. Dengan menggunakan tenaga uap, mesin tersebut dapat menyimpan program dan dapat melakukan penghitungan serta mencetak hasilnya secara otomatis.
     Setelah bekerja dengan Mesin Differensial selama sepuluh tahun, Babbage terinspirasi untuk memulai membuat komputer general-purpose (multi guna) pertama yang disebut Analytical Engine. Asisten Babbage, Augusta Ada King (1815-1842) memiliki peran penting dalam pembuatan mesin ini. Ia membantu merevisi rencana, mencari pendanaan dari pemerintah Inggris, dan mengkomunikasikan spesifikasi Analytical Engine kepada publik. Selain itu, pemahaman Augusta yang baik tentang mesin ini memungkinkannya membuat instruksi untuk dimasukkan ke dalam mesin dan juga membuatnya menjadi programmer wanita yang pertama. Pada tahun 1980, Departemen Pertahanan Amerika Serikat menamakan sebuah bahasa pemrograman dengan nama ADA sebagai penghormatan kepadanya. Analytical Engine tidak pernah selesai dikerjakan. Alat itu terdiri dari sekitar 50.000 komponen. Mesin ini menggunakan kartu-kartu berlubang-lubang (kartu perforasi) yang berisi instruksi operasi bagi mesin tersebut. Kartu-kartu berlubang atau punched card sebenarnya pertama kali digunakan untuk mengontrol mesin tenun.
Pada 1889, Herman Hollerith (1860-1929) juga menerapkan prinsip kartu berlubang-lubang untuk melakukan penghitungan. Tugas pertamanya adalah menemukan cara yang lebih cepat untuk melakukan perhitungan bagi Biro Sensus Amerika Serikat. Sensus sebelumnya pada tahun 1880 membutuhkan waktu tujuh tahun untuk menyelesaikan perhitungannya.Dengan berkembangnya populasi, Biro tersebut memperkirakan bahwa dibutuhkan waktu sepuluh tahun untuk menyelesaikan perhitungan sensus.
Hollerith menggunakan kartu perforasi untuk memasukkan data sensus yang kemudian diolah oleh alat tersebut secara mekanik. Sebuah kartu dapat menyimpan hingga 80 variabel. Dengan menggunakan alat tersebut, hasil sensus dapat diselesaikan dalam waktu enam minggu. Selain memiliki keuntungan dalam bidang kecepatan, kartu tersebut berfungsi sebagai media penyimpan data. Tingkat kesalahan perhitungan juga dapat ditekan secara drastis.
Hollerith kemudian mengembangkan alat tersebut dan menjualnya ke masyarakat luas. Ia mendirikan Tabulating Machine Company pada tahun 1896 yang kemudian menjadi International Business Machine (IBM) pada tahun 1924 setelah mengalami beberapa kali merger. Perusahaan lain seperti Remington Rand and Burroghs juga memproduksi alat pembaca kartu perforasi untuk usaha bisnis. Kartu perforasi digunakan oleh kalangan bisnis dan pemerintahan untuk pemrosesan data hingga tahun 1960.
            Setelah masa Hollerith, beberapa Insinyur membuat penemuan baru lainnya. Vannevar Bush (1890-1974) membuat sebuah kalkulator untuk menyelesaikan persamaan differensial tahun 1931. Mesin tersebut dapat menyelesaikan persamaan differensial kompleks yang selama ini dianggap rumit oleh kalangan akademisi. Mesin tersebut sangat besar dan berat karena ratusan gerigi dan poros yang dibutuhkan untuk melakukanperhitungan.
            Pada tahun 1903, John V. Atanasoff dan Clifford Berry mencoba membuat komputer elektrik yang menerapkan aljabar Boolean pada sirkuit elektrik. Pendekatan ini didasarkan pada hasil kerja George Boole (1815-1864) berupa sistem biner aljabar, yang menyatakan bahwa setiap persamaan matematik dapat dinyatakan sebagai benar atau salah. Dengan mengaplikasikan kondisi benar-salah ke dalam sirkuit listrik dalam bentuk terhubung-terputus, Atanasoff dan Berry membuat komputer elektrik pertama di tahun 1940. Namun proyek mereka terhenti karena kehilangan sumber pendanaan.

b.  Perkembangan Komputer
Ø  Komputer Generasi Pertama (1940 s.d. 1959)
Perang Dunia Kedua membuat negara-negara yang terlibat dalam perang tersebut mengembangkan komputer untuk menggunakan potensi yang dimiliki komputer untuk memenangkan perang. Hal ini meningkatkan pendanaan pengembangan komputer serta mempercepat kemajuan teknik komputer.Komputer pada masa ini digunakan untuk membantu pembuatan peluru kendali sampai pembuatan bom atom.
        Dari pihak Jerman pada tahun 1941, Konrad Zuse, seorang Insinyur Jerman membangun sebuah komputer, Z3, untuk mendesain pesawat terbang dan peluru kendali. Tetapi karya Konrad Zuse tidak banyak diketahui sebab banyak yang rusak ketika terjadi pemboman.Pihak sekutu juga membuat kemajuan pada bidang komputer. Tahun 1943, pihak Inggris menyelesaikan komputer pemecah kode rahasia yang dinamakan Colossus untuk memecahkan kode-rahasia yang digunakan Jerman. Tetapi Colossus tidak terlalu mempengaruhi perkembangan industri komputer Colossus hanya didesain untuk memecahkan kode rahasia dan bukan komputer serba guna (general-purpose computer). Selain itu keberadaan mesin ini dijaga kerahasiaannya hingga satu dekade setelah perang berakhir.                          
        Pihak Amerika juga membuat pengembangan komputer pada masa perang dunia II. Howard H. Aiken (1900-1973), seorang Insinyur dari Harvard yang bekerja saa dengan IBM, berhasil memproduksi kalkulator elektronik untuk US Navy (Angkatan Laut Amerika). Kalkulator tersebut berukuran panjang setengah lapangan sepak bola dan memiliki rentang kabel sepanjang 500 mil dengan nama The Harvard-IBM Automatic Sequence Controlled Calculator, atau Mark I. Mark I merupakan komputer relai elektronik. Mesin tersebut beroperasi dengan lambat (membutuhkan 3-5 detik untuk setiap perhitungan) dan tidak fleksibel (urutan kalkulasi tidak dapat diubah).Kalkulator tersebut dapat melakukan perhitungan aritmatika dasar dan persamaan yang lebih kompleks.
        Perkembangan komputer lainnya adalah pembuatan Electronic Numerical Integrator and Computer (ENIAC) yang dibuat oleh kerjasama antara pemerintah Amerika Serikat dan University of Pennsylvania. ENIAC dirancang oleh John Presper Eckert (1919-1995) dan John W. Mauchly (1907-1980). Terdiri dari 18.000 tabung vakum, 70.000 resistor, dan 5 juta titik solder, komputer tersebut merupakan mesin yang sangat besar yang mengkonsumsi daya sebesar 160kW. ENIAC merupakan komputer serba guna (general purpose computer) yang bekerja 1000 kali lebih cepat dibandingkan Mark I.       
Pada pertengahan 1940-an, John von Neumann (1903-1957) bergabung dengan tim University of Pennsylvania dalam usaha membangun konsep desain komputer yang hingga 40 tahun mendatang masih dipakai dalam teknik komputer. Von Neumann mendesain Electronic Discrete Variable Automatic Computer (EDVAC) pada tahun 1945 dengan sebuah memori untuk menampung program ataupun data.Teknik ini memungkinkan komputer untuk berhenti pada suatu saat dan kemudian melanjutkan pekerjaannya kembali. Kunci utama arsitektur von Neumann adalah unit pemrosesan sentral (CPU), yang memungkinkan seluruh fungsi komputer untuk dikoordinasikan melalui satu sumber tunggal.
        Tahun 1951, UNIVAC I (Universal Automatic Computer I) yang dibuat oleh Remington Rand, menjadi komputer komersial pertama yang memanfaatkan model arsitektur von Neumann tersebut. Badan Sensus Amerika Serikat dan General Electric adalah beberapa organisasi yang memiliki UNIVAC. Salah satu hasil mengesankan yang dicapai oleh UNIVAC adalah keberhasilannya dalam memprediksi kemenangan Dwilight D. Eisenhower dalam pemilihan presiden tahun 1952. Ciri khusus dari komputer Generasi pertama yaitu :
  • Penggunaan instruksi operasi yang dibuat secara spesifik untuk suatu tugas tertentu. Sehingga setiap komputer memiliki “bahasa mesin” (machine language) yang berbeda yang menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya.
  • Penggunaan tabung hampa udara.
  • Ukuran komputer yang sangat besar.
  • Menggunakan tenaga listrik sangat besar.
  • Penggunaan silinder magnetik untuk penyimpanan data.
   Beberapa komputer yang termasuk komputer generasi pertama adalah EDSAC, ACE, SEC, Havard Mark II, Havard Mark III, UNIVAC, dan lain sebagainya.

Ø  Komputer Generasi Kedua (1959 s.d. 1965)
        Komputer generasi kedua dipengaruhi oleh penemuan transistor pada tahun 1948. Transistor menggantikan tube vakum pada peralatan elektronik sehingga ukuran mesin-mesin elektronik berkurang drastis. Transistor mulai digunakan di dalam komputer mulai pada tahun 1956. Penemuan lain yang berupa pengembangan memori inti-magnetik yang membantu pengembangan komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan lebih hemat energi dibanding para pendahulunya. Mesin pertama yang memanfaatkan teknologi baru adalah superkomputer buatan IBM  bernama Stretch, dan supercomputer buatan Sprery-Rand bernama LARC. Komputer-komputer ini dikembangkan untuk laboratorium energi atom. Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy Research and Development Center di Washington D.C.
        Komputer generasi kedua menggantikan bahasa mesin dengan bahasa assembly. Bahasa assembly adalah bahasa yang menggunakan singkatan-singkatan untuk menggantikan kode biner. Pada awal 1960-an, mulai bermunculan komputer generasi kedua yang sukses di bidang bisnis, di universitas, dan di pemerintahan. Komputer-komputer generasi kedua ini merupakan komputer yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponen-komponen yang mirip dengan komputer pada saat ini yaitu printer, penyimpanan dalam disket, memory, sistem operasi, dan program. 
        Komputer generasi kedua yang terkenal adalah IBM 1401 yang telah diterima secara luas di kalangan industri. Pada tahun 1965, hampir seluruh bisnis-bisnis besar menggunakan komputer generasi kedua untuk memproses informasi keuangan. Program yang tersimpan di dalam komputer dan bahasa pemrograman yang ada di dalamnya memberikan fleksibilitas kepada komputer .Beberapa bahasa pemrograman mulai bermunculan pada saat itu adalah bahasa pemrograman Common Business-Oriented Language (COBOL) dan Formula Translator (FORTRAN).
        Bahasa pemrograman menggantikan kode mesin yang rumit dengan kata-kata, kalimat, dan formula matematika yang lebih mudah dipahami oleh manusia.Hal ini memudahkan seseorang untuk memprogram dan mengatur komputer.Berbagai macam karir baru bermunculan (programmer, analyst, dan ahli sistem komputer).Industri piranti lunak juga mulai bermunculan dan berkembang pada masa komputer generasi kedua ini. Ciri-ciri komputer generasi kedua antara lain :
  • Kapasitas memori utama cukup besar.
  • Penggunaan transistor untuk menggantikan tabung hampa.
  • Menggunakan magnetic tape dan magnetic disk yang berbentuk removable disk.
  • Mempunyai kemampuan proses real-time dan time sharing.
·       Proses operasinya lebih cepat.
·       Orientasinya pada aplikasi bisnis dan teknik.
Beberapa contoh dari komputer generasi kedua adalah IBM 7080, IBM 1400, UNIVAC SS90, UNIVAC III, PDP-1, PDP-8, Burroghts 200, dan lain sebagainya.

Ø  Komputer Generasi Ketiga (1965 s.d. 1970)
        Komputer generasi ketiga dimulai dari penggunaan batu kuarsa untuk pembuatan IC dan miniaturisasi komponen-komponen elektronik. Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC : integrated circuit) di tahun 1958.
Kemajuan komputer generasi ketiga lainnya adalah penggunaan sistem operasi (operating system) yang memungkinkan mesin untuk menjalankan berbagai program yang berbeda secara serentak dengan sebuah program utama yang memonitor dan mengkoordinasi memori komputer. Contoh komputer generasi ke III adalah System/360, Illiac V, Sinclair ZX80, PDP dan VAX. Pada masa ini juga sistem operasi UNIX muncul. Ciri-ciri komputer generasi ketiga antara lain :
  • Komponen yang dipakai adalah IC (Integrated Circuits) yang terdiri atas ratusan atau ribuan transistor berbentuk hybrid integrated circuits dan monolithic integrated circuits.
  • Proses operasinya jauh lebih cepat dan lebih tepat, kapasitas memori komputer jauh lebih besar.
  • Ukuran fisik jauh lebih kecil sehingga penggunaan listrik lebih hemat.
  • Menggunakan magnetic disk yang sifatnya random access.
  • Dapat melakukan multiprocessing dan multiprogramming.
  • Alat input-output mengalami pengembangan dengan menggunakan visual display terminal.
  • Dapat melakukan komunikasi data dari satu komputer dengan komputer lainnya.
Ø  Komputer Generasi Keempat (Sejak tahun 1970)
Perkembangan komputer generasi ke empat diawali dari kemampuan untuk memasang banyak komponen dalam suatu keping chip kecil logam mendorong turunnya harga dan ukuran komputer. Hal tersebut juga meningkatkan daya kerja, efisiensi dan keandalan komputer. Komputer yang digunakan sekarang masih merupakan komputer generasi ke empat. Penurunan harga komponen elektronik menyebabkan komputer tidak lagi menjadi dominasi perusahaan-perusahaan besar atau lembaga pemerintah. Pada pertengahan 1970-an, perakit komputer menawarkan produk komputer mereka ke masyarakat umum. Komputer-komputer ini yang disebut minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh kalangan awam. Piranti lunak yang paling populer pada saat itu adalah program word processing dan spreadsheet. Pada awal 1980-an, video game seperti Atari 2600 menarik perhatian konsumen pada komputer rumahan yang lebih canggih dan dapat diprogram.
        Pada tahun 1971 chip Intel 4004 membawa kemajuan pada IC dengan meletakkan seluruh komponen dari sebuah komputer (central processing unit, memori, dan kendali input/output) dalam sebuah chip yang sangat kecil. Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang spesifik. Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian diprogram untuk memenuhi seluruh kebutuhan yang diinginkan. Pada tahun 1981, IBM memperkenalkan penggunaan Personal Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah. Jumlah PC yang digunakan melonjak dari 2 juta unit di tahun 1981 menjadi 5, 5 juta unit di tahun 1982. Sepuluh tahun kemudian, 65 juta PC digunakan.
    IBM PC bersaing dengan Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh menjadi terkenal karena mempopulerkan sistem grafis pada komputernya, sementara saingannya masih menggunakan komputer yang berbasis teks. Macintosh juga mempopulerkan penggunaan piranti mouse. 
        Seiring dengan menjamurnya penggunaan komputer di tempat kerja, cara-cara baru untuk menggali potensial terus dikembangkan. Seiring dengan bertambah kuatnya suatu komputer kecil, komputer-komputer tersebut dapat dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu dengan yang lainnya. Komputer jaringan memungkinkan komputer tunggal untuk membentuk kerjasama elektronik untuk menyelesaikan suatu proses tugas. Dengan menggunakan pengkabelan langsung (disebut juga local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang menjadi sangat besar.