Ah.. teori, buat apa dipelajari mahasiswa
Ketika mengajak mahasiswa atau mempelajari hal seperti pemrograman fungsional, lambda calculus, konkurensi, sering keluar komentar, “Ah… teori, buat apa dipelajari tidak siap pakai“. Hal yang sama akan terlontar, ketika diajak eksplorasi bahasa pemrograman yang tidak populer, misal Haskell, Scheme, Ocaml, Eiffel, LISP, Erlang, Smalltalk, Oberon, OZ maka akan keluar jawaban yang sama. Berbeda bila mahasiswa, diajak belajar bahasa atau teknologi yang sedang populer seperti Java, .NET dengan C# ataupun Ruby.
Padahal bila diperhatikan banyak teknologi yang muncul di teknologi baru tersebut telah ada di “teori” tak berguna itu. Sering bagi yang telah mempelajari hal tersebut, melihat perkembangan teknologi yang populer menjadi sedikit frutasi. Apalagi bila hal lama itu digembar-gemborkan sebagai fitur baru dari suatu bahasa pemrograman komersial. Sering perulangan ini terjadi karena sifat tertutup alias proprietary dari teknologi tersebut. Sebagai contoh konsep gargabe collector yang sudah dikenal di LISP atau bahasa lainnya cukup lama, baru mulai dikenal kembali oleh para programmer setelah gembar-gembor sebagai fitur di Java. Bila kita membaca tulisan klasik tahun 65-an, The Next 700 Programming Language [ http://www.cs.utah.edu/~eeide/compilers/old/papers/p157-landin.pdf], maka akan paham maksud kefrustasian saya tersebut.
Di era sebelum populernya Internet dan Open Source, banyak bahasa pemrograman ataupun sistem operasi yang memiliki teknologi menarik, tenggelam tak populer. Seperti yang diungkapkan dalam The Economics of Programming Languages [ http://www.welton.it/articles/programming_language_economics.html], banyak bahasa pemrograman yang tidak bisa diterima oleh publik karena faktor non teknis seperti marketing, media massa atau dorongan industri termasuk enggan berpindah atau menjaga kompatibiltias. Sebagai contoh bila kita melihat dalam daftar bahasa pemrograman yang mudah dalam artikel Lowering the Barriers to Programming [ http://www.cs.cmu.edu/~caitlin/papers/NoviceProgSurvey.pdf], tetap Visual Basic yang paling populer di kalangan programmer baru, bukan karena fitgur atau mudahnya, tetapi lebih kepada faktor marketing saja.
Kurang bersemangatnya mempelajari teori di kalangan developer Indonesia, menjadikan sering dimakan mentah-mentah suatu teknik baru sebagai silver bullet, dan mengabaikan paradigma lainnya yang sering disebut di dalam buku teori. Sebagai contoh OOP sering dipuja sebagai “silver bullet”, bahkan sering bahasa A disebut lebih unggul hanya karena OOP. Tetapi seperti yang disebutkan Victoria Livschitz oleh salah satu pengembang utama Java, dalam The Next Move in Programming: A Conversation with Sun’s Victoria Livschitz http://java.sun.com/developer/technicalArticles/Interviews/livschitz_qa.html]. Permasalahan komputasi saat ini tidak cukup dipecahkan dengan OOP. Paradigma lainnya dibutuhkan.
Oleh karena itu, demi melihat masa depan, maka saya sarankan bagi para dosen dan mahasiswa untuk melihat-lihat hal yang teoritis. Karena banyak fitur atau ide di bahasa tersebut yang 10-20 tahun lagi baru terserap ke produk yang bersifat mainstream. Ketika itu untuk mempelajari hal yang “baru” tersebut tidaklah sulit. Tidak menjadi kaget-kaget serba mengira semuanya baru.
Tentu saja pemahaman teori dan beragam jenis bahasa pemrograman ini akan menjadi modal, kalau ingin mengembangkan bahasa pemrograman sendiri. Saat ini kebututuhan mengembangkan bahasa pemrograman sendiri dalam domain khusus, yang dikenal dengan istilah Domain Specific Language (DSL), [ http://homepages.cwi.nl/~arie/papers/dslbib/ yang kini biasa dibutuhkan oleh programmer biasa. Termasuk untuk mengolah database, log file. Bagi programmer Unix/Linux, melakukan pemrograman dalam hal "little language" sudah merupakan hal yang biasa. Penggunaan tools seperti lex, yacc misal untuk membaca format dan melakukan transformasi antar format merupakan hal yang lazim dilakukan. Tetapi kini Language Oriented Programming yang diistilahkan leh Martin Fowler dalam artikel Language Workbench [http://martinfowler.com/articles/languageWorkbench.html] juga telah diadopsi oleh Microsoft dalam produk Software Factoriesnya .
Bagi mereka yang ingin mendalami soal bahasa pemrograman, buku klasik karya Niklaus Wirth, Compiler Construction [ http://www.oberon.ethz.ch/WirthPubl/CBEAll.pdf] wajib untuk dicerna. Memang banyak buku tentang kompiler, tetapi buku ini sangat disarankan karena menjadi tonggak dalam pembuatan bahasa yang elegan dan simple. Termasuk dalam pemanfaatan mesin virtual yang kini digunakan di Java ataupun C#.
Trend Open Source menjadikan banyak bahasa yang tersedia bebas dan memiliki fitur menarik. Misal HECL [http://hecl.org/]. Bahasa skrip yang kecil ini sangat kecil sehingga dapat dijalankan di handphone sebagai suatu aplikasi J2ME, dapat digunakan untuk menulis skrip, di perangkat yang menjalankan Java. Bahasa yang terkait dengan pengembangan aplikasi Web misalnya Hop [http://hop.inria.fr/], bahasa order tinggi yang memisahkan antara alur logik program dan GUI tetapi mempaketkan menjadi satu menjadi aplikasi web dan antara client dan server dapat saling bercakap-cakap. Hop dikembangkan menggunakan Scheme. Bahasa yang sudah memasukkan pertimbangan menulis aplikasi Ajax secara lebih mudah adalah Links [ http://groups.inf.ed.ac.uk/links/]. Sehingga tidak perlu programmer menulis dalam berbagai bahasa misal utk server dengan Java, sedangkan untuk GUI dengan Javascript dengan program ini cukup dengan bahasa Links dan akan dikonversi ke bahasa yang bertanggung jawab di masing-masing lapisan. Ini untuk menghindari masalah yang disebut dengan impedance mitmatch. Bahasa ini menyerap idea dari Scheme dan juga Erlang serta berbagai bahasa lainnya.
Saat ini banyak bahasa pemrograman yang dibangun bukan saja di atas Virtual Machine seperti JVM atau CLR-nya MS tapi juga dibangun dan dijalankan di atas lingkungan JavaScript. JavaScript merupakan lingkungan komputasi dan bahasa pemrograman yang lengkap. Beberapa bahasa yang memanfaatkan hal ini seperti halnya FlapJax [ http://www.flapjax-lang.org/] merupakan bahasa pemrograman untuk aplikasi web. Bahasa ini mendukung event-driven dan menyediakan penyimpanan data persisten. Juga memungkinkan pengakses layanan web lainnya. Model sintaksnya mirip dengan JavaScript karena dibangun di atas JavaScript. Jadi dapat langsung dijalankan di browser tanpa membutuhkan plug-in. Bahasa lainnya yang memanfaatkan JavaScript adalah OberonScript [ http://www.ralphsommerer.com/obn.htm]. Bahasa skrip ini akan menerjemahkan dari bahasa Oberon ke kode Javascript. Sehingga dapat dijalankan dibrowser secara langsung. Ke-eleganan dan Oberon menjadikan pilihan yang menarik dengan cara ini.
Jadi tunggu apa lagi ? Jangan ragu-ragu belajar hal-hal yang teoritis, agar siap menerima teknologi baru di masa depan.
Tags: programming
