Thursday, May 6, 2010

C# 4.0 - Revolusi Baru di Dynamic Type Object

Belum lama ini gw baca artikel tentang C# 4.0 (terbaru saat tulisan ini dibuat, dengan IDE Visual Studio 2010 dan .NET FRAMEWORK 4.0). Terdapat beberapa feature baru dan perbaikan terhadap salah satu bahasa .Net yang powerful : C#


C# mengalami banyak perbaikan dan perubahan dari sejak pertama diperkenalkan tahun 2000. Pada saat itu C# 1.0 masih sederhana dan biasa.

Kemudian pada C# 2.0, diperkenalkan sebuah konsep penting mengenai "Generics", membawa kita kepada keamanan dalam membuat code (type-safety code), meningkatkan peforma, dan terlihat lebih elegan.

Lalu pada C# 3.0, diperkenalkan kepada revolusi baru mengenai LINQ (Language Integrated Query). Dengan LINQ, paradigma C# menjadi lebih fungsional (bukan sekedar baris perintah / imperative language). Revolusi ini membawa kepada multi paradigma.
Bagaimana dengan sekarang pada C# 4.0 ? Yup, revolusi "Dynamic Programming".
Jika anda pernah membaca / mengetahui / bahkan menguasai sedikit programming language seperti Phyton dan Ruby, maka anda lebih tau tentang apa itu Dynamic Programming.
C# dan beberapa bahasa lainnya seperti Java, adalah strong-type. Dengan adanya feature baru seperti ini, ada beberapa kelebihan yang bisa diperoleh, dan tentunya diimbangi oleh kekurangan yang ditimbulkan oleh revolusi ini.


Fitur baru ini (dynamic type object) sebenarnya mirip-mirip seperti var pada C# 3.0. Tetapi ada seidikit perbedaan disini.

1. var : masih bertipe strong type, artinya masih akan ada compile check. Keyword var ini hanyalah sebuah "pengenal" yang mengatakan bahwa nilai dari variable var tergantung dari apa yang ada di right-hand side (assignmentnya).

Contoh:  
- var ganteng = "Relatif";
- var jelek = 0;
Bisa diliat bahwa nilai var tergantung pada assignmentnya.. ganteng (string) dan jelek (integer).
var harus diassign dari awal dan akan terjadi compile error jika terdapat casting yang mustahil.
Selain itu juga untuk mendukung Anonymous Type pada C# 3.0
Contoh:
- var sesuatu = new { NIM = 1000778899 ; Nama = "Katsuki" };

2. dynamic
Nah pada dynamic, tidak akan terjadi compile error karena akan dijalankan pada saat runtime (sama seperti Ruby dan Phyton sebagai Dynamic Programming). Dengan kata lain, baru diketahui errornya pada saat runtime, bukan pada saat compile program.
Hmm.. hal ini sungguh berbahaya namun memiliki kelebihan jika digunakan tepat pada sasaran.. Apa itu contohnya? Well, sampai saat ini, gw sendiri belum pernah dapet case untuk menggunakan dynamic keyword.
(Maklum jam terbang masih rendah...)

Mao tau lebih banyak? Gunakan Search Engine favorit'mu. hehehe

Maaf kalo ada salah, cuman mao sharing yang saya tau :p

2 comments: