t3KniK k0mP!leR

Dasar dasar C++

Tutorial ini untuk siapa saja, walaupun anda belum pernah melakukan pemrograman, atau jika andapun berpengalaman dalam pemrograman dengan bahasa pemrograman lain tapi ingin mempelajari bahasa C++, ada baiknya anda mengikuti penjelasan disini.

C++ adalah sebuah bahasa pemrograman yang memiliki banyak dialek, seperti bahasa orang yang banyak memiliki dialek. Dalam C++, dialek bukan disebabkan oleh karena si pembicara berasal dari Jepang atau Indonesia, melainkan karena bahasa ini memiliki beberapa kompiler yang berbeda. Ada empat kompiler umum yaitu : C++ Borland, C++ Microsoft Visual, C/386 Watcom, dan DJGPP. Anda dapat mendownload DJGPP atau mungkin saja anda telah memiliki kompiler lain.

Setiap kompiler ini agak berbeda. Setiap kompiler akan dapat menjalankan fungsi fungsi standar C++ ANSI/ISO, tetapi masing masing kompiler juga akan dapat menjalankan fungsi fungsi nonstandard (fungsi fungsi ini, agak mirip dengan ucapan yang tidak standar yang diucapkan orang diberbagai pelosok negeri. Sebagai contoh, di New Orleans kata median disebut neutral ground). Kadang kadang pemakaian fungsi nonstandard akan menimbulkan masalah pada saat anda hendak mengkompilasi kode sumber data (source code) (yaitu program berbahasa C++ yang ditulis oleh seorang programer) mempergunakan kompiler yang berbeda. Tutorial ini tidak terlepas dari masalah seperti itu.

Bila anda belum mempunyai sebuah kompiler, disarankan agar anda segera memiliki sebuah kompiler. Sebuah kompiler sederhana sudah cukup untuk dipergunakan oleh anda dalam mengikuti tutorial ini.

Bahasa pemrograman C++ adalah bahasa yang amat berbeda. Untuk kompiler C++ berbasis DOS, akan memerlukan beberapa kata kunci (keywords); keyword sendiri tidak cukup untuk difungsikan sebagai input dan output. Walau hampir semua fungsi dalam file library tampaknya bias diakses oleh header filenya. Coba kita lihat program sesungguhnya :
#include
int main()
{
cout<<“HEY, you, I’m alive! Oh, and Hello World!”;
return 0;
}

Marilah kita lihat elemen dari program diatas. Tanda #include adalah sebuah prosesor pengarah yang mengatakan kepada kompiler untukmeletakan kode dari header file iostream.h kedalam program. Dengan menyertakan header file, anda dapat mengakses banyak fungsi fungsi berbeda. Dalam contoh diatas, fungsi cout memerlukan file iostream.h.

Pada baris berikutnya yang penting adalah int main(). Baris ini mengatakan kepada kompiler bahwa ada sebuah fungsi bernama main, yang mana fungsi itu mengembalikan sebuah integer, sehingga diberi tanda int. Tanda kurung ({ dan }) menandakan awal dan akhir fungsi dalam program diatas dan menghentikan kode lainnya. Jika anda memakai bahasa Pascal, anda akan mempergunakan perintah BEGIN dan END.

Baris berikutnya dari program diatas agak aneh. Jika anda menulis sebuah program mempergunakan bahasa lain, anda akan mengetahui bahwa perintah print akan menampilkan text di layar monitor. Dalam bahasa C++ tidaklah demikian, pemakaian fungsi cout dipakai untuk menampilkan text di layar monitor anda. Itu juga memakai tanda atau symbol <;<; , yang diketahui sebagai operator pemasukan ( insertion operators). Tanda tersebut mengatakan kepada kompiler agar segera menghasilkan output sesuai dengan input anda. Tanda semicolon ditambahkan kedalam bagian akhir dari semua fungsi yang dipanggil dalam bahasa C++; tanda seterusnya memperlihatkan variable yang anda deklarasikan.

Pada baris itu juga ada kode yang memerintahkan fungsi main kembali ke 0. Pada saat satu kali kembali diproses, itu dilakukan melalui system operasi. Sebagai catatan, pendeklarasian fungsi main yang tidak diinginkan memiliki proses kembali, dapa ditambahkan – void main() – dan biasanya itu berfungsi dengan baik; namun cara ini merupakan cara yang kurang baik.

Tanda kurung terakhir berperan sebagai penutup agar fungsi dihentikan. Anda bias mencobamengoperasikan fungsi ini didalam sebuah kompiler. Anda dapat melakukan cut dan paste kode diatas kedalam sebuah file, dan menyimpannya sebagai file.cpp, dan kemudian anda buka file itu dari dalam kompiler anda. Jika anda memakai baris perintah kompiler seperti yang ada dalam Borland C++ 5.5, sebaiknya anda membaca dahulu instruksi kompiler tentang bagaimana cara melakukan kompilasi (how to compile).

Comment atau komentar sering dipakai dalam penulisan program. Ketika anda mengatakan kepada kompiler bahwa sebuah bagian dari program anda adalah tex komentar, kompiler tidak akan memasukan itu sebagai perintah pemrograman. Untuk membua sebuah komentar dipergunakan tanda //, yang mengaakan kepada kompiler bahwa baris berikut adalah komentar, atau memakai tanda /* dan kemudian diakhiri tanda */ untuk menandai bahwa segala yang ada antara kedua tanda ini adalah komentar. Beberapa kompiler akan mengubah warna area komentar, tetapi beberapa kompiler lain tidak. Berhati hatilah dalam menulis program anda agar kode program anda tidak dianggap sebagai komentar oleh kompiler karena dapat mempengaruhi output program yang anda buat.

Selanjutnya anda harus dapa menuliskan program sederhana untuk menampilkan informasi yang anda ketikan kedalamnya. Selain itu, program juga bisa dibuat untuk menerima input. Fungsi yang dipakai adalah cin, dan diikuti dengan tanda >>.

Tentu saja sebelum anda mencoba menerima input, anda harus memiliki tempat penyimpan input. Dalam pemrograman, input dan data disimpan dalam variable. Ada beberapa jenis variable. Pada saat anda ingin mengatakan kepada kompiler sebuah variable yang anda deklarasikan, anda harus menyertakan tipe data dan nama dari variable itu. Beberapa cara dasar adalah dengan menuliskan include char, int, dan float.

Sebuah variabel char menyimpan sebuah karakter tunggal; variabel int akan menyimpan integer (bukan bilangan desimal), dan variables float akan menyimpan bilangan desimal. Setiap variable – char, int, dan float – merupakan sebuah kata kunci (keyword) yang and pergunakan pada saat anda mendeklarasikan sebuah variabel. Untuk mendeklarasikan sebuah variable anda memakai syntax type . Ini diijinkan untuk mendeklarasikan variable multiple dari jenis variable yang sama pada baris yang sama; masing masing variabelnya dipisahkan dengan tanda koma. Deklarasi sebuah variable atau sekelompok variabel dapat diikuti tanda semicolon (Catatan, tanda ini sama dengan yang diterapkan pada prosedur dimana anda akan memanggil sebuah fungsi).

Jika anda tidak memakai sebuah variable yang dideklarasikan sebelumnya. program anda tidak akan dapat dioperasikan (atau di run), dan anda akan menerima pesan error yang memberitahu anda bahwa anda telah melakukan kesalahan.

Berikut adalah beberapa contoh deklarasi variable:
int x;
int a, b, c, d;
char letter;
float the_float;

Walaupun anda boleh memiliki banyak variable dengan jenis yang sama, anda tidak dapat memiliki variable dengan nama yang sama. Begitu pula anda tidak dapat memiliki variable dan fungsi dengan nama yang sama.
#include < iostream.h >
int
main()
{
int thisisanumber;
cout<<“Please enter a number:”;
cin>>thisisanumber;
cout<<“You entered: “<
return 0;
}

Coba kita bahas program diatas ini setiap barisnya. Keyword int mendeklarasikan thisisanumber menjadi sebuah bilangan integer. Fungsi cin>> membaca sebuah nilai ke dalam thisisanumber; user harus menekan tombol enter sebelum bilangan bias dibaca oleh program. Ingatlah, bahwa variable yang telah dideklarasikan adalah sebuah integer; jika user cenderung nmenulis bilangan decimal, itu akan diproses dengan tidak tepat (sebab komponen desimal dari bilangan itu akan ditolek). Cobalah menuliskan satu baris karakter atau bilangan desimal ketika anda mengoperasikan program diatas; hasil yang didapat bervariasi dari input ke input, tetapi bila tidak ada masalah akan tampak bagus. Ingatlah ketika mencetak sebuah variabel, tanda quotation tidak dipakai. Apabila ada tanda quotation, maka hasilnya adalah “You Entered: thisisanumber.”

Apabila tanda quotation dihilangkan, maka kompiler akan menganggap itu sebuah variabel, dan karena itu program akan melakukan pengecekan atas nilai variabel agar dapat mengganti nama variabel dengan variable pada saat eksekusi fungsi output. Jangan bimbang dengan adanya dua operator pemasukan dalam satu baris program. Anda bisa juga memasukan beberapa operator pemasuka dalam satu baris selama tiap operator pemasukan menghasilkan output yang berbeda; anda perlu memisahkan literal string (yaitu string yang tertutup dalam tanda quotation) dan variabel dengan menaruh masing masing operator pemasukannya (each insertion operators) (yaitu tanda <<).

