Sejarah Singkat Lahirnya Bahasa C#
Pada akhir dekade 1990an, Microsoft membuat program
Microsoft Visual J++ sebagai percobaan untuk menggunakan Java di
dalam sistem operasi Windows untuk meningkatkan antarmuka dari
Microsoft Component Object Model (COM). Akan tetapi, akibat masalah
dengan pemegang hak cipta bahasa pemrograman Java, Sun
Microsystems, Microsoft pun menghentikan pengembangan J++, dan
beralih untuk membuat pengganti J++. Kompiler dan mesin vitualnya
sendiri menggunakan sebuah bahasa pemrograman yang bersifat
general-purpose.
Untuk menangani proyek ini, Microsoft merekrut Andres Helsberg,
yang merupakan mantan karyawan Borland, pembuat bahasa Turbo
Pascal, dan Borland Delphi, yang juga mendesain Windows Foundation
Classes (WFC) yang digunakan dalam J++.
Sebagai Hasil dari usaha tersebut, C# pertama kali diperkenalkan
pada bulan Juli 2000 sebaga sebuah bahasa pemrograman modern
berorientasi objek yang menjadi sebuah bahasa pemrograman utama di
dalam pengembangan di dalam platform Microsoft .NET Framework.
Pengalaman Helsberg sebelumnya dalam mendesain bahasa
pemrograman (Seperti Visual J++, Delphi, Turbo Pascal) dengan mudah
dilihat dalam sintaksis bahasa C#, begitu pula hal nya pada inti Common
Language untime (CLR). Dari kutipan atas interview dan makalah –
makalah teknisnya, ia menyebutkan kelemahan –kelemahan yang
terdapat pada bahasa pemrograman yang umum digunakan saat ini,
misalnya C++, Java, Delphi, ataupun Smalltalk.
Kelemahan- kelemahan yang dikemukakan itu akhirnya dijadikan
basis CLR sebagai bentukan baru untuk menutupi kelemahan –
kelemahan tersebut., dan pada akhirnya mempengaruhi desain pada
bahasa C# itu sendiri. Ada kritik yang menyatakan C# sebagai bahasa
yang berbagi akar dari bahasa-bahasa pemrograman lain.
Fitur-fitur yang diambil dari bahasa C++ dan Java adalah desain
berorientasi objek, seperti garbage collection, reflection, akar kelas
(root class), dan juga penyederhanaan terhadap pewarisan jamak
(multiple inheritance). Fitur-fitur tersebut didalam C# kini telah
diaplikasikan terhadap iterasi, properti, kejadian (event), metadata, dan
konversi antara tipe-tipe sederhana dan juga objek.
C# didesain untuk memenuhi kebutuhan akan sintaksis C++ yang
lebih ringkas dan Rapid Application Development yang tanpa batas
(dibandingkan dengan RAD yang terbatas seperti yang terdapat pada
Delphi dan Visual Basic).
Agar mampu mmpromosikan penggunaan besar-besaran dari
bahasa C#, Microsoft, dengan dukungan dari Intel Corporation dan
Hewlett-Packard, Mencoba mengajukan standarisasi terhadap bahasa
C#. Akhirnya pada bulan Desember 2001, standar pertama pun diterima
oleh European Computer Manufacturers Association atau Ecma
International (ECMA), dengan nomor standar ECMA-334. Pada
Desember 2002, standar kedua pun diadopsi oleh ECMA, dan tiga bulan
kemudian diterima oleh International Organization for Standarization
(ISO), dengan nomor standar ISO/IEC 23270:2006.
Arsitektur .NET dan .NET Framework
a. Common Language Runtime (CLR)
Konsep paling penting dalam .NET framwork adalah keberagaman
dan fungsionalitas .NET Common Language Runtime (CLR). CLR adalah
sebuah layer atau lapisan framework yang berada pada sistem operasi
dan menangani eksekusi dari aplikasi .NET. Program yang nantinya
akan dibuat tidak terkomunikasi langsung dengan Sistem Operasi, tetapi
melalui CLR terlebih dahulu.
b. MSIL (Microsoft Intermediate Language) Code
Pada saat mengkompilasi aplikasi .NET menggunakan bahasa
pemograman .NET (misalkan C#, VB.net atau C#.net), source code yang
telah anda buat tidak akan dubah langsung menjadi sebuah kode biner
executable tetapi diubah dahulu menjadi intermediate code yang
bernama MSIL, yang diinterpretasikan oleh CLR.
MSIL adalah kode sistem operasi dan kode hardware yang berdiri
sendiri. Pada saat program dieksekusi, MSIL akan mengubahnya
menjadi kode biner executable.
c. Just in Time Compilers (JITers)
Pada saat kode intermediate language membutuhkan untuk
dieksekusi, CLR akan meminta JIT compiler untuk mengompilasi IL
(Intermediate Language) ke native executable code (Exe atau DLL) yang
dirancang pada mesin atau OS tertentu. JITers pada dasarnya berbeda
sama sekali dengan compiler konvensional yang mengompilasi IL ke
Native kode hanya pada saat dibutuhkan.
Misalkan ketika sebuah fungsi dipanggil, Intermediate Language
dari function body akan diubah pada saat itu juga atau just in time. Jadi,
bagian dari kode yang tidak digunakan tidak akan diubah menjadi
native code.
Jika beberapa kode IL diubah ke native code, dan kode tersebut di
lain waktu dibutuhkan lagi, CLR akan menggunakan copy kode yang
sama (yang telah dikompilasi) tanpa harus mengompilasi ulang kode
tersebut. JITers sangat memperhatikan jenis processor dan sistem
operasi pada saat runtime. JITers dapat mengoptimasi kode dengan
sangat efisien dalam merancang sebuah aplikasi yang baik
d. The Framework Class Library (FCL)
.NET Framework menyediakan banyak sekali jenis Framework
Class Library (FCL) untuk digunakan secara serentak dalam proses
pengembangan aplikasi. FCL berisi ribuan class yang menyediakan
akses ke windows API dan fungsi pada umumnya seperti Manipulasi
String, Data struktur umum, IO, Streams, Threads, Security, Network Programing, Pemrograman Windows, Pemrograman web, data akses,
dan masih banyak lagi yang lainnya.
Pengertian sederhananya, FCL merupakan library standar besar
yang dikemas dalam satu bahasa pemrograman. Bagian terbaik dari
library ini adalah peggunaan teknik pemrograman object oriented yang
membuat teknik pengaksesan dan penggunaannya menjadi sangat
sederhana. Anda dapat menggunakan FCL pada program yang akan
dibuat hanya seperti menggunakan kelas-kelas lainnya. Anda bahkan
dapat menerapkan teknik inheritance dan polimorfisme pada kelas FCL
ini.
e. Common Language Specification
Anda mungkin sering menggunakan istilah . “NET Compliant
Language” yang berasal dari common language specification (CLS).
Microsoft telah mengeluarkan sebuah subset kecil dari spesifikasi
masing-masing bahasa yang dapat digunakan dan dapat memenuhi
standar .NET Compliant Language.
CLS pada dasarnya adalah sebuah desain bahasa yang menetapkan
standar bawah tertentu. Sebagai contoh, misalkan anda membuat
program namun tidak terdapat pointer, tidak terdapat multiple
inheritance, maupun tidak ada global variable, maka kode anda dijamin
dapat digunakan lagi pada bahasa .NET yang lain selama masih dalam
ruang lingkup CLS.
f. The Common Type System (CTS)
.NET juga mendefinisikan sebuah common type system (CTS).
Seperi CLS, CTS juga terdiri dari beberapa set standar. CTS
mendefinisikan tipe data dasar yang dipahami dan digunakan oleh IL.
Masing-masing .NET Compliant Language harus memetakan datanya
pada sebuah tipe data standar.
Hal ini yang membuat dua bahasa berkomunikasi satu sama lain
dengan cara menerima parameter untuk dan dari satu sama lain.
Misalkan, CTS mendefinisikan sebuah tipe data int (integer 32 bit) yang
dipetakan dengan bahasa C# menjadi int dan VB.NET juga akan
memetakanna menjadi tipe data integer.
g. Garbage Collection (GC)
CLR juga berisi sebuah Garbage Collector (GC) yang berjalan di
prioritas thread rendah dan memeriksa apakah terdapat alokasi ruang
memori yang tidak direferensikan. Jika Garbage Collection menemukan
beberapa data yang tidak direferensikan oleh sebuah variable, ruang
memori tersebut akan dikembalikan lagi ke sistem operasi. Kehadiran
Garbage Collector berguna untuk memudahkan programmer dalam
melacak data yang kacau.
h. .NET Framework
.NET Framework adalah kombinasi dari layer CLR, FCL, Data, dan
kelas XML, Windows, aplikasi web dan web service. Framework adalah
sebuah kerangka penopang sebuah program untuk dapat berjalan pada
suatu sistem operasi. Contohnya adalah yang biasa kita kenal
dengan .NET framework pada sistem operasi berbasis windows dan
mono framework pada sistem operasi berbasis UNIX dan Mac OS. Dan C#
bukan hanya bisa dijalankan pada sistem berbasis windows namun juga
ke sistem operasi lain dengan perantara frameworknya, analoginya
seperti berikut:
Demikian Pengenalan Bahasa Pemrograman C#, malamngoding berharap teman-teman dapat mengerti Pengenalan Bahasa Pemrograman C#, untuk pertanyaan bisa dituliskan di kolom komentar.
Terima kasih
Sumber : Modul Pemograman C# Fundamental