BAB I PENDAHULUAN 1.1 Latar Belakang Proses konversi kode sumber suatu aplikasi/program ke bahasa lain sering kali dilakukan oleh pelaku industri perangkat lunak, karena satu dan lain hal (misal : integrasi dengan sistem lain, perubahan perangkat keras, minimasi biaya, perubahan regulasi perusahaan atau perkembangan proses bisnis). Proses konversi kode juga dapat menjadi alat bantu belajar yang efisien bagi mahasiswa yang sedang belajar bahasa pemrograman baru, dengan membandingkan bahasa tersebut dengan bahasa pemrograman lain yang telah dikuasai sebelumnya (dengan catatan kedua bahasa tersebut memiliki banyak kesamaan). Bahasa C dan Pascal telah dikenal lama didunia pemrograman komputer dan industri perangkat lunak. Keduanya lahir di era 70-an, saat-saat penting mulai munculnya generasi UNIX, sistem operasi yang sangat berpengaruh terhadap teknologi komputer. Pascal sering menjadi alat bantu dalam perkuliahan ilmu komputer, karena sintaks-nya yang jelas dan mudah dimengerti, sehingga Pascal telah menjadi alat bantu pemrograman yang identik dengan dunia pendidikan dan akademi. Lain hal dengan C, bahasa ini telah menjadi alat bantu yang paling banyak dipakai dalam industri perangkat lunak [HIP92]. Bahasa C dirancang dekat dengan mesin, sehingga memiliki beberapa kelebihan seperti cepat, efisien dan tangguh. Namun demikian, C tidak serumit dan sesulit bahasa rakitan (Assembly), karena C sangat ekspresif dan permisif [STR87]. Karena alasan itulah, bahasa C seringkali dipakai untuk membangun software-software sistem, seperti sistem operasi, basis data, server, kompilator, dll. Namun seringkali bahasa C dianggap sulit dimengerti, dan otomatis sulit dipelajari, berbeda dengan Pascal, yang sebagian besar orang menganggapnya mudah dipelajari. Celah ini nampaknya sangat bagus untuk dieksplorasi, adanya gap antara kebutuhan mahasiswa untuk belajar bahasa C dan hambatan yang telah diungkapkan diatas, bahwa bahasa C terkenal sulit dimengerti dan dipelajari. Terkadang untuk mempelajari sesuatu, seseorang membutuhkan suatu 11 12 “meta-knowledge” yaitu pengetahuan perantara yang telah diketahui terlebih dulu, sehingga memudahkan proses pembelajaran berikutnya. Sama halnya ketika seseorang belajar bahasa C, bahasa Pascal dapat menjadi metaknowledge yang membantunya belajar bahasa C jauh lebih cepat, dari pada dengan belajar konvensional, misal dengan membaca manual dan mencoba satu persatu contoh sintaks. Proses belajar dengan bantuan meta-knowledge seringkali menjanjikan hasil yang baik. Gambar I-1 Alur Kerja Kompilator Empat Fase [HOL92] 13 Karena itu, dibutuhkan suatu alat yang dapat mengkonversi kode dalam bahasa C ke bahasa Pascal secara otomatis. Proses konversi kode secara otomatis bisa menghemat banyak waktu dan tenaga, sehingga mahasiswa dapat terfokus pada pekerjaan membandingkan kode dalam bahasa Pascal ke C. Aplikasi konversi kode bekerja sangat mirip dengan kompilator yang biasa dipakai untuk mengembangkan aplikasi, bedanya kompilator menerjemahkan / mengkonversi kode ke bahasa tingkat rendah, semisal bahasa rakitan atau bahasa mesin, sedangkan aplikasi konversi kode ( sering disebut juga translator ) menerjemahkan kode input ke bahasa lain dengan tingkat yang sama, misal C ke Pascal, Pascal ke C, Fortran ke C, C ke Java, dll. Karena mirip dengan kompilator, komponen program konversi juga mirip dengan kompilator. Bagan kompilator empat fase [HOL92] ditampilkan pada Gambar I-1. Masingmasing komponen akan dijelaskan lebih lanjut pada Bab II. Karena pengembangan dengan kakas jauh lebih cepat dan menghemat waktu, komponen lexical analyzer dan parser tidak akan dibuat secara hand-coded, namun menggunakan kakas yang sudah dikenal dipakai dilingkungan penulis kompilator. Lexical analyzer dibuat dengan kakas Lex atau Flex, sedangkan parser dibuat dengan parser generator Yacc atau Bison. Karena itu, fokus tugas akhir ini sebagian besar adalah pada pembuatan code generation dan symbol table. Sedangkan tahap satu, tiga dan empat tidak dilakukan karena diluar bahasan dan topik tugas akhir. Hasil keluaran dari kompilator yang berupa kode dalam bahasa rakitan atau intermediate language, pada aplikasi konversi kode ( translator ) akan digantikan dengan kode dalam bahasa Pascal. 1.2 Rumusan Masalah Dari uraian latar belakang diatas, maka rumusan masalah tugas akhir ini adalah a. Apa saja yang harus dilakukan untuk menguraikan suatu kode dalam bahasa C, untuk kemudian dirakit menjadi satu kode dalam bahasa Pascal yang ekivalen. b. Bagaimana suatu sintaks dalam bahasa C diterjemahkan ke sintaks dalam bahasa Pascal 1.3 Tujuan Tujuan dari tugas akhir ini adalah sebagai berikut : 14 a. Membangun prototipe perangkat lunak untuk mengkonversi kode sumber dalam bahasa C ke bahasa Pascal b. Melakukan pengujian terhadap aplikasi yang dibangun 1.4 Batasan Masalah Batasan masalah dalam tugas akhir ini adalah sebagai berikut : a. Bahasa C yang ditangani adalah ANSI C standar, demikian pula kode Pascal yang dihasilkan adalah Pascal standar. b. Bahasa C dan Pascal adalah tetap saja dua bahasa yang berbeda, tujuan perancangan, fitur-fitur dan karakteristiknya juga berbeda. Oleh karena itu, perlu disadari adanya keterbatasan sampai sejauh mana kode dari bahasa C dapat diubah menjadi bahasa Pascal. Keterbatasan konversi ini tidak akan ditangani, dengan demikian proses translasi yang menangani keterbatasan tersebut tidak dilakukan. c. Aplikasi yang dibangun adalah berbasis command-line, sehingga dijalankan dari prompt. 1.5 Metodologi Dalam pengerjaan tugas akhir ini, metodologi yang digunakan dapat dijabarkan dalam langkah-langkah sebagai berikut : a. Studi literatur : pekerjaan pada tahap ini adalah mempelajari hal-hal yang berhubungan dengan pemrosesan kode sebagai bagian kerja dari kompilator, pembandingan sintaks bahasa C ke Pascal, mengidentifikasi keterbatasan kemampuan konversi. b. Analisis pemecahan masalah : tahap ini melanjutkan hasil kerja dari studi literatur, yaitu melakukan analisis masalah bagaimana konversi kode dilakukan. Hal ini meliputi meliputi perancangan : penganalisis leksikal, parser, grammar bahasa C dan Pascal, dan code generator. c. Perancangan aplikasi : tahap ini meliputi pekerjaan membuat model diagram alur data dalam level arsitektur serta membuat rancangan struktur data 15 d. Implementasi aplikasi : pekerjaan utama pada tahap ini adalah mengimplementasikan komponen-komponen yang sudah dirancang ke dalam bahasa pemrograman. e. Pengujian aplikasi : tahap ini meliputi pekerjaan menguji aplikasi dengan sejumlah kasus, sesuai dengan ruang lingkup dan batasan tugas akhir 1.6 Sistematika Laporan Penulisan laporan dari tugas akhir ini mengikuti format berikut : a. Bab I pendahuluan : berisi latar belakang pelaksanaan tugas akhir. Di dalam bab ini juga diuraikan rumusan masalah yang harus diselesaikan dalam tugas akhir, tujuan pelaksanaan tugas akhir, batasan masalah, metodologi pelaksanaan tugas akhir, serta sistematika laporan tugas akhir. b. Bab II dasar teori : berisi teori-teori dasar dan umum yang diperlukan untuk memahami pembahasan pada bab-bab berikutnya dari tugas akhir. c. Bab III analisis pemecahan masalah : bab ini berisi analisis pemecahan masalah penerjemahan kode dari C dan Pascal. Di sini diuraikan langkah-langkah logis dan runut hasil analisis, langkah-langkah ini nantinya diterjemahkan menjadi proses pembangunan perangkat lunak. Bab ini secara langsung menjawab pertanyaan-pertanyaan yang ada dalam rumusan masalah pada bab I. d. Bab IV analisis dan perancangan perangkat lunak : berisi penerjemahan hasil analisis bab III menjadi sejumlah analisis dalam bidang perangkat lunak. Bab ini juga berisi rancangan struktur data dan beberapa elemen penting lain dari perangkat lunak yang dibangun. e. Bab V implementasi dan pengujian : berisi implementasi hasil rancangan dari bab IV ke dalam kode bahasa C. Bab ini juga membahas sejumlah proses pengujian yang dilakukan terhadap perangkat lunak yang selesai dibuat. Pengujian ini dilakukan dengan sejumlah kasus yang sesuai dengan ruang lingkup pelaksanaan tugas akhir dan batasan masalah yang diselesaikan.