Bila anda hendak mencoba untuk meletakan dua variabel bersama sama dalam satu baris program seperti tanda <;<; hasilnya adalah pesan eror; maka janganlah melakukan itu.

Jangan lupa untuk mengakhiri fungsi fungsi dan deklarasi dengan sebuah tanda semicolon. Jika anda lupa memberi tanda semicolon, kompiler akan memberi anda sebuah pesan eror pada saat anda melakukan kompilasi program anda.

http://www.ai3.itb.ac.id/Tutorial/c_1.html

Pemrograman Java untuk Aplikasi Basis Data dengan Teknik XP Menggunakan IDE ECLIPSE

Book Category : Pemrograman

ISBN 978-979-29-0091-0
By Adi Nugroho
16×23 cm, 496 pages
1st Published, 2007
Price: Rp.69500

Java adalah bahasa pemrograman yang sangat populer saat ini. Kelebihannya antara lain adalah mampu digunakan sebagai tool untuk mengembangkan aplikasi Internet, selain aplikasi-aplikasi mandiri pada umumnya. Saat ini Java juga beranjak menjadi bahasa pemrograman yang populer karena ia mampu mengatasi masalah kompatibilitas antarberbagai platform perangkat keras dan perangkat lunak.

Saat ini tersedia kompiler Java yang mulai populer, yang menggunakan konsep Graphical User Interface), yaitu Eclipse. Eclipse mudah penggunaannya dan cukup berdaya-guna untuk mengembangkan aplikasi Java apa pun. Eclipse akan populer di masa yang akan datang karena biaya perolehannya yang sangat murah (gratis!) – dapat diperoleh dengan mem-download dari berbagai situs di Internet.

Buku ini menjelaskan berbagai fasilitas utama yang ada di Eclipse, konsep pemrograman Java secara umum, serta cara menggunakan Eclipse dalam pengembangan aplikasi yang bersifat umum yang user friendly, serta aplikasi yang bekerja dengan mengakses sistem basis data relasional menggunakan antarmuka Java Database Connectivity – Application Programming Interface.

Satu hal khusus yang ditawarkan oleh para pengembang Eclipse adalah pemrograman dengan metodologi eXtreme Programming, yang merupakan pengembangan aplikasi dengan basis testing.
Dengan pendekatan XP ini para pengembang aplikasi yang sudah familiar dengan tool yang digunakan akan dapat mengembangkan aplikasi yang berkualitas tinggi dengan waktu yang relatif pendek.
Penerapan metode XP untuk pengembangan aplikasi berbasis Java menggunakan Eclipse dibahas tuntas di dalam buku ini.

http://www.andipublisher.com

Compiler Construction


Teknik kompilasi telah lama diberikan di lingkungan pendidikan tinggi bidang komputer di Indonesia. Pembahasan dalam mata kuliah ini biasanya berkisar pada teori automata, teori kompilasi, teori grammar. Praktek teknik kompilasi pun telah diberikan di lingkungan laboratorium, walau biasanya masih terbatas pada demonstrasi hal teori, ataupun sekedar pengenalan kompiler yang ada atau banyak digunakan. Beberapa universitas telah mulai memperkenalkan penggunaan perangkat pembangun kompiler.

Telah banyak mahasiswa menggunakan dan memanfaatkan compiler/interpreter, tapi saat ini masih belum banyak muncul nama programmer Indonesia yang terlibat dalam proyek pembuatan compiler/interpreter. Mungkin hanya KILANG nya Prof. Dali S Naga (BASIC Indonesia), yang sempat terdengar, sayang sekarang sudah tidak ada jejaknya. Mungkin merilis KILANG dalam bentuk GPL seperti BWBASIC, adalah suatu langkah menarik untuk terus mengembangkan KILANG ini lebih lanjut.

Memang ada sekelompok programmer Indonesia yang sempat akan merilis bahasa pemrograman “BATAK” tetapi hingga saat ini belum terdengar kembali. Bahasa pemrograman, JAVA, BALI, MADURA, hanyalah namanya saja yang berbau Indoensia, tapi sedikit atau malah tidak ada keterlibatan pengembang dari Indonesia.

Tentu saja akan timbul pertanyaan “apa yang salah dalam pengajaran kompilasi ???” (INGAT SAYA TIDAK INGIN MENDISKREDITKAN SIAPAPUN DALAM PERNYATAAN INI). Hanya mencoba mencari langkah perbaikan yang mungkin bisa diterapkan.

