PERANCANGAN DAN IMPLEMENTASI

Download manusia. Misalnya kata while dalam bahasa C memiliki pengertian yang ... di- lihat dalam kehidupan sehari-hari. .... umum finite automata di...

0 downloads 576 Views 386KB Size
PERANCANGAN DAN IMPLEMENTASI INTERPRETER BAHASA X PADA NOKIA 9210i Maukar1, Resza Ciptadi2 1. Universitas Gunadarma, 2. Universitas Bina Nusantara

Abstrak Dalam penelitian ini dilakukan perancangan interpreter untuk bahasa X dengan teknik recursive descent parsing menggunakan pendekatan pemrograman berbasis objek, dan mengimplementasikan-nya pada perangkat mobile device, yang dalam hal ini adalah Nokia 9210i. Metode penelitian yang digunakan adalah studi pustaka yang dimaksudkan untuk mencari informasi-informasi yang berkaitan dengan penelitian yang sedang dilakukan. Serta praktek di lapangan yang bermaksud untuk mencoba hasil penelitian pada komputer maupun pada mobile device tersebut. Serta mencari informasi-informasi yang bersifat teknis. Hasil yang dicapai adalah sebuah interpreter bahasa X yang dapat dipergunakan pada mobile device, dalam hal ini adalah Nokia 9210i. Namun belum dilakukan penelitian lebih lanjut apakah interpreter bahasa yang telah dibuat dapat digunakan pada perangkat mobile device lain selain Nokia 9210i. Parser bahasa yang dibuat dengan pendekatan object oriented programming, dapat berjalan dengan baik pada interpreter bahasa X, mobile device (Nokia 9210i) tidak hanya dapat digunakan untuk menjalankan aplikasi akan tetapi bisa juga digunakan untuk mengembangkan aplikasi, serta teknik recursive descent parsing dapat digunakan untuk perancangan parser dengan pendekatan object oriented programming. Diharapkan untuk masa yang akan datang interpreter bahasa X ini dapat dikembangkan kembali sehingga interpreter bahasa X memiliki banyak fungsionalitas, dan tidak hanya didukung oleh Nokia 9210i saja, melainkan untuk seluruh mobile device yang memiliki teknologi Java di dalamnya. Kata Kunci: Interpreter, parser, mobile device

PENDAHULUAN Bahasa merupakan alat yang digunakan untuk berkomunikasi. Tidak hanya untuk melakukan komunikasi atara manusia dengan manusia yang lainnya, namun dalam hal ini

bahasa juga menjembatani komunikasi antara manusia dengan komputer. Bahasa yang digunakan manusia untuk berkomunikasi dengan komputer dikenal dengan bahasa

JURNAL INFORMATIKA & KOMPUTER, NO. 3, JILID 8, 2003 130

pemrograman (programming language). Bahasa pemprograman adalah alat untuk menjembatani komunikasi antara manusia dengan komputer (Metsker, 2001). Karena pada dasarnya komputer mengerti hanya sedikit bila tidak bisa dibilang tidak mengerti sama sekali. Komputer dapat menambahkan angka dan memindahkan string tapi tidak mengerti (Metsker, 2001). Sementara bahasa alami manusia cenderung ekspresif. Itulah sebabnya bahasa pemprograman menjadi penting. Bahasa pem-programan dibentuk dari bahasa alami manusia. Misalnya kata while dalam bahasa C memiliki pengertian yang sama untuk bahasa Inggris. Kompromi ideal antara bahasa alami manusia dalam hal ini bahasa Inggris dengan bahasa pemprograman disesuaikan dengan konteks dan tujuan apa yang ingin dikerjakan. Bahasa seperti SQL misalnya lebih ideal untuk bekerja dengan database dari pada bahasa fungsional seperti Prolog yang lebih cocok untuk me-ngembangkan aplikasi kecerdasan buatan. C misalnya merupakan bahasa terbaik dalam pemprograman sistem operasi dibandingkan dengan C++ yang lebih cocok untuk me-ngembangkan aplikasi yang berjalan diatas sistem operasi. Perkembangan bahasa pe-mrograman ini tidak saja ber-pengaruh pada pesatnya teknologi komputer, namun juga teknologi yang digunakan dalam alat yang lebih kecil dari komputer, dalam hal ini adalah mobile device. Pemanfaatan mobile device dewasa ini makin ber-kembang.

131

