Saturday, January 11, 2020

Pengenalan Bahasa Pemrograman C#




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

Load comments