BAB I PENDAHULUAN

advertisement
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.
Download