Hal ini tentu saja bisa di-lihat dalam kehidupan sehari-hari. Berbagai kalangan sudah mulai tidak asing lagi dengan perangkat mobile device, seperti handphone, PDA (Personal Digital Assistance), PocketPC, dan perangkat mobile device lainnya. Perkembangan pada perangkat ini tentu tidak dapat bisa dilepaskan begitu saja dengan makin pesatnya perkembangan teknologi hardware maupun software yang ada. Jika di-lihat lima tahun ke belakang, handphone hanya berupa alat komunikasi yang bisa digunakan dimana-mana selama masih di dalam area jangkauan jaringannya. Sekarang handphone tidak saja bisa digunakan untuk ber-komunikasi dengan orang lain, namun bisa juga digunakan untuk mengatur jadwal keseharian kita, membuat foto dengan kamera digital yang terintegrasi, bahkan mengakses internet dimana saja. Selain itu, bagian piranti lunak (software) yang digunakan oleh mobile device ini juga mengalami peningkatan yang sangat berarti. Salah satu penyebab makin banyaknya aplikasi-aplikasi yang telah dibuat untuk dipakai pada perangkat ter-sebut adalah adanya bahasa pe-mrograman yang bernama Java. Walaupun Java bukan satu-satunya bahasa yang dapat digunakan untuk membuat suatu aplikasi pada mobile device, namun Java bisa dikatakan bahasa yang terbaik saat ini dalam menangani seluruh proses yang ada pada mobile device. Java dengan J2ME (Java 2 Micro Edition) dapat mengakomodir segala kebutuhan para pembangun aplikasi untuk mobile de-

JURNAL INFORMATIKA & KOMPUTER, NO. 3, JILID 8, 2003

vice dari pada bahasa-bahasa yang lainnya. Salah satu keunggulan Java dibandingkan dengan bahasa-bahasa lainnya, seperti C atau C++, adalah ke-mampuannya untuk dijalankan pada seluruh mesin mobile device yang ada tanpa harus mengubah atau melakukan kompilasi ulang terhadap program. Hal ini sesuai dengan moto dari Java itu sendiri yaitu write once run anywhere. Ruang lingkup dari penelitian ini meliputi: bahasa yang dibuat hanya sebatas bahasa sederhana yang hanya memiliki fungsi-fungsi dasar, sehingga hanya bisa melakukan operasi-operasi sederhana. Bahasa yang dibuat tidak diharapkan untuk mengganti atau menyaingi bahasabahasa pemrograman yang sudah ada. Bahasa ini baru diimplementasikan pada satu jenis mobile device, yaitu Nokia 9210i Communicator. Bahasa dibuat dengan menggunakan bahasa pemrograman Java. Namun belum bisa dipastikan bahwa bahasa yang dibuat bisa dipergunakan pada seluruh mobile device yang memiliki teknologi java terintegrasi. Pe-rancangan dibuat dengan meng-gunakan UML (Unified Modeling Language). Komputer digunakan hanya sebagai alat bantu pe-ngembangan.

TINJAUAN PUSTAKA Bahasa Menururt Metsker (2001, p3), bahasa adalah sebuah kumpulan string. Sedangkan menurut Ambary (1986, p8), bahasa adalah lambang bunyi suara yang dihasilkan oleh alat ucap

manusia sebagai alat ko-munikasi antar anggota masyarakat. Stringstring yang membentuk se-buah bahasa adalah elemen dari bahasa tersebut, menurut Metsker (2001, p3). Pengertian Kompilator (Compiler) Kompilator menbaca suatu program yang ditulis dalam bahasa sumber (source language) dan me-nerjemahkan bahasa sumber tadi ke dalam suatu bahasa lain yang di-sebut dengan bahasa sasaran (target language). Proses penerjemahan yang dilakukan oleh kompilator ini disebut proses kompilasi (compiling). Tahap-Tahap Kompilasi : 1. Tahap Analisis Pada tahap analisis, program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian yang kemudian akan di-representasikan ke dalam suatu bentuk antara dari program sumber. Tahap analisis ini terdiri dari 3 proses utama yaitu : a. Analisis leksikal / analisis linier / pembacaan sumber (scanning). b. Analisis sintaktik / analisis hirarki / penguraian (parsing). c. Analisis semantik. 2. Tahap sintesis. Pada tahap sintesis program sasaran dibentuk berdasarkan re-presentasi antara yang dihasilkan pada tahap analisis. Tahap sintesis terdiri dari 3 proses utama yaitu : a. Intermediate code generator. b. Code optimizer. c. Code generator.

MAUKAR, CIPTADI, PERANCANGAN DAN IMPLEMENTASI ….

132