Walaupun sedikit sekali atau nyaris tidak ada “lowongan pekerjaan” yang membutuhkan kemampuan mengembangkan compiler ini (silahkan baca di koran ataupun majalah), bukan berarti pengetahuan itu sama sekali tak dibutuhkan dalam dunia pemrograman sehari-hari. Pada dasarnya pengetahuan pembuatan kompiler (compiler construction) ini merupakan pengetahuan dasar komputasi yang sangat baik sekali. Pengetahuan ini dimanfaatkan pada beragam aplikasi nantinya. Misal teknik parsing, pengenalan pola teks, optimasi kode dan lain sebagainya. Bahkan suatu database engine pun di bagian “front end” selalu menggunakan parsing ini. Pengetahuan tentang kompilasi akan dapat memberikan landasan bagi programmer untuk menyusun program yang efektif dan efisien.

Ketika seseorang melakukan pemrograman, sebetulnya secara tidak sadar dia akan melakukan proses penambahan suatu bahasa. Misal pembuatan suatu fungsi (ataupun prosedur) pada dasarnya merupakan suatu proses “penambahan kosa-kata” dari bahasa pemrograman tersebut. Dari yang tadinya tidak memiliki fungsi tersebut hingga akhirnya ditambahkan suatu “vocabulary” untuk melakukan suatu fungsi tersebut. Untuk itulah pemahaman penyusunan kompiler merupakan suatu dasar yang utama dalam bidang ilmu komputer.

Kesenjangan Teori dan Praktek

Pada kasus pemahaman teknik kompilasi seringkali mahasiswa memiliki gap antara pemahaman teori yang mendasari pembuatan kompiler, lalu masalah parsing, scanner (bukan scanner yang buat men-scan gambar atau photo) serta “bagaimana menulis compiler/interpreter sesungguhnya (misal BASIC interpreter).

Ketika bicara kompiler, rata-rata pengetahuan mahasiswa/lulusan bersifat umum yaitu “trampil” menggunakan Integrated Development Environment (IDE) berbasiskan GUI. Bahkan pengetahuan pemakaian “make”, “autoconf”, pun masih langka dipahami para mahasiswa (termasuk mahasiswa Univ Gunadarma). Sedangkan ketika mereka bicara teori, yang terjadi hanyalah “hafalan” teori-teori otomata, parsing, grammar. Keterkaitan antara keduanya masih belum terjalin dengan mesra.

Sebelum dianggap menyalahkan siapa-siapa termasuk menyalahkan mahasiswa (salah satu kambing hitam favorit para dosen), saya mencoba menguraikan permasalahan ini. Ketidak-tertarikan para mahasiswa mempelajari bidang pembuatan kompiler ini mungkin didasarkan pada pelajaran teknik pembuatan kompiler yang sarat dengan pemahaman teori (misal automata, grammar, bahasa formal, matematika diskrit dan sebagainya).

Teori bagi sebagian besar mahasiswa merupakan “momok” bagi para mahasiswa dan mereka kurang tertarik mempelajarinya, dianggap hanyalah pelengkap untuk lulus menjadi saja. Mahasiswa kurang betah atau sabar mendengar pelajaran teori. Mungkin hal ini disebabkan (sengaja saya gunakan kata “mungkin” karena belum pernah dilakukan survei atau penelitian secara khusus) beberapa hal antara lain :

  • Para mahasiswa Indonesia tidak tertarik teori, karena merasa tidak ada manfaatnya pelajaran teori tersebut. Tidak dipungkiri dunia komputer (lapangan pekerjaan) masih membutuhkan orang-orang dengan “skill praktis” sehingga kebutuhan teori ini tidak dirasakan ada. Jelas ini menunjukkan seberapa “jauh” yang namanya industri TI di Indonesia. TI di Indonesia secara umum barulah berkembang pada “menjual produk TI” ataupun konfigurasi dan perkembangan yang bersifat “kustomisasi luar”.
  • Rasa ketertarikan terhadap teori ini makin hilang, akibat materi yang diberikan di kelas terlalu jauh dengan kondisi praktis. Artinya ada “gap” antara teori dengan aplikasi teori tersebut di dunia nyata dalam bayangan mahasiswa (misal bidang komputer) Sebagai contoh, mahasiswa komputer mungkin akan tertarik bila tahu bahwa Analisa numeris itu dimanfaatkan untuk membuat “computer game” Ketimbang kita memberikan contohnya untuk hal lainnya yang terlalu teori. Begitu juga bila kita terangkan Turing Machine, atau Automata tanpa keterkaitan dengan praktek sehari-hari akan membuat mereka hanya menghafal atau malah tidur di kelas.
  • Kurikulum ataupun materi pelajaran yang memang tidak memberikan jalinan antara teori dan praktek. Teori berjalan sendiri-sendiri dan praktek begitu pula. Teori tidak atau kurang mengajak melihat implementasi dari teori tersebut (misal source code nyata dari teori itu).
  • Perangkat bantu yang pada tahun sebelumnya sulit diperoleh di Indonesia secara massal dan murah. Perangkat bantu yang ada sangat menghabiskan waktu bila ingin digunakan untuk menyusun sistem kompiler sesungguhnya.
  • Kurang adanya pengajar yang memahami baik teori dan praktek😎. Banyak pengajar yang sangat baik pengetahuan teorinya tetapi minim pengetahuan prakteknya. Hal ini melanda beberapa mata kuliah teori. Begitu juga banyak pengajar yang sudah terlalu asyik dengan praktek, malas membahas teori.

