Thursday, March 29, 2007

buat teman teman sesama programmer muda


Di majalah info linux edisi maret 2003 lalu, saya membaca sebuah artikel di bagian opini berjudul "kelemahan programer muda". artikel ini ditulis oleh bapak Budi Raharjo. Isi artikel tersebut lebih kurang begini:

"Salah satu kesalahan yang banyak ditemui terhadap programer baru yang masih muda adalah kurangnya wawasan tentang teori dan apa-apa yang sudah dikerjakan oleh orang lain. Seringkali ketika diberikan sebuah tugas, sang programer ini dengan gagahnya langsung cepat-cepat melakukan pengodean (coding). Dia tidak mau mencari informasi tentang berbagai solusi yang mungkin telah ditemukan orang untuk mengatasi masalah atau tugas yang diberikan kepadanya.

Saya ambil sebuah contoh, pencarian (searching) sebuah data tertentu dalam sebuah kumpulan data. Sebagian besar programer muda ini langsung membuat loop “for” atau “while” yang menelusuri kumpulan data tersebut. Dia tidak peduli tentang struktur data dari kumpulan data tersebut (yang bisa jadi berupa array, tree, graph). Strategi yang dipilihnya pun asal-asalan. Dia tidak mau memikirkan apakah lebih baik menggunakan Depth First Search (DFS) atau Breadth First Search (BFS). Padahal di luar sana sudah banyak literatur yang membahas tentang search beserta aplikasi-aplikasinya. Selain masalah pencarian, masalah lain yang mirip adalah pengurutan (sorting).

Akibat dari ketidaktahuan ini seringkali sang programer membutuhkan waktu yang lama untuk menemukan solusinya. Jika sudah berhasil membuat solusinya pun, ternyata solusi yang dibuat oleh sang programer ini tidak efisien. Programnya bisa jalan untuk data yang jumlahnya sedikit. Begitu jumlah data dinaikkan, program menjadi tidak jalan, atau membutuhkan waktu yang lama untuk menyelesaikan tugasnya. Bayangkan, ada aplikasi yang membutuhkan waktu berjam-jam hanya untuk melakukan sorting. Hal ini sering disebabkan kesalahan dalam pemilihan struktur data beserta algoritma yang digunakan untuk memproses data tersebut. Solusinya, sering-sering baca bukubuku, jurnal, dan teori-teori pemrograman untuk menemukan solusi yang lebih baik. Jika kesalahan di atas disebabkan karena kurang pemahaman tentang teori, maka kesalahan lain yang sering dilakukan oleh programer muda adalah kurang seringnya praktik membaca atau melihat source code orang lain. Ketika dia diminta untuk membuat program dalam bahasa C, maka programnya seperti di bawah ini:

============================================
#include

main()
{
printf(“Hello world\n”);

}

============================================


Contoh di atas membuat mata saya sakit ketika membacanya. Apa salahnya? Ada banyak. Peletakan kata kunci “main” yang masuk ke dalam tanpa sebab, peletakan tanda kurung kurawal pembuka dan penutup yang seenaknya (tidak lurus di baris sendiri atau mengikuti baris sebelumnya) merupakan hal yang menyebalkan bagi saya. Apakah Anda tidak gemas melihat source code semacam itu? Contoh pemrograman dalam bahasa lain juga hampir mirip kesalahannya.


Apa yang dapat kita pelajari dari contoh ini? Style dari penulisan program ternyata harus juga dikuasai oleh seorang programer. Program sebaiknya tidak hanya sekadar jalan, akan tetapi harus juga mudah dan indah jika dibaca. (Ingat artikel lalu tentang seni dan pemrograman?) Ada beberapa aliran style dalam penulisan program. Misalnya, ada yang menggunakan “tab” untuk indentation, tapi ada yang menggunakan spasi (spacebar). Dua-duanya dapat Anda lakukan, tapi Anda harus konsisten. Jika Anda menggunakan tab atau spasi, berapa karakter kosong yang Anda gunakan?



Kemampuan pemrograman ini sama seperti kemampuan kita memainkan alat musik, gitar misalnya. Seorang pemain gitar yang andal perlu tahu teori-teori (chord, scale, picking), sering berlatih secara rutin, dan juga perlu melihat contoh style cara bermain gitaris kawakan. Seringkali ada hal-hal yang lebih cepat dipahami setelah melihat teori tersebut dipraktikkan.



Sering-sering melihat atau membaca source code dari programer kawakan akan memperkaya pengetahuan Anda dalam bidang pemrograman. Pendekatan open source, di mana kita bisa melihat source code dari sebuah program yang kita kagumi, membuat kita lebih mudah dalam meningkatkan kemampuan pemrograman kita. Nah, mari kita giatkan untuk membaca jurnal (teori) dan melihat source code (praktik)."




