Sunday, March 20, 2011

Bahasa Pemrograman Karya Anak Bangsa

Bahasa Pemrograman Karya Indonesia


Artikel ini ditulis tanggal: 6 Agustus 2010 Terakhir kali diupdate: 19 Agustus 2010



Implementasi interpreter dan compiler bukanlah hal yang sulit, ini terbukti dari sudah adanya implementasi interpreter, compiler, dan translator program di berbagai tugas akhir mahasiswa sejak tahun 1981 (bisa di cek di perpustakaan Informatika ITB, dan saya yakin Ilmu Komputer UI/UGM/IPB juga memiliki banyak tugas akhir semacam ini). Buku mengenai pembuatan interpreter berbahasa Indonesia juga sudah ditulis, sejak 1984 (misalnya KILANG 002: BASIC dalam Bahasa Indonesia, Jakarta: Kesaint Blanc, 1984), dan satu lagi yang diterbitkan di tahun 1995 (Tuntunan Praktis Pemrograman Merekayasa Interpreter: Sebuah Penerapan Teknik Kompilasi, Sukamdi, 1995 ISBN :979-637-744-6 ), dalam buku yang ditulis Sukamdi ditunjukkan mengenai pembuatan bahasa ALIN untuk memproses ekspresi aljabar linier.



Bahasa KILANG dibuat oleh Prof.Dr.Ir.Dali Santun Naga KILANG merupakan singkatan dari Kaidah Informasi Lambang Aneka Nalar dan Guna, di tahun 1984 bahasa ini sudah mencapai versi 2. Bahasa KILANG ini pernah dibahas di Seminar Komputer dan Diskusi Ilmiah Dies Natalis III Himpunan Mahasiswa Informatika ITB, Bandung, 19 Maret 1986 "Dua Tahun KILANG 002: Kisah Singkat tentang Pendomestikasian Bahasa Komputer". Sayangnya saat ini belum terdengar lagi kelanjutannya.



Dua bahasa pemrograman yang saat ini masih kembangkan oleh putra Indonesia secara open source adalah bahasa Qu dan bahasa BAIK. Bahasa Qu sudah bisa dipakai sejak 2002, definisi bisa dipakai adalah interpreternya sudah berjalan. Di tahun 2007 Qu sudah memiliki banyak fitur dan didokumentasikan dengan baik. Bahasa Qu ditujukan sebagai bahasa umum (general purpose language). Bahasa Qu yang bersifat open source ini sudah dipakai untuk membuat aplikasi web dan aplikasi komersial.



Sementara bahasa BAIK yang baru dikembangkan sejak tahun 2008, sudah memiliki interpreter di tahun yang sama, dan di tahun 2009-2010 sudah ada 3 naskah ilmiah (paper) nasional dan internasional yang membahas bahasa BAIK. Bahasa BAIK ditujukan untuk pembelajaran pemrograman. Source code baik juga terbuka untuk umum. Sebagai tambahan informasi, bahasa baik berusaha menggunakan bahasa Indonesia, mirip seperti yang dilakukan bahasa KILANG.



Bahasa Qu

Lisensi: GPL

Pengembang: Marc Krisnanto

Rilis awal: 2002

Rilis terbaru: 2009

Naskah Ilmiah: -

Platform: Unix based (kemungkinan bisa dijalankan di Windows dengan Cygwin)

Website: http://www.qu-lang.org