Simulator Automata Saat ini dengan ketersediaan beragam perangkat bantu bebas (GPL) maka proses mengajarkan teori ini dapat dilakukan secara lebih menarik. Misal untuk menerangkan tentang konsep mesin Turing yang abstrak itu, dapat juga digunakan suatu simulator. Memang mesin Turing dapat juga di”demonstrasikan” dengan menggunakan “tissue WC – tissue gulung” seperti dalam buku Computer Power and Human Reason karangan Joseph Weizenbaum. Tapi jelas akan lebih mudah bila digunakan program bantu yang memungkinkan siswa merancang “instruction set” dan menjalankan instruction set, dan program yg didisain untuk mesin “khayalannya” itu.

Ada juga simulator (program) yang akan menjalankan mesin Turing sesuai masukan yang diberikan pengguna. Misal dapat diperoleh di http://www.csee.umbc.edu/~squire/cs451_sim.html#TM

Program ini tertulis dalam C++. Menerima masukan dari source kode. Sayangnya program ini tidak memberikan simulasi secara visual. Simulasi secara visual akan menarik siswa tahun ke 2-3 di Indonesia. Beberapa simulator yang memiliki tampilan visual dapat didownload dari Internet, antara lain:

  • Simulator Mesin Turing. Program ini memiki GUI berbasiskan Gtk.
    http://www.nuclecu.unam.mx/~arturo/gTuring/.
  • Visual Turing. Suatu IDE yang memungkinkan pengguna mengedit, menjalankan mesin Turing. Dengan editor visual yang memberikan fungsi Cut, Copy&Paste maka akan membantu proses simulasi. Mesin dapat juga dijalankan dengan breakpoint, step by step dan variabel dapat diperiksa.
    http://www.cheransoft.com/vturing/
  • Automaton Simulator. Program ini memungkinkan disimulasikan beberapa mesin teori termasuk deterministic finite automata, nondeterministic finite automata, deterministic push-down automata, Turing machines. Tertulis dalam bahasa JAVA.
    http://www.users.csbsju.edu/~cburch/proj/autosim/

Simulator Prosesor

Di samping simulator mesin teori, seringkali dalam memahami proses kompilasi perlu penjelasan dari tingkat instruksi di level prosesor. Untuk itu penjelasan akan lebih mudah dilakukan bila memanfaatkan suatu simulator prosesor. Memang sebetulnya pengetahuan instruksion set design ataupun simulator ini diperoleh di Arsitektur Komputer. Akan tetapi simulator prosesor ini dapat juga dimanfaatkan untuk memberikan pemahaman teknik pembuatan dan ekseskusi suatu kompilasi. Sehingga tahapan “menjalankan kompiler, dan hasil kompilasi yang dibentuk dapat berupa” :

              Program aplikasi bahasa A
                           |
                           V
             Kompiler/interpreter bahasa A
                           |
                           V
                Bahasa mesin prosesor X
                           |
                           V
                  Simulator prosesor X
                           |
                           V
      Sistem Operasi "Host" (misal Windows, Linux dll)

Dengan cara itu mahasiswa dapat mempelajari bagaimana proses kompilasi dilakukan dan bagaimana dijalankan pada mesin virtualnya. Sehingga pengamatan dapat dilakukan dg mudah. Faktor lain adalah dg menggunakan “prosesor virtual” maka kita dapat mendefinisikan :

  • Prosesor X adalah suatu prosesor virtual yg sederhana
  • Bahasa A merupakan bahasa yg didisain mahasiswa secara sederhana (misal hanya bisa interger, dan operasi sederhana saja)
  • Kompiler yg disusun akan menghasilkan “kode biner” untuk proesor X yg sederhana tersebut (misal register terbatas, dan metoda pengalamatan terbatas)

