Archive

Archive for the ‘Metro Style’ Category

Going Native untuk C# dan .NET Developer

February 29, 2012 1 comment

Beberapa bulan belakangan ini Microsoft dengan gencar menggalakkan program Going Native atau sering juga disebut sebut C++ Renaissance. Hal ini tentu menarik perhatian banyak programmer managed code (c# .net). Ada mungkin yang merasa terusik dengan kebangkitan kembali c++, ada juga yang skeptic dsb.

Sebelum memberikan banyak komentar mengenai Going Native ini, mungkin terlebih dahulu kita harus terlebih dahulu mengakui bahwa software di dunia ini paling banyak ditulis dengan c. Sebut saja operating system linux dan windows. Sehingga bagaimanapun kita tidak akan lepas dari native code.

Dunia Windows

Saya bekerja di lingkungan Windows, wajar saja karena saya adalah .NET developer. Sistem operasi Windows tentu saja tidak dapat dipungkiri yang paling banyak penggunanya. So we have to face it. We’re living in Windows World.

Code base dari Windows sendiri banyak ditulis dengan menggunakan C. Seiring dengan berjalannya waktu maka code c tersebut dibungkus dengan menggunakan C++ sehingga terlihat Object Oriented. – -“

Tetapi tetap saja native dari C tidak hilang.

Untuk sejenak kita tinggalkan dunia .Net dan kilas balik ke dunia sebelumnya dimana Win32 adalah segalanya. Anda akan berkenalan dengan MFC, COM dan ATL. Kesemuanya itu familiar untuk kalangan Win32 programmer.

.NET dan keterbatasannya

Sejak kemunculan .NET framework maka banyak orang beranggapan bahwa C++ sudah tidak relevan lagi di dunia industry. Hal ini bisa jadi benar tergantung di lingkungan mana orang tersebut berada. Jika kesehariannya pekerjaannya adalah membuat business application yang berkutat dengan data,data dan data binding ? Maka tidak ada gunanya untuk menggunakan c++ untuk hal tersebut, karena salah satu inti dari software development adalah produktifitas dari programmer.

Tetapi…. Kadang kala kita akan berhubungan dengan kasus dimana .NET mencapai keterbatasannya. Tidak semua Win32 API di ekspose ke managed c#. Kadang kala kita harus membuat wrapper untuk mengakses Win32 API tersebut.

Meskipun Microsoft sudah menyediakan alternative untuk menutupi kekurangan managed code tersebut dengan menyediakan Windows API Code Pack. Tetap library tersebut tidak mencakup keseluruhan dari Win32 API. Kita juga tidak dapat mengharapkan Microsoft untuk menulis ulang dari library tersebut sepenuhnya ke c#. Coba lihat Visual Studio 2010. Visual Studio 2010 memanfaatkan ketangguhan dari WPF and XAML. Tetapi tetap saja code native sebelumnya tidak bakalan dibuang begitu saja. Native code still exist. That’s the point. Library tersebut pasti di reuse dan di wrap sehingga dapat diakses dari .NET.

http://archive.msdn.microsoft.com/WindowsAPICodePack

http://windowsteamblog.com/windows/b/developers/archive/2009/05/18/windows-7-managed-code-apis.aspx

http://windowsteamblog.com/windows/b/developers/archive/2010/04/27/windows-api-code-pack-past-present-and-future.aspx

http://www.microsoftpdc.com/2009/CL12

Suatu saat mungkin anda akan merasakan hal yang sama ketika dihadapkan kepada kasus dimana .NET tidak dapat menyelesaikan masalah anda sepenuhnya. Saya juga pernah mengalaminya ketika mengerjakan tugas kantor yang berhubungan dengan Video dan Audio processing. Pada akhirnya tetap saja kita harus mengakses dan menggunakan library Win32, COM dengan menggunakan interoperability.

Interoperability juga harus dilakukan dengan hati2 karena kita bisa kena performance penalty jika melakukannya sembarangan.

Beberapa website ini akan memberikan anda gambaran dan pembuktian mengenai keterbatasan .NET dalam beberapa hal sehingga membutuhkan c++.

http://www.streamcoders.com/

http://wpfmediakit.codeplex.com/

http://jeremiahmorrill.com/

Ada beberapa cara untuk melakukan interop .NET ke C++. Saya hanya akan memberikan pointer kepada anda untuk melakukan eksplorasi sendiri.

http://blogs.microsoft.co.il/blogs/sasha/archive/2008/02/16/net-to-c-bridge.aspx

http://msdn.microsoft.com/en-us/library/aa730837(v=vs.80).aspx

http://stackoverflow.com/questions/1933210/c-cli-why-should-i-use-it

Apakah anda sudah dapat menerima mengapa managed guy juga membutuhkan native code ?

Tentu saja saya akan melanjutkan inception ini 🙂

Dari penjelasan di atas saya akan memberikan beberapa point dimana kita membutuhkan native c++. Seperti yang kita ketahui bahwa c++ merupakan bahasa yang dekat ke mesin, memiliki abstraksi yang bagus tanpa mengorbankan performance. Sehingga c++ sangat bagus untuk hal-hal berikut

  1. Mengakses Operating System resource,
  2. Hardware
  3. Graphical processing
  4. Computing power
  5. Game programming dengan DirectX
  6. Mengunakan code yang sudah ada dan ditulis dengan menggunakan c, c++

Saya tidak mengatakan bahwa kita harus sepenuhnya pindah agama ke c++. Saya hanya mengingatkan  bahwa kita sebaiknya mempersiapkan diri jika dihadapkan dengan keterbatasan managed code. Saya berharap agar kita dapat mengantisipasi hal ini.

C++11

C++ sendiri sudah mengalami perubahan yang sangat besar belakangan ini. C++11 yang baru saja disahkan akhir tahun lalu benar-benar berbeda dengan c++ yang dulu anda kenal. Seperti yang dikatakan oleh pembuatnya Bjarne Stroustrup, c++11 feels like a new language. Jika anda merupakan programmer c++ veteran maka anda dapat mengupgrade pengetahuan anda mengenai perkembangan yang ada. Jika anda merupakan pendatang baru maka anda dapat saja langsung belajar style baru dengan c++11.

Learning something new wouldn’t hurt right ?

Windows 8

Dengan datangnya Windows 8 dengan MetroStyle UI yang diprediksi bakalan release tahun ini, semakin membuat dunia Windows bervariasi. JavaScript dan HTML developer sekarang sudah menjadi first class language untuk melakukan pembangunan aplikasi MetroStyle. Apakah ini membuat c# dan c++ menjadi tidak relevant lagi ?

Tentu saja tidak.

Masing-masing developer dapat memilih alat yang dirasa sesuai dan nyaman digunakan. Tapi…

Satu hal yang pasti adalah keterbatasan di JavaScript, C# tetap masih ada di MetroStyle Apps. Sama saja seperti kasus di Windows sebelumnya. Kedatangan WinRT mungkin membawa angin segar bagi Windows Developer yang tidak familiar dengan COM dan kerumitannya. Tetapi tetap saja untuk saat ini tidak semua Win32 yang dibungkus oleh WinRT.Sebagian harus diakses langsung dengan menggunakan Win32 atau kita harus membuat WinRT component dan mengaksesnya dari JavaScript atau C#.
Tidak jauh berbeda bukan dari jaman ke jaman.

C++ selalu menghantui hidup kita. Kita mungkin bisa lari dan mengabaikan tetapi suatu saat kita pasti dihadapkan kepada keterbatasan itu. One language that can do it all is c++.

Berikut salah satu video yang saya rasa menggambarkan pentingnya interoperability ke c++

http://channel9.msdn.com/posts/Raman-Sharma-Building-Metro-Style-Apps-with-C-and-JavaScript

Anda ingin membuat games dengan DirectX di MetroStyle?

Yeah. That’s should be in c++ I think. There’s no other choice.

Parallelism

Salah satu hal yang makin marak belakangan ini juga adalah mengenai parallelism. C# 5 juga sangat gencar dengan fitur ini.

Nah bagaimana dengan c++ ?

Pagi ini saya baru saja menonton video yang mungkin membuat anda semakin yakin bahwa c++ pantas untuk dipelajari. J. Video ini mengenai c++ AMP (

http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-802T

Video tersebut mengenai C++ AMP (Accelerated Massive Parallism)

Nama yang cukup menakutkan bukan ?

Saya langsung saja mencari padanan dari hal tersebut di c#. Kemudian saya pulang dengan tangan hampa. L. Kita harus melakukan interoperability lagi untuk hal ini.

http://blogs.msdn.com/b/pfxteam/archive/2011/09/21/10214538.aspx
http://blogs.msdn.com/b/pfxteam/archive/2011/11/12/10236375.aspx

C++ untuk c# developers ?

Jadi tidak aneh saya rasa jika dengan kemunculan Windows 8 dan MetroStyle appsnya, c++ semakin relevan di industry. Saatnya bagi kita programmer c# untuk belajar c++. Ingat bahwa ini adalah investasi. Kita tidak akan merasakan efeknya sekarang tetapi di masa yang mendatang. J. Berikut adalah buku yang membantu anda untuk melakukan pengenalan dengan c++

http://blogs.msdn.com/b/jerrynixon/archive/2012/02/20/c-for-c-developers.aspx

Persiapkan diri anda untuk menyambut Windows 8 dengan c++. :).

Go Native!!

Advertisement