Apa yang dibilang oleh bapak Budi itu memang merupakan gambaran kondisi para programer muda termasuk saya salah satunya yang sering melewatkan hal-hal yang sebenarnya penting dalam penulisan sebuah bahasa pemograman. Mudah-mudahan setelah membaca artikel ini teman-teman sesama programer muda bisa mengambil pelajaran dan nantinya menjadi seorang programer yang lebih baik. amin.


Banzai !!!

Saturday, March 24, 2007

4 gl?apaan tu???

beberapa hari nan lalu, dikala hujan masih blm nongol di permukaan bumi kota padang yang panas ini, hadirlah seorang manusia bernama aku sedang bersurfing ria di dunia nan maya di sebuah esema yang merupakan kantornya. artinya apa?artinya aku adalah seorang guru. si aku ini ternyata sedang chatting di yahoo messenger, untuk seterusnya disebut YeeM, dengan seorang temannya yang berbasis di jakarte. jakarte ini adalah ibukote dari indonesie. temennya aku ini bekerja disalah satu perusahaan pembuat aplikasi komputer atau bahasa minangnya software development yang artinya si aku ini gak tau.

walau teman si aku ini laki-laki, sebut saja namanya "bunga". bunga ini bercerita kalau dia disana bekerja menggunakan software 4gl? waaaaaaaaaaaaaahh!!! apaan tu?
alih-alih tau sedikit, dengar istilahnya aja si aku ini baru kali ini (katro ya?)

ternyata 4gl tu cuma generasi berikut dari software yang ada
jadi kl ada 4gl berarti ada 1gl, 2gl, dan 3 gl dong?
pilihan berganda:
a. betul
b. betul banget
c. betul banget bana ko ha!!
d. ma tau wak
e. tuang tanyo lo kaden?
jawaban yang benar adalah "b"
keputusan juri tidak bisa diganggu gugat!!!

dari sumber yang mau tak mau harus percaya ternyata software-software yang pertama kali dikembangkan adalah software-software yang masuk ke dalam generasi pertama bahasa pemograman taw istilah kerennya 1gl.

1gl ini adalah bahasa pemograman "machine-level" yang hanya terdiri dari angka 1 dan 0. kelebihannya kode yang ditulis dapat berjalan sangat cepat dan efisien karna dieksekusi secara lansung oleh CPU, tapi bahasa mesin lebih sulit dipelajari daripada generasi bahasa pemograman yang lebih tinggi dan lebih sulit lagi untuk mengeditnya jika terjadi error.
males banget ya...

kl 2gl?
"second generation programming language" katanya suatu istilah yang merujuk pada suatu bentuk bahasa assembly, tapi itu baru katanya lho.kata siapa?kate em hehe.
tidak seperti 1 gl, pada 2 gl kodenya bisa dibaca dan ditulis secara mudah oleh manusia tapi musti di ubah ke dalam bentuk atau bahasa yang bisa dibaca oleh komputer agar bisa berjalan. lumayan ribet ya

nah, kl 3 gl?
katanya lagi ni, 3gl ni bahasa pemograman yang didesain agar bisa lebih mudah dimengerti oleh manusia termasuk hal-hal yang disebut variabel. banyak 3gl yang mendukung pemograman struktural. contohnya BASIC, C, C++, Java dan sejenisnya.

oo gitu toh ternyata, tetapi si aku tetap gak ngerti.....................

Thursday, March 22, 2007

Fourth-generation programming language


A *fourth-generation programming language* (abbreviated *4GL*) is a descriptive term used for programming languages and environments designed with a specific purpose in mind, such as the development of commercial business software. In the evolution of computing, the 4GL followed the 3GL in an upward trend
toward higher abstraction and statement power. The 4GL was followed by efforts to define and use a 5GL. The natural-language, block-structured mode of the third-generation programming languages improved the process of software development. However, 3GL development methods can be slow and error prone. It became clear that some applications could be developed more rapidly by adding a higher-level programming language and methodology which would generate the equivalent of very complicated 3GL instructions with fewer errors. In some senses, software engineering arose to handle 3GL development. 4GL and 5GL projects are more oriented toward problem solving and systems engineering.

All 4GLs are designed to reduce programming effort, the time it takes to develop software, and the cost of software development. They are not always successful in this task, sometimes resulting in inelegant and unmaintainable code. However, given the right problem, the use of an appropriate 4GL can be spectacularly successful as was seen with MARK-IV. The usability improvements obtained by some 4GLs (and their environment) allowed better exploration for heuristic solutions than did the 3GL.

Fourth-generation languages have often been compared to domain-specific programming languages(DSLs). Some researchers state that 4GLs are a sub-set of DSLs.Given the persistence of assembly language even now in advanced development environments (MS Studio), one expects that a system ought to be a mixture of all the generations, with only very limited use of the first.

welcome to my infomation,computer and technology source blog


welcome to my information, computer and technology source blog
this blog is a media for me to share my experience about my activities in learning ICT world
i just wanna create this blog to make it one of the computer and technology information source in the web
though i am still "green" in this kind of field, i hope this blog will be useful for technology and information spreading
i hope people will like this blog:-)

arigato gozaimasu