Dengan cara di atas, student tidak dihadapi oleh “instruction set” yang kompleks, dan architecture processor, dan juga bahasa pemorgraman yg rumit. Tetapi konsep kompilasi dapat lebih mudah dipahami secara mendasar. ketimbang harus menggunakan prosesor “real” dan bahasa “real” yang jelas memiliki scope sangat luas.

Berikut ini adalah beberapa simulator prosesor yang dapat dimanfaatkan dalam memberikan pemahaman lebih dalam mengenai teori dan praktis kepada para mahasiswa.

  • mic1. mic1 ini berbasiskan Java yang mengimplementasikan arsitektur mikro Mic-1 pada Bab 4 buku Andrew S. Tanenbaum, Structured Computer Organization,
    http://www.ontko.com/mic1/
  • DLXOS. Merupakan suatu sistem “komputer” yang dijelaskan pada buku Arsitektur oleh Hennessy & Patterson. Sistem ini terdiri dari DLX Processor (instruction set dan spesifikasi), DLX hardware simulator, DLX compiler dan assembler, DLX Operating System. Karena semua tersedia source code, jadi dapat menjelaskan secara gamblang, bagaimana suatu sistem komputer dibangun, dari “prosesor” hingga “sistem operasi”.
    http://www.cse.ucsc.edu/~elm/Software/Dlxos/index.shtml
  • MIX. Emulator ini ditulis oleh David A Smallberg (1982), dan mensimulasikan prosesor MIX (yang diteragnkan dalam buku milik Donald Knuth).
    http://www.swiss.ai.mit.edu/~adler/MIX/
  • MIXAL. Merupakan lingkungan mensimulasikan kerja MIX, MIX adalah model komputer yang merupakan penyederhanaan model CISC (Complex Instruction Set Computer), assembly dari model ini mirip dengan komputer sesungguhnya. Di situ ini terdapat tutorial dan juga SIMULASI GRAFIS.
    http://www.gnu.org/software/mdk/mdk.html
  • MMIX MMIX merupakan prosesor teoritis ciptaan Prof. Donald Knuth, yang merupakan penmgembangan dari MIX. Prosesor bertipe Reduced Instruction Set Computer (RISC).
    http://bitrange.com/mmix/
    Untuk informasi lainnya tentang prosesor ini dapat dibaca di URL berikut ini
    http://www-cs-faculty.stanford.edu/~knuth/mmix.html
    http://mmixmasters.sourceforge.net/

Demonstrasi Visual

Untuk mendemonstrasikan beberapa pronsep dasar tentang mekanisme kompilasi, maka dapat juga diginakan beberapa perangkat bantu al:

  • Pate. Pate merupakan perangkat bantu visual dan interatkfi untuk melakukan parsing, dan transformasi grammar. Pate dapat menyajikan secara tekstual ataupun visualisasi grafis dari turunan suatu grammar. Pada visualisasi grafis suatu tree parsing akan ditampilkan juga. Ditulis dalam JAVA.
    http://www.cs.duke.edu/~rodger/tools/pateweb/
  • JFLAP. JFLAP merupakan suatu paket grafis yang dapat digunakan untuk mengajarkan konsep Bahasa Formal dan Teori Automata. Awalnya ditulis dg C/C++ tapi sekarang tersedia dalam Java.
    http://www.cs.duke.edu/~rodger/tools/jflap/index.html

Literatur online

Dengan adanya Internet jelas memudahkan kita untuk memperbaiki materi, karena beberapa materi telah ada dan siap di-download (jadi alasan tidak ada dana buat beli buku, bisa dicoret, dan tidak ada sarana buat download bisa diabaikan karena hanya perlu ke kampus Margonda). Kalau alasan “malas baca” ya mau tidak bisa dan tidak perlu dibahas lagi.

Beberapa buku online ataupun materi kuliah berkaitan dengan teknik kompilasi dapat diperoleh di URL berikut ini.

Tentu saja akan lebih memudahkan bila materi-materi buku tersebut di atas di “mirror” di server Univeristas-universitas. Sehingga memudahkan para dosen/mahasiswa untuk mencari materi. Saya memiliki daftar buku gratis/online lainnya, bila ada yang tertarik.

Perangkat bantu

Tentu saja, setelah perbaikan materi perkuliahan, materi praktikum atau latihan yang diberikan kepada para mahasiswa, sebaiknya disesuikan sehingga mahasiswa dapat lebih mudah mempelajari, bagaimana proses pembuatan suatu kompiler. Mahasiswa sebaiknya diajak bukan saja menggunakan suatu perangkat kompiler, tetapi juga melihat “ke dalam source code” suatu kompiler sesungguhnya. Jangan “silau dan terpaku” dengan bahasa pemrograman yg penuh dg “hype” sehingga tidak mempelajari hal mendasar ini.