Parser Menurut Metsker (2002, p7), parser adalah sebuah objek yang mengenali elemen dari sebuah bahasa dan menterjemahkan setiap elemen menjadi hasil yang dimaksud. Kemampuan utama dari sebuah parser adalah untuk menentukan apakah string yang dituliskan me-rupakan pola dari bahasa atau bukan. Kolaborasi parser Dalam konteks pemrograman berbasis objek maka pekerjaan mengenali sintaks dilakukan oleh sebuah objek bernama parser yang bekerja sama dengan objek lain yang bernama Assembler sebagai objek penterjemah. Objek ketiga berfungsi sebagai pengawas dan penyedia tempat kerja pekerjaan yang sudah dilakukan disebut objek Assembly. Metoda parsing 1. Penguraian dari atas ke bawah (Top-Down Parsing). Penguraian dari atas ke bawah dapat dipandang sebagai suatu usaha untuk mencari derivasi paling kiri (leftmost) dari suatu rangkaian masukkan. Dalam topdown parsing dikenal 2 metode, yaitu : a. Recursive-Descent Parsing. b. Predictive Parsing.

2. Penguraian dari bawah ke atas. (Bottom up Parsing). Penguraian dari bawah ke atas lebih banyak mempergunakan penguraian shift-reduce. Penguraian shift-reduce berusaha untuk membuat pohon parser bagi

133

suatu masukkan dimulai dari bawah (leaf) dan bergerak ke atas menuju puncak (root). Pada setiap langkah reduksi suatu sub string yang sesuai dengan sisi kanan suatu produksi itu, langkah itu sering disebut derivasi (rightmost).

3. Universal Parsing. Pada metode ini menggunakan algoritma Cocke-Younger_Kasami dan algoritma Early yang dapat menguraikan semua jenis tata bahasa (grammar), tetapi metode ini tidak efisien diguna-kan dalam pembuatan kompilator sehingga metode ini jarang di-gunakan. Finite automata Finite automata adalah suatu model matematika dari sebuah sistem dengan masukkan (input) dan keluaran (output) yang pasti dan jelas. Finite automata ditunjukkan dalah 5 tupple (Q,Σ,δ,q0,F), dimana Q adalah himpunan dari state, Σ adalah himpunan alfabet sebagai masukkan, q0 adalah melambangkan state awal, F adalah melambangkan final state, dan δ adalah fungsi transisi antar state berdasarkan masukkan ter-tentu. Finite automata digambarkan menggunakan graph berarah. Secara umum finite automata dibedakan menjadi 2 jenis, yaitu : 1. Non deterministik Finite Automata (NFA). Adalah suatu finite automata yang bisa mempunyai 1 atau lebih transisi dari suatu state ke state lain dengan simbol masukkan yang sama.

JURNAL INFORMATIKA & KOMPUTER, NO. 3, JILID 8, 2003

2. Deterministik Finite Automata (DFA). Adalah suatu finite automata yang hanya boleh mempunyai 1 transisi dari satu state ke state lain dengan simbol masukkan yang sama. Context Free Grammar (CFG) Menurut Winston (1991, p310), context free grammar adalah sebuah metode yang digunakan untuk mendefiniskan bagian kecil dari suatu kalimat (grammar). CFG terdiri atas : Terminal, Non terminal, Start symbol, Produksi. CFG digunakan untuk melakukan parsing terhadap kalimat yang akan dimasukkan dan informasi yang dimiliki aladah dalam bentuk terminal sehingga kalimat tersebut dapat dipahami. Pengertian interpreter Menurut Sukamdi (1995, p1), interpreter adalah program pe-nerjemah yang menterjemahkan instruksi-instruksi yang diberikan oleh pemakai sedemikian rupa sehingga komputer mampu memahaminya dan mengerjakannya. Menurut David Greis (1971, p2), interpreter adalah program yang menerima sebuah program sumber yang ditulis dalam suatu bahasa sebagai input dan mengeksekusinya. Perbedaan interpreter dengan kompilator 1. Interpreter memberikan hasil pengerjaan instruksi-instruksi memasukkannya dan tidak menghasilkan objek program untuk dieksekusi, sedangkan kompiler

2.

3.

4.

menghasilkan kode obyek yang biasanya berupa file EXE. Interpreter memberikan kebebasan untuk melakukan modifikasi atau penambahaan kepada program ketika program di-eksekusi, sedangkan kompiler mengharuskan program di-kompilasi ulang jika ada modi-fikasi terhadap program. Pada interpreter bersifat machine independent karena tidak ada kode mesin yang dihasikan, sedangkan kompiler bersifat machine dependent. Interpreter memerlukan sumber daya piranti keras yang lebih besar karena harus selalu me-ngecek source program pada saat dieksekusi.