Implementasi awal bahasa ini hanya dikembangkan dalam beberapa minggu saja (referensi: http://www.qu-lang.org/about.htm), dan masih terus dikembangkan dengan rilis terakhir tahun 2009. Bahasa ini cukup sederhana (seperti python) jadi bisa dipelajari dengan mudah oleh pemula, tapi juga memiliki berbagai fitur "advanced" (coroutine, list comprehension, function and method currying, dsb), sehingga bisa digunakan juga oleh programer tingkat lanjut.



Salah satu kelebihan yang saya lihat dari bahasa ini dibanding sebagian besar bahasa lain adalah: bahasa ini memiliki strong semi-dynamic typing/optional static typing, artinya sebagian variabel bisa diberi tipe, sebagian lagi tidak. Ini merupakan kompromi dari kemudahan berbagai bahasa terinterpretasi seperti PHP yang sama sekali tidak mengenal tipe (sehingga tidak bisa mengoptimasi pengunaan memori), dengan bahasa yang sangat strict (seperti Java).



Interpreter bahasa ini diimplementasikan dalam C dengan parser yang ditulis tangan (tidak dihasilkan oleh parser generator). Source code yang diberikan mudah dikompilasi, dan sudah menyertakan skrip "configure" (sehingga bisa menyesuaikan diri dengan berbagai platform UNIX yang ada). Implementasi interpreter bahasa ini sudah menyertakan banyak modul built-in (seperti Big Integer, List, Tree), dan tersedia juga package untuk parsing XML (dengan Expat), membuat aplikasi GUI (dengan GTK), dan bahkan melakukan koneksi dengan database (Mysql). Jika Anda masih butuh yang lebih, Anda bisa mengimplementasikan fungsi dalam C dan memanggilnya dari Qu, atau sebaliknya Anda bisa mengembed bahasa Qu ke program C.



Meskipun tidak/belum ada paper ilmiah mengenai bahasa ini, dokumentasi bahasa ini sangat lengkap, mulai dari syntax/grammar sampai dokumentasi fungsi dan kelas yang tersedia. Selain dalam bentuk referensi, dokumentasi berupa tutorial juga tersedia. Tapi tentu saja jangan dibandingkan dengan bahasa yang sudah matang seperti python yang punya tutorial sangat detail, tutorial yang diberikan pada dokumentasi Qu cukup singkat. Untuk orang yang baru belajar pemrograman mungkin tidak cocok, tapi sangat cocok untuk orang yang sudah mengenal berbagai bahasa lain seperti Python dan Perl.



Penulis bahasa ini tidak membuat bahasa untuk tujuan pengajaran, tapi karena dia frustasi dengan bahasa yang sudah ada. Jadi bahasa ini tidak memiliki tujuan yang spesifik. Tapi ini bukanlah sebuah kekurangan, bahasa-bahasa open source seperti PHP, Perl, Python dan Ruby juga tidak memiliki tujuan khusus di awal, hanya untuk keperluan penciptanya saja. Mungkin satu-satunya kritik saya adalah: saat ini tidak ada versi yang bisa diakses dengan versioning management (misalnya CVS atau git), padahal saya ingin melihat perkembangan bahasa ini. Sementara kode program juga tidak mencantumkan tanggal, dan versi lama tidak bisa didownload lagi.



Saya sudah mengkonfirmasi dengan penulis mengenai keluhan terakhir, dan masalah utama yang dihadapi adalah kesibukannya dan koneksi internet di Indonesia yang sering kurang stabil. Namun di masa depan kemungkinan akan disetup sebuah sistem (via sourceforge misalnya) agar lebih mudah bagi pihak yang ingin berkontribusi.



Secara singkat, sisi negatif dan positif bahasa Qu adalah sebagai berikut (perhatikan bahasa sisi negatif ini hanya untuk versi saat ini, masih bisa terus diperbaiki):



Positif



•Memiliki fitur advanced

•Memiliki dokumentasi yang lengkap

•Memiliki banyak package

•Struktur program sangat baik (bisa digunakan oleh orang yang ingin belajar pembuatan interpreter)

•Sudah dipakai di dunia nyata (situs http://www.ina.travel/ dan program accounting http://www.gate17.net/)

Negatif



•Kurang dipromosikan sehingga kurang dikenal

•Versi lama tidak bisa didownload

•Belum ada naskah ilmiah yang membahasnya (namun tujuan bahasa ini bukan untuk pengajaran jadi sepertinya memang tidak diperlukan, sementara itu dokumentasi sudah cukup lengkap)

Bahasa BAIK (Bahasa Anak Indonesia untuk Komputer)

Lisensi: source terbuka tapi mungkin tidak memenuhi syarat open source menurut OSI

Pengembang: Haris Hasanudin

Rilis awal: 2008

Rilis terbaru: 2010

Naskah Ilmiah: 3 paper

Platform: UNIX based (Linux, Solaris), Windows

Website: http://sourceforge.net/projects/baik/



Bahasa ini dikembangkan oleh Haris Hasanudin sejak tahun 2008. Tujuan bahasa ini adalah untuk pengajaran pemrograman dengan menggunakan Bahasa Indonesia. Dokumentasi bahasa ini masih minimal, tapi naskah ilmiah tentang BAIK telah dipublikasikan di dua konferensi internasional dan jurnal nasional sebagai berikut:



•Basic Design of BAIK = Scripting Language with Indonesian Lexical Parser for Internet-based Software Development, Proc. of Int. conf. on Advance Computer Science and Information System - ICACSIS 2009.

•BAIK (Bahasa Anak Indonesia untuk Komputer) = Programming Language based on Indonesian Lexical Parsing for Multi-Tier Web Development, Journal on Computer Science and Information (JIKI) June 2010, Universitas Indonesia.

•BAIK Language for Visual Programming with Indonesian Natural Language, Int. MALINDO Workshop 2010.

Bahasa ini dapat digunakan untuk mengajarkan konsep prosedural dan object oriented. Bahasa ini tidak mengandung aneka fitur "advanced" seperti Qu, tapi menurut saya itulah kelebihan bahasa ini yaitu kesederhanaannya. Tidak seperti Qu yang tidak menyertakan dukungan GUI secara default, bahasa ini mendukung GUI sebagai bagian dari bahasanya. Anda juga bisa melakukan koneksi SQL ke Postgres dan Oracle, serta melakukan koneksi TCP/IP. Pemrograman web dengan CGI pun bisa dilakukan.



Dari segi pengguna BAIK, bahasa ini sepertinya cocok untuk pemula (sesuai tujuannya), tapi kurang cocok untuk pengembangan aplikasi yang besar. Tidak ada pemisahan modul, dan semua statement "pakai_xx" (pakai_layar, dsb) merupakan sesuatu yang dihardcode (bandingkan dengan Qu). Mungkin pemisahan modul bisa menjadi fitur bahasa ini di masa depan, karena itu akan mengajari pemakai bahasa BAIK mengenai code reuse.



Bahasa ini diimplementasikan dalam C, dan masih banyak hal yang bisa diperbaiki dari implementasi interpreternya. Misalnya semua nama fungsi di library seperti "gambarpoligon" di-hardcode di bagian Lexer. Masih ada memory error dan memory leak ketika diperiksa dengan valgrind, dsb. Saya menghubungi langsung pembuat bahasa ini untuk perbaikan beberapa hal tersebut, dan respon pembuat bahasa ini menurut saya sangat baik. Saat ini implementasi bahasa BAIK masih kurang cocok dipelajari untuk Anda yang ingin belajar pembuatan interpreter (designnya monolitik). Mungkin di masa depan implementasinya juga bisa ditingkatkan agar lebih mudah dipelajari.



Secara singkat, sisi negatif dan positif bahasa BAIK adalah sebagai berikut (perhatikan bahwa sisi negatif ini hanya untuk versi saat ini, masih bisa terus diperbaiki):



Positif



•Cocok untuk pemula

•Banyak contoh program disertakan

•Sudah ada beberapa naskah ilmiah ditulis mengenai bahasa ini

•Pemrograman grafik, database, dan web mudah dilakukan

•Buku panduan bahasa baik tersedia secara gratis

Negatif



•Bahasa BAIK belum mendukung pemrograman modular

•Implementasi dalam C kurang modular

No comments: