Salah satu hal yang menghambat orang untuk belajar adalah banyaknya istilah-istilah yang membingungkan. Semua domain pengetahuan biasanya memang mempunyai istilah-istilah sendiri dan meskipun ada satu istilah yang muncul di lebih dari satu domain pengetahuan, pengertiannya seringkali tidak sama sehingga pemahaman tentang istilah bersifat context-dependent (harus dilihat konteksnya).
Memplejari pemrograman juga kurang lebih harus memahami berbagai macam istilah yang muncul. Kali ini saya akan menjelaskan sedikit tentang istilah "idiomatic programming". Jika anda sering membaca milis, newsgroup, atau berbagai macam resources di Internet, terutama yang terkait dengan pemrograman, barangkali akan sering mendengar istilah-istilah berikut:
- Idiomatic Clojure
- Idiomatic Go
- Idiomatic C++
Saya petikkan berbagai pertanyaan (dalam Bahasa Inggris) di berbagai sumber di Internet terkait dengan hal ini:
- What is the idiomatic way to cast multiple return values in Go? (http://stackoverflow.com/questions/11403050/idiomatic-way-to-do-conversion-type-assertion-on-multiple-return-values-in-go)
- Idiomatic Clojure equivalent of this Python code? (http://stackoverflow.com/questions/8720073/idiomatic-clojure-equivalent-of-this-python-code)
Jawaban-jawaban dari pertanyaan tersebut tidak penting untuk tulisan ini, yang penting adalah pengertian dari "Idiomatic Clojure", "idiomatic way to ..... in Go".
Kata "idiom" di luar konteks pemrograman digunakan untuk menunjukkan "bahasa yang khusus untuk suatu komunitas, orang, wilayah, atau kelas" (diambil dari http://www.merriam-webster.com/dictionary/idiom - ada beberapa arti lain yang mirip). Dalam konteks bahasa pemrograman, kata "idiom" sebenarnya mirip dengan hal-hal seperti itu. Jika kita membicarakan "Idiomatic Go" maka kita akan membicarakan pola / patterns yang dianggap baik untuk menyelesaikan masalah dengan sintaks dan semantik dari Go. Demikian juga jika menggunakan "Idiomatic Clojure", yaitu menunjukkan cara pemecahan masalah pemrograman yang baik dan sesuai dengan pola yang digunakan oleh para pemrogram Clojure. Ingat, seringkali ada banyak cara untuk melakukan suatu hal menggunakan suatu bahasa pemrograman tertentu. Bisa saja kode sumber kita betul dan menghasilkan sesuatu yang benar sesuai tujuan pembuatan program, tetapi tidak "idiomatic". Jadi, berbicara tentang hal ini sama saja berbicara tentang optimasi kode sumber.
Dari mana mengetahui "Idiomatic Programming"? Tidak mudah memang. Yang jelas, jika ingin mempejari dari buku-buku, carilah buku atau dokumentasi semacam "Effective Java" (http://www.oracle.com/technetwork/java/effectivejava-136174.html), "Effective Go" (http://golang.org/doc/effective_go.html), atau berbagai macam buku tentang design patterns sertaprogramming patterns. Latihan serta bergaul dengan fellow programmers di seluruh dunia juga akan sangat membantu kita untuk memahami "Idiomatic Programming".
Idiomatic Programming