
Sebenarnya Indonesia merupakan negara yang mempunyai resource programmer banyak, akan tetapi, ada sedikit mengecewakan dari resource programmer di negera ini. Sedikit sekali programmer yang benar-benar kompeten, dan memiliki pengetahuan mendalam tentang programming. Walaupun kuliah teknik informatika, sekarang sudah tersebar dari Universitas Negeri yang elite sampai Universitas yang endak tau status akreditasinya 
Karena untuk zaman sekarang ini, di mana bisa dikatakan kalau cuma coding, semua orang juga bisa, yang artinya sumber untuk belajar programming semakin banyak serta tool untuk belajar programming semakin muda, mulai muncul apa yang saya namakan dengan programmer karbitan. Artinya, seorang programmer yang coding belajar dari otodidak atau kursus, kemudian tiba-tiba terlalu excited dan membanggakan dirinya, bahkan bisa juga dia sampai diwawancarai media massa, baik virtual maupun media massa real, dan berbicara yang seolah-olah terlihat `jenius, pintar, ilmiah’, padahal tak ubahnya apa yang diucapkan hanyalah omongan kosong untuk mengelabui orang awam yang engga tahu programming.
Programmer seperti ini biasanya susah dikritik (walaupun hampir semua programmer susah dikritik) dan biasanya nyolot karena dia merasa sebagai orang paling pintar di jagad informatics ini, kemudian merendahkan programmer lain, atau bahasa lain, hanya karena egonya, bukan karena riset yang terbukti dan teruji.
Terkadang mereka menggunakan istilah atau praktek yang salah kaprah, dan karena banyak orang yang awam daripada orang yang ahli, istilah salah kaprah ini kemudian menyebar.
Masalah Visual Programming
Biasanya programmer seperti ini bermula dari apa yang orang salah kaprah sebut dengan visual programming, seperti Visual Basic 6, maupun Borland Delphi. Yang parahnya, hampir di seluruh universitas di Indonesia, programming model seperti ini yang diajarkan terkadang sebelum mahasiswa mempunyai dasar yang kuat tentang algoritma, struktur data, dan object-oriented programming.
Sebenernya apa sih visual programming itu? Visual programming language adalah cara atau metode di mana programmer menuliskan logic programnya dalam bentuk visual, bukan dengan text. Contoh yang mungkin tahu adapah Pictorious Prograph, atau jika pernah memakai UnrealEd di game Unreal Tournament, kenal dengan yang namanya Kismet, atau seperti Logic Bricks yang ada dalam Blender.![]()
Kismet, on Unreal Editor (taken from http://www.moddb.com/mods/ghostwriter )
Nah, bagaimana dengan Visual Programming a’la programmer karbitan tersebut? Sebenarnya itu bukan visual programming tetapi lebih kepada generative programming atau automatic programming. Yang pengertiannya adalah :
“Sebuah cara/metode programming yang mengotomatisasi pembuatan source code dengan generic frames, classes, prototypes, templates, aspects, dan code generators to untuk meningkatkan produktivitas programmer.”
diterjemahkan from wikipedia
Jadi pada dasarnya, seperti Visual Basic 6 dan Borland Delphi adalah contoh generative programming, bukan Visual Programming akan tetapi Visual Development Environemnt. Di mana code yang dibuat, misalkan untuk membuat window dan sebagainya sudah di-wrap dalam library dan bisa didesign menggunakan editor yang ada. Dan programmer tinggal mengetikkan code-code yang perlu saja di dalam event-event yang sudah disediakan contoh : OnMouseClick, OnKeyPressed, dan lain-lain.
Saya pernah mendapatkan email dari seseorang yang tidak percaya bahwa sebuah Window bisa dibuat tanpa menggunakan designer, dan hanya mengetikkan kode-kode menggunakan Windows API. Dan ada juga seseorang yang berpendapat di sebuah forum seperti ini :
… semakin kita meninggalkan C/C++ dan Windows API, maka semakin produktiflah seorang programmer …
diambil dari salah satu post di forum lama ansav.com oleh user dengan ID kandabram
Hanya karena melihat sebuah wrapper class untuk membaca file yang dibuat oleh saudara Anvie untuk meread dan write file. Nampaknya user kandabram ini adalah fans berat Visual Basic 6. User ini juga bilang bahwa python ini lebih gampang *which means inferior* daripada Visual Basic 6 tanpa men-cite sumber yang terpercaya.
Program GUI lebih canggih daripada console (command line) program
Sejatinya, program dengan GUI dan Console tidak ada bedanya dalam sisi fungsionalitas. Bahkan sebuah program kecil seperti mpg321 sebuah program command line bisa untuk memainkan MP3. Lihat gambar berikut:
Bahkan, server-server berbasis Linux dan Unix, yang biasa untuk menyimpan hostingan atau bahkan server di Bank sekalipun, sedikit sekali yang menginstall GUI di dalam servernya. Interface biasanya berupa command line. Jadi dari segi fungsionalitas, tidak ada bedanya. Virus gui lebih canggih ini terkadang menjadikan seseorang malas untuk belajar hal-hal yang non-gui-related, seperti Design Pattern maupun Object Oriented Programming karena umumnya sample-sample yang seperti ini bentuknya command line. Padahal Design Pattern dan OOP merupakan satu materi penting untuk membuat seluruh jenis program, bahkan untuk program game sekalipun.
Program berbasis GUI hanya bisa dibuat dengan language yang “visual”, Object dalam konsep OOP adalah komponen seperti Button, Windows dll.
Woit… ini dia yang terkadang salah kaprah besar-besaran. Seperti yang saya bilang di atas, salah kaprah ini sampai menyebar dan menyebabkan beberapa orang mengirimkan email ke saya permasalahan membuat sebuah Windows tanpa designer sama sekali. Pada dasarnya, semua bahasa bisa membuat GUI, yang penting dalam pembuatan Window itu bukan bahasanya tetapi adalah library yang dipakai. Untuk Windows, library yang dipakai adalah GDI (Graphics Display Interface). Yang merupakan standard di seluruh Windows Version. Untuk di Linux, misalnya kita bisa memakai GTK ataupun QT.
Pada dasarnya GUI itu hanya representasi dari data yang ada di memory, tak lebih hanya sekumpulan pixel yang terdraw di screen, yang pada dasarnya tidak bisa mendeteksi apapun seperti keypress maupun mouse click. Yang melakukan deteksi adalah suatu loop di dalam program. Yang dalam operating system window ada di dalam Message Loop, dan event-eventya dihandle di dalam callback function Window Procedure.
Nah Message Loop dan Window Procedure inilah yang tidak terlihat/diautomatisasi di dalam pemrograman seperti Visual Basic, maupun Borland Delphi. Sehingga tidak terlihat oleh programmer yang menggunakan bahasa ini.
Kemudian masalah contoh Object dalam GUI, adalah salah besar. Object yang dimaksud dalam OOP tidak seperti itu. Button, dalam GUI bisa merupakan Object dari suatu class. Tetapi Object yang dimaksud dalam OOP bukan itu, tetapi merupakan instance dari suatu class. Untuk hal ini sudah saya pernah bahas, silahkan liat di old article di website saya.
C/C++ tidak bisa untuk membuat program berbasis grafis, hanya untuk console
Ini adalah salah kaprah paling lucu yang pernah saya dengar. Memang sampel C/C++ untuk pemula tidak pernah mengajarkan bagaimana membuat Window atau bagaimana membuat Tombol bisa diklik misalnya. Karena apa? Ini dikarenakan C/C++ memang bukan untuk itu, selain itu, C/C++ merupakan satu bahasa yang tidak dipunyai oleh salah satu vendor saja tetapi merupakan bahasa yang standard, dan available hampir di semua platform hardware maupun software di dunia ini.
Bahkan game sekelas Crysis, dibuat menggunakan C++. Tidak percaya, silahkan lihat source code dari mod Crysis, semuanya menggunakan SDK dari CryEngine Mod SDK yang berbahasakan C/C++ dan LUA. Windows dibuat dengan C, Windows Explorer dengan C++, kernel linux dibuat dengan C dan Assembler, semua program dan driver di linux sebagian besar ditulis dengan C/C++. Windows SDK, DirectX SDK, semuanya native C/C++.
Kesalahkaprahan ini dikarenakan buku di Indonesia serta pengajaran di Indonesia yang jarang/tidak mengajarkan bahasa ini secara mendalam karena paradigmanya yang terkesan sukar, sulit, low level, dan lain-lain. Contoh kecil, untuk course di kuliah, misalnya banyak didapati pemrograman dengan Turbo C++ versi 3.0 yang tentu saja tidak bisa digunakan untuk memrogram GUI, karena basis dari Turbo C++ 3.0 adalah DOS.

Contoh konretnya adalah penggunaan buku Abdul Kadir yang banyak disarankan dan digunakan di Indonesia, padahal buku ini tidak mengajarkan multi-file (hanya sati file .cpp), tidak mengajarkan pembuatan header, dan menggunakan standar C++ yang sudah sangat lama, sebagai catatan Turbo C++ 3 ditulis tahun 1991, sementara C++ standard yang beru
Saya pernah mengajar di salah satu Universitas Swasta, materi C++ lanjut, dan mereka cukup kaget ketika saya menggunakan Microsoft Visual C++ 2008 (terbaru) dan juga saya menggunakan teknik multifile. Yaitu berbagai macam file .cpp dan .h.
Akibatnya bisa diketahui, ketika kita bilang C++, yang ada di otak mahasiswa adalah Turbo C++ for DOS yang memang tidak bisa digunakan untuk membuat aplikasi advanced di modern operating system.
Akhir kata saya menyarankan kepada dosen atau pengajar di Institusi lain, supaya tidak menggunakan istilah dan term yang salah kaprah seperti ini dan memperbaiki kurikulum, supaya up-to-date dan tidak ketinggalan sehingga menyebabkan paradignma pada mahasiswa dan industri berbeda.
Best Regards
RMS Noor HPD
(lynxluna)

2 komentar:
beuh,setuju kank,"core" nya pemrograman terkesan dikesampingkan dan diambil sisi yang lebih praktis *alasan komersial ?* yang gak jarang menelorkan programmer yang cepat melesat , tpi juga cepet kepentok *curhat korban*
n IMO programming non visual bisa jauh lebih powerfull
ini pengen belajar c/c++ kok dari dulu gak kesampaian *sigh*
@icang
n IMO programming non visual bisa jauh lebih powerfull
Yuph.. dan sedikit yang bisa, sayangnya ga selalu kita harus non visual
Best Regards
RMS Noor HPD
(lynxluna)
Poskan Komentar