ANALISIS DAN PERANCANGAN Analisis dan disain yang terdapat pada bab ini. Pada bagian analisa kami mendefinisikan jenis token yang dapat dikenali oleh proses scaning yang demikian juga bahasa yang dapat dikenali melalui proses parsing. Pada bagian desain dicoba dibuat definisi formal dari jenis token yang dapat dikenali, selain itu untuk mendefinisikan bahasa yang dapat dikenali maka di desain Conteks Free Grammar yang sesuai. Conteks Free Grammar yang dibuat disini sangat terbatas pada pengenalan bahasa ekspresi yang sangat sederhana diataranya mewakili ekpresi aritmetik, ekpresi kontrol (if), ekpresi perulangan (for), ekspresi manipulasi string. Desain dilakukan dengan standar

MAUKAR, CIPTADI, PERANCANGAN DAN IMPLEMENTASI ….

134

formal yang biasa dipakai dalam teknik kompilasi. Conteks Free Grammar sebagai desain bahasa harus diyakinkan tidak ambigu untuk itu ambiguitas bahasa harus dihilangkan dalam hal ini dalam ekspresi kontrol if dengan else. Pernyataan aritmetik juga dibuat tidak rekursife kiri karena teknik parser yang dipakai top-down. Lexikal analisis dilakukan oleh tokenizer, tokenizerstate dan subkelasnya yang berfungsi membentuk token sesusai dengan jenis token yang didefinisikan. Proses scanner melakukan scaning pada untaian string yang terdapat pada stream. Bila untaian string tertentu sesuai polanya dengan jenis token yang sudah didefinisikan maka ia akan di bentuk menjadi token yang bersangkutan. Parsing atau syntaxis analisis dilakukan menggunakan teknik yang disebut sebagai Recursive-decent parsing yang merupakan sebuah teknik yang termasuk top down karena analisa bahasanya menggunakan struktur pohon yang ditelusuri mulai dari root sampai leave.Top down dipilih karena teknik ini menghabiskan lebih sedikit sumber daya dibandingkan dengan teknik bottom-up, meskipun teknik bottom up memiliki keuntungan dapat mengenali lebih banyak grammar dari yang dikenali oleh teknik top down. Pertimbangan sumberdaya menjadi penting mengingat parser ini akan ditempatkan pada mobile device yang sumber dayanya amatlah terbatas. Sebenarnya teknik top down dapat diimplementasi dengan cara lain

135

selain menggunakan pohon strukrur yaitu dengan menggunakan tabel parsing. Kami tidak mengetahui mana dari kedua teknik ini memiliki kinerja dan keperluan sumber daya tapi pada kasus ini kami menggunakan struktur pohon dengan backtracking. Kami melakukan definisi pohon lengkap pada memori yang nantinya akan dipakai pada proses pencocokan. Penanganan kesalahan dilakukan dengan solusi paling sederhana yaitu panic mode yaitu bila ada kesalahan pencocokan maka akan langsung melakukan pesan kesalahan. Proses selanjutnya bila ada proses parsing telah dilakukan maka akan pengolahan untuk memperoleh perintah java yang sesuai. Proses interpretasi ini melakukan menggunakan mekanisasi pohon fungsi dan stack untuk menghasilkan command yang dapat dijalankan oleh java. Selain apa yang telah dibahas sebagai engine dibelakang maka untuk antar mukanya digunakan sebuah aplikasi yang diberi nama BXEditor. BXEditor fungsi utamanya adalah sebagai sumber input yang berupa bahasa yang akan di interpretasi dan yang tak kalah pentingnya sebagai media output untuk perintah yang akan mengeluarkan hasil pada media output.

IMPLEMENTASI DAN EVALUASI BXEditor adalah program aplikasi pembantu sederhana yang berfungsi sebagai tempat menginterpretasikan source code dari bahasa X dan me-lihat hasilnya. BXEditor memang tidak

JURNAL INFORMATIKA & KOMPUTER, NO. 3, JILID 8, 2003

mempunyai fugsionalitas yang sempurna tetapi penulis menganggap

cukup keberadaannya untuk mengimplementasikan bahasa X.

Gambar 1. Tampilan awal “Menu Utama” BXEditor pada Emulator Nokia 9210.

Gambar 2. Tampilan “Result Area” tempat hasil interpretasi ditampilkan.

Gambar 3. Penulisan source code pada Code Editor.

MAUKAR, CIPTADI, PERANCANGAN DAN IMPLEMENTASI ….

136

Gambar 4. Tombol Run untuk mengeksekusi source code.

Gambar 5. “Message Area” menampilkan pesan kesalahan beserta solusinya.

