Last Updated on 13 years by Mas Herdi
Mungkin sebelum bahasa Java dirilis tahun 1995, para programmer harus bersusah payah berjuang dengan pointers, manajemen memori dan alur program yang kompleks. Java memungkinkan para programmer untuk menyelesaikan pekerjaan mereka, tanpa harus memikirkan semua itu. Namun, agar sukses, Java harus mendapatkan tempat di hati para programmer terdahulu, yang kebanyakan adalah C++ programmer. Itulah yang membuat desainer Java mendesain Java agar memiliki look and feel yang sama dengan C++ dengan tujuan menarik minat developer yang kebanyakan malas ketika harus mempelajari suatu bahasa baru dari dasar lagi.
Namun, di era 2008 ke atas, hal-hal di atas tidak lagi banyak berarti. Developer Java harus belajar hal-hal aneh yang tidak ada hubungannya dengan penyelesaian solusi, namun lebih ke sebuah ritual asing pada bahasa Java. Di bawah ini adalah kode yang harus dilalui terlebih dahulu oleh kebanyakan Java developer :
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } }
Cobalah amati, berapa banyak hal-hal yang harus kamu jelaskan kepada newbie yang ingin mempelajari Java agar dia mengerti? Sangat banyak. Untungnya desainer Java memiliki ide yang brilian, yaitu memisahkan bahasa dari platform. Hal itulah yang dinamakan polyglot programming yang juga memberikan developer sebuah kebebasan.
Polyglot Programming
Kata polyglot berarti berbicara dalam banyak bahasa. Seperti kita yang hidup di Indonesia tidak hanya mengetahui bahasa Indonesia, namun juga bahasa daerah. Bahasa-bahasa yang kita kuasai bisa disebut sebagai language sedangkan, Indonesia adalah platform. Karena bahasa-bahasa tersebut tidak akan berlaku di tempat selain Indonesia.
Polyglot programming memanfaatkan pemisahan antara bahasa dengan platform pada Java, memperbolehkan developer untuk menggunakan bahasa tersendiri untuk menyelesaikan problem yang lebih spesifik. Ada ratusan bahasa pemrograman yang bisa berjalan pada Java Virtual Machine (sebagai platform). Walaupun sebagai developer, kita hanya memanfaatkan satu atau dua bahasa saja, tidak semuanya.
Jika pemrograman poliglot berarti menggunakan banyak bahasa pemrograman, lalu bagaimana dengan developer yang menggunakan SQL untuk mengakses database, JavaScript untuk membuat web lebih interaktif dan XML untuk mengatur semuanya? Memang contoh barusan menggunakan banyak bahasa pemrograman, tapi ide dari pemrograman poliglot bukan seperti itu. Karena contoh barusan tidak mengenal suatu platform. Berbanding terbalik dengan dunia Java dan turunan-turunannya, mereka berada dalam suatu platform, dan dapat di running dengan JVM.
Dan, salah satu halangan dalam implementasi pemrograman poliglot adalah persepsi orang tentang berganti bahasa pemrograman. Jaman dulu, berganti bahasa pemrograman berarti berganti platform. Sebuah mimpi buruk bagi developers yang tidak ingin menulis ulang semua library-library mereka. Namun dengan memisahkan antara language dengan platform seperti Java dan C#, kamu tidak lagi harus memikirkan semua itu. Pemrograman poliglot memungkinkan kamu untuk berpindah ke bahasa yang lebih nyaman dan tetap dapat memakai assets dan libraries yang sudah ada.
Contoh
Berikut ini adalah sebuah program yang bergfungsi untuk membaca file text dan mencetak isi dari file text tersebut dengan nomor yang ditambahkan pada setiap baris. Ini adalah program Java-nya
import java.io.*; import static java.lang.System.*;public class LineNumbers { public LineNumbers(String path) { File file = new File(path); LineNumberReader reader = null; try { reader = new LineNumberReader(new FileReader(file)); while (reader.ready()) { out.println(reader.getLineNumber() + ":" + reader.readLine()); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException ignored) { } } } public static void main(String[] args) { new LineNumbers(args[0]); } }
Dan, ini solusi yang sama ditulis dengan Groovy, scripting language yang berjalan di JVM.
def number=0 new File (args[0]).eachLine { line -> number++ println "$number: $line" }
Dari perbandingan di atas, kita bisa lihat untuk simple task Java sangatlah rumit. Dan lebih banyak ritual/boilerplate code dibandingkan dengan solution code. Sedangkan Groovy langsung menyelesaikannya tanpa semua ritual tersebut. Baik Groovy maupun Java, keduanya berjalan di atas JVM.
Itulah sedikit pembahasan singkat mengenai pemrograman poliglot pada Java. Dan beberapa contoh bahasa pemrograman yang berjalan pada JVM adalah JRuby, Jaskell, Jython, Scala, Groovy, dan lain sebagainya.
Referensi :
- http://polyglotprogramming.com/
- http://memeagora.blogspot.com/2006/12/polyglot-programming.html
- http://enfranchisedmind.com/blog/posts/not-too-stupid-for-polyglotism/
- http://blogs.computerworld.com/15032/polyglot_programming_development_in_multiple_languages
- The ThoughtWorks Anthology, Polyglot Programming by Neal Ford