Sebelum tahun 1970-an (atau lebih lama), menggunakan komputer seperti saat ini—dari mulai mengetik hingga main game komputer—merupakan sesuatu hal yang mustahil. Revolusi yang terjadi di dalam dunia komputer membutuhkan dua tahap agar dapat sampai kepada zaman seperti sekarang, yakni:
1. saat komputer dibangun untuk membantu para ilmuwan untuk menyelesaikan tugas-tugas ilmiahnya, dan
2. turunnya harga komputer secara signifikan dan dapat digunakan oleh para pengguna yang bukan programmer, yang berlangsung beberapa dekade setelah tahap pertama selesai.
Pengguna awam komputer pun akhirnya "dilahirkan", dan sejak itu programmer dan pengguna merupakan dua buah entitas yang sama sekali berbeda, dan kurang begitu dapat berkomunikasi satu dengan lainnya.
Awal-awal pemrograman komputer digital
Komputer digital yang dapat diprogram pertama kali dibuat pada tahun 1930-an. Maksud dari "komputer digital" di sini adalah bahwa komputer-komputer tersebut bekerja dengan menggunakan angka-angka diskrit (yang memiliki batasan yang jelas), seperti halnya 0, 1, nilai π (3.14159) dan nilai-nilai angka lainnya. Sementara itu, maksud dari "komputer yang dapat diprogram" adalah komputer dapat melakukan operasi-operasi matematika dengan berdasarkan instruksi-instruksi yang disebut dengan program. Untuk beberapa tahun semenjak itu, program-program komputer ditulis di atas kertas yang dilubangi (disebut sebagai punched-card) atau medium-medium lainnya. Akhirnya, perangkat fisik komputer pun disebut sebagai perangkat keras (hardware), sementara instruksi-instruksi yang ditulis di atas punched card atau medium lainnya dikenal dengan perangkat lunak (software). Dinamai "perangkat lunak", karena memang memiliki sifat mudah diubah. Kita tidak harus membangun komputer secara keseluruhan untuk melakukan jenis perhitungan yang berbeda. Sementara itu, perangkat keras didesain untuk melakukan beberapa jenis operasi aritmetika dan logika. Operasi mana yang dapat dilakukan oleh perangkat keras dan bagaimana urutan operasi tersebut, diatur oleh kode-kode program. Pada saat program dijalankan, komputer juga disebut sedang "mengeksekusi program", yakni saat komputer membaca kode dan melakukan instruksi yang disuruhkan kepadanya.
Untuk dekade-dekade awal perkembangan komputer digital, hubungan antara perangkat keras dan perangkat lunak sangatlah erat. Setiap mesin memiliki instruksinya sendiri-sendiri yang kadang tidak cocok dengan mesin lainnya. Untuk mentransfer sebuah program dari satu mesin ke mesin lainnya yang lebih baru dan tentunya lebih cepat, program tersebut harus ditulis ulang dengan semua kode-kodenya yang baru. Nah, kode-kode yang hanya dimiliki oleh mesin tertentu ini dinamakan dengan kode mesin (machine code) atau bahasa mesin (machine language). Untuk lebih cepat mengingat instruksi-instruksi dalam kode mesin, para desainer pun kemudian membentuk sebuah cara dengan menyamakannya dengan sebuah kata tertentu (umumnya berupa singkatan dalam bahasa Inggris), yang kemudian berevolusi menjadi bahasa rakitan atau assembly language.
Munculnya bahasa pemrograman tingkat tinggi
Pada awal tahun 1950-an, para desainer pun mencoba untuk mendesain bahasa komputer yang umum yang program hasilnya tidak hanya dapat berjalan di mesin-mesin tertentu saja. Muncullah bahasa pemrograman tingkat tinggi atau high-level programming language. Disebut demikian untuk membedakannya dengan kode mesin yang disebut sebagai bahasa pemrograman tingkat rendah atau low-level programming language. Tren yang ada adalah kemunculan beberapa bahasa pemrograman seperti FORTRAN, COBOL, BASIC, dan masih banyak lagi yang lainnya. Beberapa bahasa pemrograman tersebut masih terus-terusan digunakan hingga saat ini. Sebagai contoh, FORTRAN (akronim dari Formula Translator) masih sering digunakan oleh para ilmuwan dan para insinyur bidang teknik; COBOL (akronim dari Common Business-Oriented Language) juga sering digunakan dalam institusi-institusi finansial; dan bahasa BASIC (akronim dari Beginner’s All-purpose Symbolic Instruction Code) juga masih banyak digunakan hingga saat ini, meskipun terjadi perubahan yang sangat signifikan dari ketika bahasa tersebut dipublikasikan pertama kali pada tahun 1963.
Program-program komputer yang dibangun dengan menggunakan bahasa FORTRAN, COBOL, BASIC, atau bahasa tingkat tinggi lainnya pada dasarnya adalah berisi berkas teks yang terdiri atas sekumpulan pernyataan yang ditulis di dalam bahasa pemrograman tertentu, dengan beberapa peraturan sintaksis, semantik dan gramatika yang didefinisikan di dalam bahasa pemrograman. Karena komputer hanya dapat menjalankan machine code, maka program yang ditulis di dalam bahasa pemrograman tingkat tinggi harus terlebih dahulu diterjemahkan ke dalam machine code sebelum dieksekusi. Proses penerjemahan ini dapat dilakukan baik itu dengan menggunakan teknik translasi (alat bantunya disebut dengan translator), teknik interpretasi (alat bantunya disebut interpreter), atau dengan menggunakan teknik kompilasi (alat bantunya disebut dengan compiler). Teknik translasi merupakan teknik kuno yang menerjemahkan keseluruhan kode bahasa pemrograman menjadi machine code; teknik kompilasi merupakan evolusi dari teknik translasi di mana kode dalam bahasa pemrograman dipisah-pisah ke dalam beberapa berkas untuk kemudian diterjemahkan dan dijadikan machine code, sementara teknik interpretasi merupakan sebuah teknik di mana eksekusi dan translasi dilakukan secara berbarengan (bersama-sama).
Bahasa pemrograman lainnya yang dikembangkan selama tahun 1950-an tapi sudah tidak digunakan lagi adalah ALGOL (akronim dari Algorithmic Programming Language). ALGOL memang sudah tidak digunakan lagi, tapi memberikan dampak yang signifikan untuk beberapa bahasa pemrograman lainnya di dalam sejarah perkembangan bahasa pemrograman komputer. ALGOL didesain pertama kali pada akhir tahun 1950-an oleh sebuah komite internasional, untuk kemudian diperbaiki pada tahun 1960 dan 1968. Meskipun saat ini bahasa tersebut mati seolah lenyap ditelan bumi, jiwanya masih hidup di dalam bahasa pemrograman tingkat tinggi yang sekarang banyak digunakan, seperti Pascal, PL/1, dan Bahasa C.
Munculnya C
Bahasa C dilahirkan di Bell Telephone Laboratories (atau sering disebut sebagai Bell Labs saja). Sulit membayangkan dunia modern saat ini jika tidak ada pengaruh dari Bell Labs. Pada tahun 1947, transistor ditemukan di Bell Labs, dan juga sistem operasi yang sekarang banyak digunakan di dalam komputer korporat (UNIX) juga dibuat di sana. Untuk beberapa tahun, ada sebuah bahasa pemrograman yang sangat dekat dengan sistem operasi UNIX, yang disebut dengan bahasa C, yang didesain oleh Dennis Ritchie dan Brian Kernighan. Mengapa disebut hanya C saja? Bahasa C disebut demikian mengingat bahasa tersebut adalah turunan dari bahasa B, dan bahasa B merupakan pemendekan dari Basic CPL, sementara CPL sendiri adalah sebuah bahasa pemrograman yang merupakan singkatan dari Combined Programming Language.
Meskipun populer, bahasa C terkesan lebih rumit jika dibandingkan dengan bahasa pemrograman lainnya, khususnya jika digunakan oleh para pemrogram pemula. Ketika ALGOL dan banyak turunan ALGOL menggunakan kata-kata yang mudah diingat seperti BEGIN dan END untuk membatasi sebuah seksi dalam instruksi program, bahasa C malah menggunakan tanda kurung keriting ({ dan }). Beberapa operasi juga disederhanakan, bahkan banyak singkatannya yang cukup membingungkan para programmer pemula. Contoh yang sering digunakan adalah printf, dan scanf. Meskipun demikian, program-program yang ditulis dalam bahasa C seringnya lebih efisien dibandingkan dengan bahasa pemrograman lainnya, yang artinya program-program dalam bahasa C diterjemahkan ke dalam machine code dalam jumlah yang relatif lebih sedikit jika dibandingkan dengan program yang ditulis dalam bahasa pemrograman lainnya. Salah satu bagian yang paling canggih dari bahasa C adalah bahwa bahasa C memiliki "pointer", selain tentunya "variabel" dan "konstanta". Istilah Pointer dalam bahasa pemrograman merujuk kepada alamat-alamat memori yang mengizinkan para programmer untuk melakukan beberapa tugas secara jauh lebih efisien, dengan melibatkan bit, byte, dan word memori. Karenanya, banyak orang menyebut bahasa C sebagai "High-level Assembly language, atau bahasa rakitan tingkat tinggi.
Meskipun bahasa C masih merupakan bahasa pemrograman yang populer, bahasa tersebut saat ini dapat dikatakan telah "kadaluwarsa". Saat ini, bahasa tersebut diklasifikasikan ke dalam "bahasa pemrograman prosedural tradisional" (traditional procedural programming language), sebuah istilah yang merujuk kepada struktur program-program dalam bahasa C. Umumnya sebuah program bahasa C terdiri atas banyak prosedur (juga sering disebut sebagai fungsi/function atau subrutin/subroutine), yang setiap prosedur tersebut merupakan bagian dari kode yang melakukan beberapa tugas tertentu atau merupakan implementasi dari algoritma tertentu. Prosedur-prosedur tersebut dapat bekerja dengan data dalam beberapa cara. Data adalah kumpulan angka atau teks atau bahkan gabungan antara keduanya. Dalam bahasa pemrograman prosedural tradisional, kodelah yang memproses data menjadi output.
Munculnya C++
Akan tetapi akhir-akhir ini, banyak programmer cenderung memilih "bahasa pemrograman berorientasi objek"—atau object oriented programming (OOP). Permulaan munculnya bahasa pemrograman berorientasi objek sering diasosiasikan dengan munculnya bahasa Smalltalk, sebuah bahasa pemrograman yang dikembangkan di Palo Alto Research Center (PARC), yang merupakan sebuah laboratorium penelitian yang didirikan oleh Xerox Corporation. Selain Smalltalk, PARC juga menelurkan banyak inovasi lainnya, seperti halnya mouse dan juga antarmuka grafis (Graphical User Interface) yang pertama kali diimplementasikan di dalam sistem Xerox Star, yang kemudian diadopsi oleh Apple Macintosh dan juga Microsoft Windows.
Dalam bahasa pemrograman berorientasi objek, para programmer tidaklah membuat prosedur, tetapi mereka membuat kelas (class), dan dari kelas-kelas tersebut muncullah objek (object), yang dapat berupa kode saja, data saja atau kombinasi dari kode dan data. Daripada membuat prosedur-prosedur yang dikhususkan untuk bekerja dengan data, "data" dalam bahasa pemrograman berorientasi objek memiliki perangkat untuk bekerja dengan dirinya sendiri, sehingga dapat dikatakan data bisa memproses dirinya sendiri. Perubahan perspektif ini membawa angin segar bagi para pemrogram, karena menulis satu buah kode yang dapat digunakan dalam beberapa tugas pemrograman telah menjadi lebih mudah.
Akhirnya, beberapa programmer pun mencoba untuk menciptakan sebuah versi bahasa C yang mendukung konsep bahasa pemrograman berorientasi objek. Dan, satu-satunya yang sangat populer dari usaha mereka, lagi-lagi, adalah bahasa pemrograman yang dikembangkan di Bell Laboratories pada tahun 1982 oleh Bjarne Stoustrup. Bahasa yang dikembangkannya kini dikenal dengan bahasa C++ (dibaca C plus-plus), di mana nama tersebut merupakan "pelesetan", karena dalam bahasa C dan turunannya dua buah tanda plus akan menambahkan 1 ke dalam sebuah angka atau variabel. Akan tetapi, C++ juga memiliki masalahnya sendiri. Dalam teorinya, C++ adalah bahasa C yang ditambahi dukungan konsep "berorientasi objek", sehingga C++ tidaklah menggantikan bahasa C.
Munculnya Java
Pada tahun 1992, Sun Microsystems membuat Java, sebuah bahasa pemrograman berorientasi objek yang dibuat berbasiskan bahasa C, dengan perbedaan yang signifikan dari bahasa pemrograman C++. Bahasa Java telah membersihkan beberapa sintaksis yang dianggap kurang bagus yang terdapat di dalam bahasa C++ dan membuang beberapa hal yang “berbahaya” dari bahasa C, tetapi tetap mempertahankan “kerumitan” yang ditawarkan oleh bahasa C.
Munculnya C#
Pada tahun 2000, Microsoft pun merilis bahasa C# (dibaca C Sharp), yang secara umum didesain oleh Anders Hejlsberg, yang juga lagi-lagi melanjutkan penamaan yang diplesetkan. Simbol pagar (#) yang digunakan dalam C#, secara sekilas terlihat seperti empat buah plus-plus yang disusun sedemikian rupa. Selain itu, di dalam notasi musik, tanda pagar memang menunjukkan nada yang lebih tinggi dibandingkan dengan nada yang tidak memiliki pagar—sehingga C# lebih tinggi dibandingkan C.
Seperti halnya bahasa Java, bahasa C# telah membuang beberapa fitur berbahaya dari bahasa C. Memang, pointer belum sepenuhnya "dicabut" dari C#, tapi sebagian besar pemrograman dengan menggunakan bahasa C# tidak membutuhkan pointer secara ekstensif, seperti halnya C dan C++. Persamaan lainnya antara Java dan C# mencakup peran dari kompiler. Biasanya, kompiler menerjemahkan kode sumber (berkas teks yang berisi bahasa pemrograman tingkat tinggi) ke dalam kode mesin. Kode mesin tersebut membentuk sebuah berkas yang dapat dieksekusi (executable atau EXE), yang berupa sebuah berkas yang siap untuk dijalankan kapan saja secara langsung oleh komputer. Tetapi, karena kode mesin hanya diasosiasikan dengan sebuah jenis mesin tertentu saja, berkas yang dapat dieksekusi tersebut hanya dapat berjalan di atas satu jenis komputer saja. Inilah sebabnya mengapa kita tidak dapat menjalankan secara langsung program yang sama yang berjalan di atas sistem operasi Windows di atas sistem operasi GNU/Linux, Apple Macintosh atau sistem operasi lainnya, dan begitu pula sebaliknya.
Alat bantu kompiler yang digunakan oleh C# tidak menerjemahkan kode sumber ke dalam kode mesin, tetapi hanya menerjemahkan ke dalam sebuah bahasa perantara atau Intermediate Language (disingkat menjadi IL), yang merupakan sebuah jenis kode mesin hanya saja telah digeneralisasikan. Ketika kita hendak menjalankan program di atas sebuah mesin, maka IL akan diterjemahkan ke dalam kode mesin secara keseluruhan. Dilihat dari perspektif pengguna, proses translasi ini tidak terlihat. Tetapi, dalam teorinya, ternyata di balik itu terdapat proses dua langkah rumit yang mengizinkan program dengan bahasa IL yang sama untuk berjalan di atas mesin yang berbeda. Selain itu, sebuah program dalam bentuk IL dapat diuji lebih mudah oleh sistem operasi dari keberadaan kode yang merusak atau kode yang mencurigakan. Kemampuan ini telah menjadi lebih penting saat program tersebut dipertukarkan melalui jaringan publik, seperti halnya Internet.
Bahasa C, C++, Java dan C# kini dikenal dengan sebutan "keluarga besar bahasa pemrograman C" atau "bahasa pemrograman berbasis bahasa C". C++ mengandung semua hal yang dimiliki oleh C tetapi memiliki fitur yang tidak dimiliki oleh C, sementara Java dan C# meskipun masih berbasis bahasa C, keduanya tidaklah serta-merta merupakan pengganti dari bahasa C, dan antara bahasa Java dan C# memiliki kesamaan dalam berbagai bidang, ketimbang mirip dengan bahasa C++. Meskipun demikian, semuanya menggunakan banyak sintaksis yang mirip, seperti void, int, struct, dan lain sebagainya.
src="http://js-kit.com/ratings.js">