Belajar Bahasa C sharp/Pendahuluan

Bab I: Pendahuluan

Apa itu C#

sunting

Bahasa C# adalah sebuah bahasa pemrograman modern yang bersifat general-purpose, ‎berorientasi objek, yang dapat digunakan untuk membuat program di atas arsitektur Microsoft .NET Framework. ‎Bahasa C# ini memiliki kemiripan dengan bahasa Java, C dan C++ (selengkapnya dapat dilihat pada Sejarah ‎Bahasa C#).

Bahasa pemrograman ini dikembangkan oleh sebuah tim pengembang di Microsoft yang dipimpin oleh ‎Anders Hejlsberg, seorang yang telah lama malang melintang di dunia pengembangan bahasa ‎pemrograman karena memang ialah yang membuat Borland Turbo Pascal, Borland Delphi, dan juga Microsoft J++.

Kini, C# telah distandarisasi oleh European Computer Manufacturer Association (ECMA) dan ‎juga International Organization for Standardization (ISO) dan telah menginjak versi 3.0 yang mendukung ‎beberapa fitur baru semacam Language Integrated Query (LINQ) dan lain-lainnya.‎

Sejarah perkembangan bahasa pemrograman C#

sunting

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

sunting

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

sunting

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 pemrogramTeks tebalan 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

sunting

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 algoritme 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++

sunting

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 Cor‎poration. 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 Win‎dows.‎

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

sunting

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#

sunting

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 In‎termediate 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.‎