Suatu compiler tentu saja biasanya ditulis dengan memanfaatkan bahasa pemrograman lain misal C, atau C++. Untuk memudahkan proses pengajaran bagaimana menulis kompiler, tentu tidak mungkin dilakukan dari awal menulis semua perangkat bantu (misal scanner dlsb). Untuk itu digunakan beberapa perangkat bantu untuk mempermudah proses pembuatan kompiler.

Perangkat bantu yang lazim digunakan untuk memberikan materi compiler biasanya adalah perangkat bantu scanner, lexical analyzer dlsb. Dapat digunakan seperti Flex, Bison, Lex, Yacc. Perangkat bantu ini tersedia secara bebas (FREE), ada yang dapat juga digunakan di atas platform DOS atau Linux yang tak membutuhkan perangkat keras terlalu tinggi. Jadi nggak perlu pakai alasan menunggu upgrade hardware) Beberapa informasi yang berkaitan dengan perangkat bantu ini :

Pembuatan Modul

Tentu saja adanya pembaharuan materi (upgrade) sering diberi response “Ah.. repot, bagaimana ini, jaman saya dulu kuliah belum belajar ini. Belajar lagi repot, tidak ada waktu”. Untungnya saat ini kita sebagai dosen tidak perlu berfungsi sebagai “instruktur murni”, cukuplah sebagai fasilitator saja. Yang penting kita mau membaca secara global, dan bersedia menyusun puzzle-puzzle yang dikerjakan oleh para mahasiswa kita.

Nah untuk itu jelas kita bisa mengajak para mahasiswa belajar bersama-sama. Mungkin para dosen tidak perlu “gengsi” untuk menyatakan bahwa tidak menguasai hal praktis A dan mengajak para mahasiswa belajar bersama-sama. Normal koq di jaman ini, di Jerman aja, Profesor bisa dan sah-sah saja ngaku kurang menguasai suatu masalah, dan pada mata kuliah tertentu (biasanya seminar) akan mengerjakan bersama-sama suatu hal dengan mahasiswa.

Metoda itu bisa kita adopsi misal :

  1. Dosen yg mengajarkan materi sejenis (teknik kompilasi) misal sepakat membuat suatu penambahan materi ini. Semua URL, alat bantu, informasi tambahan dikumpulkan. Akan lebih mudah dan baik bila diletakkan pada suatu web page.
  2. Dilakukan pembagian tugas ke mahasiswa, dalam hal ini dipilih satu kelompok mengerjakan tugas tertentu, sehingga ketika dikumpulkan dapat menjadi suatu “kumpulan informasi berharga”. Jangan lupa dipublikasi secara bebas. Meminta mahasiswa mengerjakan tugas penerjemahan telah biasa dilakukan para dosen. Cara ini dapat juga dilakukan. Setiap kelompok mengerjakan suatu modul kecil.
  3. Lalu sediakan modul tersebut secara bebas di Internet, sehingga akan digunakan secara luas, dan menjadi “standard pengajaran di Indonesia”. Misal sekelompok mengerjakan masalah scanner, sebagian masalah lexical analyser, sebagian membahas ELI atau tool pendisain pemrograman, dan lain sebagainya.
  4. Bila materi petunjuk ini telah tersedia, mungkin dapat ke tingkat membuat petunjuk praktikum yg menuju ke disain dan penyusunan kompiler. Bisa dimulai misal dengan membuat spesifikasi suatu bahasa pemrograman “rekaan”. Lalu menggunakan perangkat bantu bahasa pemgorgraman itu dibuat.

Nah tentu saja bagi kelompok mahasiswa di atas “rata-rata” (misal yang mengikuti lomba ACM) mereka dapat mengkontribusikan kemampuannya di dalam tugas seperti ini.

Selamat bermimipi (eh salah nggak koq, saat ini saya dibantu beberapa rekan di “virtual world” sudah mulai mengkoleksi beberapa petunjuk compiler construction dan tertulis dalam bahasa Indonesia). Ini proyek iseng, dan nggak pakai “SK”😎, tapi siapa saja yg tertarik mau bergabung silahkan.

http://nakula.rvs.uni-bielefeld.de

Menggunakan wxWidgets dengan kompiler Borland C++


Postscriptum: Informasi cepat basi… Petunjuk instalasi wxWidgets dalam tulisan ini masih cukup relevan, tapi Anda dapat mengabaikan bagian mengenai makefile dalam tulisan ini: Saya membahas metode yang lebih ringkas dan jauh lebih mudah dalam tulisan kedua saya tentang wxWidgets, Pemrograman Multiplatform dengan wxWidgets dan Bakefile.

Singkat cerita, bila Anda ingin menggunakan wxWidgets bersama-sama Borland C++ dengan mudah tapi belum mengerti caranya, salin file DUMMY.BCC. Link di bawah subjudul Makefile, bersamaan dengan cara penggunaannya.

