Pak Bernaridho ysh, Menurut saya agak terburu-buru untuk mendengung-dengungkan bahasa Nusa ini ke khalayak ramai. Saya tidak tahu sejauh apa Nusa ini berkembang dari bahasa Batak (yang setahu saya sudah dikembangkan/dipikirkan lama sekali), tapi masih terlalu banyak lubang di konsep bahasa Nusa maupun implementasi compiler Nusa sehingga sulit membuat program selain program main-main yang kecil. Di bawah ini saya berikan aneka macam kekurangan yang menurut saya masih sangat penting untuk ditangani sebelum bahasa ini terlalu didengung-dengungkan di publik. Menurut saya percuma jika bahasa ini sekedar menjadi bahasa seperti Batak yang akhirnya tidak jadi diteruskan. Alasan utama mengapa bahasa batak tidak bisa maju adalah bahwa terlalu banyak bicara, dan terlalu sedikit kerja untuk memikirkan dan mengimplementasikan bahasa tersebut. Implementasi sebuah compiler itu tidak sulit, dan saya yakin bahwa banyak sekali orang di Indonesia yang bisa mengimplementasikan compiler. Saya juga yakin bahwa saya bisa mengimplementasikan compiler nusa ini, jika konsep dan tujuan nusa ini sudah jelas, dan berguna. Pekerjaan saya saat ini adalah researcher/senior programmer yang mengimplementasikan mathematical modelling language bersama seorang professor dari Belanda. Kekurangan dari segi konsep bahasa Nusa: 1. Grammar bahasa yang lengkap masih tidak disediakan. Saat ini ada banyak ketidakkonsistenan antara dokumentasi, contoh program, dan translator/compiler. Contoh: file ArrayB00.nusa, apakah operator modulo itu didefinisikan sistem? apakah "/=" merupakan operasi assignment yang valid? (compiler selalu memberi warning 'possible loss of data' dan tidak menghasilkan file interm). Grammar yang lengkap akan memudahkan banyak hal, misalnya grammar pengembangan syntax highlighting untuk aneka macam editor, pembuatan tools untuk code formatting (seperti program indent), documentation extractor (seperti Doxygen) dll. Grammar juga bisa menjawab pertanyaan yang jawabannya tidak tertulis di dokumentasi, misalnya operasi apa saja yang boleh didefinisikan untuk infix? apakah boleh mendefinisikan operator baru (misalnya operator '!'). 2. Tidak ada satu set contoh program yang dapat digunakan untuk menguji semua aspek Compiler dan Linker nusa. Contoh program sebaiknya disertai dengan output yang diharapkan. 3. Konsep-konsep penting masih belum ada di versi pertama ini, seperti misalnya pointer/reference dan alokasi dinamis. Hal ini akan menyulitkan dalam implementasi aneka algoritma yang kompleks. Penambahan satu konsep bisa mengubah semantik banyak hal. 4. Masih belum jelas apa kelebihan bahasa ini. Ini hal yang sangat penting. Apakah tujuan utama dibuatnya bahasa ini? misalnya - General purpose language, tapi tidak untuk system programming (misal Java) - Educational (Pascal) - System programming (C, D) - dsb Mungkin Anda akan menjawab, "bisa untuk semua", semua bahasa memang bisa untuk apapun, tapi ada beberapa hal yang tidak bisa dilakukan oleh suatu bahasa, atau akan memakan waktu lama. Sepertinya yang didengungkan adalah ortogonalitas, tapi dalam design saat ini, masih ada beberapa hal yang tidak ortogonal, misalnya: * Semantic pass by address yang aneh untuk tipe array * Operasi writeline atau readline bisa memiliki banyak parameter, sementara fungsi lain tidak bisa (tertulis bahwa hal ini akan berubah, dan akan mendukung elipsis di masa depan). Parameter untuk operasi writeline juga bisa memiliki width specifier, sementara fungsi yang lain tidak bisa (hal ini aneh). 4. Konektivitas dengan java diharapkan, tapi pemetaannya sama sekali belum lengkap, misalnya bagaimana menerjemahkan interface Java ke konsep NUSA? dalam pemrograman Swing/AWT ini sangat diperlukan (misalnya callback untuk actionListener harus mengimplementasikan ActionListener). 5. modularitas rendah (tidak ada konsep package dan/.atau namespace), tidak bisa membuat module yang penamannya nested. Masalah ini juga berkaitan dengan akses ke library Java. Jika akses ke library Java diimplementasikan, bagaimana bisa mengakses package Java? 6. Apakah bahasa ini dirancang untuk sistem yang modern? jika ya, maka konsep multi threading perlu dimasukkan. Java dan bahasa-bahasa .Net sudah mendukung konsep ini. C++ akan mendukung konsep ini. Kekurangan dari segi implementasi compiler saat ini: 1. Penggunaan backend C tapi tidak mempedulikan keyword C misalnya deklarasi 'integer struct' akan error ketika dicompile (seharusnya setiap identifier di Nusa diberi prefix ketika diterjemahkan ke C). 2. pass by address belum diimplementasikan (selalu by value) 3. penanganan module dan library masih belum beres, program sederhana yang saya coba belum berhasil di Compile/Link dengna benar. 4. penanganan symbol table masih kurang benar, misalnya kode ini gagal dilink Program test; integer f(integer a) { return (3+a); } integer a() { return 4; } void main() { writeline(f(1)) } Karena penanganan namespace untuk parameter integer a di f dengan nama fungsi a masih kurang benar. Apabila definisi fungsi ditukar posisinya (a lalu f), maka program sukses di-compile dan link, tapi eksekusi akan menghasilkan angka yang "kacau" karena kode yang dihasilkan adalah mengambil alamat fungsi a dan ditambahkan dengan 3. 5. fungsi setvarparam untuk int64 belum diimplementasikan di kode yang diupload ke yahoogroups (hal ini mudah ditambahkan). 6. Menggunakan proGrammar yang tidak open source. Tools lain banyak yang open source (misalnya ANTLR) dan cukup mudah digunakan. Beberapa hal dalam dokumen "Semantic-phase" sepertinya agak "asal tulis", misalnya: * format OMF untuk object, tapi memberikan target executable untuk Linux (padahal hampir semua menggunakan format ELF). * encoding memakai UTF-8, berarti ingin mendukung unicode, tapi tipe karakter sepertinya tidak mendukung unicode. Escape sequence juga tidak mendukung unicode (mestinya bisa \XXXX agar lebih mudah mengentry karakter unicode). Penanganan file juga aneh, karena menggunakan ^Z yang merupakan EOF di DOS/Windows/OS2, tapi diabaikan di sistem Unix. -- Regards Yohanes http://tinyhack.com/