Gambar 6. Source code setelah di koreksi.

137

JURNAL INFORMATIKA & KOMPUTER, NO. 3, JILID 8, 2003

Gambar 7. “Result Area” menampilkan hasil eksekusi source code.

Gambar 8. Tombol “Source Code” untuk kembali ke Layar Code Editor

Evaluasi • BXEditor di buat untuk semata mata membantu penulis mengimplementasikan bahasa X sehingga tidak mempunyai fungsionalitas yang sempurna. • Nokia 9210i, merupakan mobile device yang memiliki kemampuan lebih dari mobile device yang ada saat ini.

• •



Nokia 9210i belum mendukung beberapa teknologi baru seperti GPRS dan MMS. Personal JavaTM pada Nokia 9210i merupakan kunci penting dari produk ini untuk membuat aplikasi yang dapat berjalan diatasnya. Keterbatasan kemampuan prosesor dan physical memory pada Nokia 9210i dapat menghambat

MAUKAR, CIPTADI, PERANCANGAN DAN IMPLEMENTASI ….

138



• •

pembuatan aplikasi dengan fungsionalitas yang tinggi. Software aplikasi yang di-buat untuk dijalankan pada Nokia 9210i harus di-kompilasi dengan JDK versi 1.2.1.004, bila tidak maka aplikasi itu tidak akan berjalan. Sehingga pe-ngembang tidak dapat me-makai fungsi – fungsi baru yang bermanfaat pada JDK versi terbaru. Bahasa X hanya bisa menjalankan operator logika dan aritmatika yang sederhana. Karena bahasa X baru hanya bisa menjalankan operator logika yang se-derhana maka BXEditor tidak bisa disebarluaskan untuk tujuan komersil tetapi hanya digunakan oleh pe-nulis untuk keperluan pe-nelitian.

PENUTUP Object oriented programming dapat digunakan dalam pembuatan parser, serta parser tersebut berjalan dengan baik dalam interpreter bahasa X. Mobile device yang digunakan (Nokia 9210i), tidak hanya bisa untuk menjalankan aplikasi, namun juga bisa digunakan untuk mengembangkan aplikasi. Teknik recursive descent parsing dapat dipergunakan untuk pe-rancangan parser dengan pen-dekatan object oriented programming. Proses pembuatan interpreter sebuah bahasa merupakan suatu hal yang me-narik untuk dilakukan, diharapkan ke depan banyak mahasiswa yang tertarik untuk me-ngembangkan lebih lanjut interpreter ba139

hasa X ini, sehingga interpreter bahasa X ini memiliki banyak fungsionalitas dan lebih bisa men-dukung banyak platform yang tentunya mendukung teknologi Java. Diharapkan interpreter bahasa X ini dapat mendorong mahasiswa untuk merancang dan mengembangkan hal yang sejenis di masa yang akan datang, yang tentunya dengan metode dan alat bantu yang berbeda dari interpreter bahasa X ini. Agar dapat menangani statement yang lebih kompleks, grammar perlu di-perluas dengan menambahkan produksi untuk statement-statement yang tidak terdapat pada parser ini. Sebagai bahan penelitian yang menarik juga jika ke depan ada mahasiswa yang mencoba mem-bandingkan antara teknik recursive descent parsing dengan Tabel parsing.

DAFTAR PUSTAKA Aho, Alfred V., Senthi, R, Villman, Jeffrey D. 1986. Compiler Principles, Techniques, and Tools. Addison Wesley Publish-ing Company, USA. Ambary, Abdullah. 1986. Intisari Tata Bahasa Indonesia. Penerbit Djatmika, Bandung, Indonesia. Firrar Utdirartatmo. 2001. Teknik Kompilasi. Penerbit J & J Learning, Yogyakarta, Indonesia. Gamma, et.al. 1995. Design Pattern. Addison-Wesley, USA. Gries, David. 1971. Compiler Construction for Digital Computers. Willey International Edition, New York.

JURNAL INFORMATIKA & KOMPUTER, NO. 3, JILID 8, 2003

Metsker, Steven John. 2001. Building parser With Java. AddisonWesley Publishing Company, New York. Pittman, J dan Peters, J. 1992. The Art of Conpiler Design Theory and Practice. Prentice-Hall International. Inc., New Jersey. Sukamdi. 1995. Merekayasa Interpreter (Sebuah Penerapan Teknik Kompilasi). PT. Elex Komputindo, Jakarta. Winston, Patrick Henry. 1984. Arficial Inteligence 2nd Edition. Edison Wesley, California.

MAUKAR, CIPTADI, PERANCANGAN DAN IMPLEMENTASI ….

140