wxWidgets adalah bingkai kerja GUI multiplatform paling poten yang pernah saya gunakan. Sebelumnya saya menggunakan FOX, yang meskipun inovatif dan lebih mudah digunakan, tapi… (topik itu rasanya berhak mendapat tulisan tersendiri). Aplikasi yang dibuat dengan wxWidgets secara otomatis dapat dikompilasi dalam semua platform dan dengan semua kompiler yang didukung oleh paket tersebut, dan kemungkinan keberhasilannya akan jauh lebih besar apabila si pemrogram membatasi diri hanya menggunakan fasilitas-fasilitas yang wxWidgets sediakan. Yang istimewa, pembatasan itu tidak kemudian mengurangi fungsionalitas platform yang dapat digunakan dalam aplikasi kita! Paket wxWidgets menyediakan beragam antarmuka portabel baik untuk jenis fasilitas standar yang disediakan secara natif dalam banyak platform, fasilitas yang hanya disediakan natif dalam platform tertentu namun harus diimplementasikan sendiri dalam platform lain, ataupun fasilitas yang kerap digunakan namun tidak cukup vital untuk disediakan natif dalam platform manapun. Sebagian contoh adalah fasilitas I/O file, koneksi database, kontrol untuk pengeditan rich-text, dan fasilitas koneksi TCP/IP.

Satu-satunya hambatan awal yang ditemui seseorang sebelum menggunakan paket ini adalah sistem build yang cukup kompleks, dirancang demikian tentunya untuk mengantisipasi idiosinkrasi setiap platform yang harus didukungnya. Di sini, saya akan menjelaskan langkah-demi-langkah pengaturan awal agar Anda dapat menggunakan pustaka ini dengan kompiler Anda. Saya sendiri menggunakan kompiler Borland C++ pada platform Microsoft Windows XP, dan akan mendasarkan penjelasan pada platform tersebut. Penyebutan bcc di bawah dapat disubstitusi dengan kompiler yang Anda gunakan (MinGW: mingw, Digital Mars: dm, dsb.), begitu pula untuk platform yang digunakan, msw. Penyebutan direktori WXBASE merujuk pada lokasi pustaka wxWidgets pada sistem Anda; saya, sebagai contoh, menggunakan E:\wxMSW-2.8.0. Penyebutan BCCDIR merujuk pada direktori dasar kompiler.

http://adhihargo.net

MEINGINSTAL KOMPILER

Mungkin Sebagian dari kalian akan nanya, Compiler itu apa sih? Sekali lagi nyontek definisi dari wikipedia (nyontek mulu kapan pinternya donk? ). Kompiler adalah:
“Sebuah Compiler adalah sebuah program komputer (atau kumpulan program) yang menerjemahkan text yang tertulis pada sebuah bahasa pemograman (source code) ke bahasa pemograman lainnya.”

Yah, kalo menurut definisi gw sih compiler itu program yang membuat bahasa baris-baris kode yang udah kita tulis menjadi file executable (ga mesti file EXE sih). Daripada lama-lama kita langsung aja install yuuuk!! Oh iya, kita akan menggunakan compiler Dev-CPP, soalnya GRATIS (sapa coba yang ga suka gratisan???)

1. Pertama2 kita download dolo neh compiler (yang terbaru klo ver 5 beta) DISINI.

2. Setelah di download, akan ada icon seperti INI.

3. Nanti setelah dipencet, akan ada tulisan kurang lebih kayak GINI. Kalo lo ngerasa belum pernah nginstall compiler ini, santai aja, itu cuma peringatan bagi yang udah install doang kok. Terus kalo ada pilihan bahasa, pilih bahasa “english” abis itu ok.

4. Nanti bakalan keluar Licence Agreement, lo baca dulu tuh (kalo gw sih males) kalo setuju, pilih “I agree”.

5. Nah di Choose Components lo pilih ke typical, tapi kalo mau lebih lengkap pilih aja yang full. Kalo udah pencet “Next”.

6. Abis itu lo pilih, di directory mana lo mau install Dev-CPP ini. Kalau sudah pencet “Install”.

7. Tungguin deh tuh lagi install

8. Kalo udah selesai, pencet “Finish”.

9. Abis itu lo pilih mau setingan mana, terus pencet “Next”.

10. ntar kalo ada pertanyaan soal feature, pilih ajah “Yes, i want to use this feature” abis itu pijit next. sama kalo ada pertanyaan soal cache, pilih yes juga, abis itu next.

11. SELAMAT!! lo berhasil menginstall Dev-CPP,

http://sotoyisland.wordpress.com

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: