Monday, September 13, 2010

What create Compiler which can complie X Programming Language?

Sengaja pake judul Inggris biar lebih keren. hehe

Baru - baru ini terlintas di pikiran saya , kenapa ya selama belajar di IT , gak pernah kepikiran cari tau tentang teori awal mula compiler ataupun bahasa pemograman maupun aplikasi diciptakan?
Jangankan cari tau, pertanyaan semacam itu aja gak pernah kepikiran.. Mungkin karena kebanyakan fokus DotA biar sekelas ama level turnamen dan pada akhirnya madesu jadinya pensiun total (Hahahaha...)
Weits, jadi Out of Topic (OOT) gini.. ~_~

Back to the topic!

Pertanyaan sederhana yang mungkin gak semua orang IT bisa menjawab dengan baik.
"Compiler untuk mengcompile bahasa pemograman dibuat dengan apa dan bagaimana?"
"Aplikasi untuk membuat aplikasi (IDE) dibuat dengan apa dan bagaimana?"
"Darimana asal pembuatan bahasa pemograman baru?"

Mungkin jawaban paling simple:
"Awal mulanya ya dengan bahasa mesin! 10101101 dst itu"

Yup, memang tidak salah, tapi tahukah anda suatu teori self-hosting atau bootstrapping dan notasi T-diagram ?
Self-hosting adalah istilah yang merujuk pada penggunaan program komputer sebagai bagian dari alat/tools atau sistem operasi untuk memproduksi versi yang lebih baru dari program yang sama.
Dalam hal ini compiler yang dapat mengcompile source code nya sendiri.
Sebagian contoh program yang self-hosting meliputi kernel, assemblers, shells, dan kontrol software revision. Istilah lainnya adalah Bootstrapping. Yaitu, membuat compiler untuk suatu bahasa pemograman yang ingin digunakan untuk mengcompile.


Hampir sebagian besar semua program/aplikasi maupun bahasa pemograman dibuat dengan metode bootstrapping. Yaitu membuat tools development baru dengan host-system yang sudah ada sebelumnya.
Sangat tidak mungkin / hampir tidak dapat diterapkan ntuk membuat software tools pengembangan yang baru dari awal (built from the scratch, tanpa adanya host-system).
Sebuah sistem / software yang baru pasti dibuat dengan menggunakan software / sistem yang sudah ada sebelumnya. Jika sebuah sistem / software sangat baru (benar-benar baru), maka akan dibuat dengan menggunakan host-system yang lain dan ditempatkan dalam media penyimpanan yang dimana sistem baru tersebut dapat dibaca.

Sebagai contoh (untuk bootstrapping) :
- Linux OS pertama kali di develop dalam environment Minix.
- Bahasa seperti Ruby, Perl, Phyton biasanya (seingat pengetahuan saya CMIIW), ditulis dalam bahasa C.
- Compiler pertama Pascal dibuat/ditulis dari Fortran.


Sedangkan contoh self-hosting :
- GCC ditulis dalam C
- FPC ditulis dalam Pascal
- GHC ditulis dalam Haskell


Nah ini ada 2 contoh gambar notasi T-Diagram (Tombstone Diagram) untuk merepresntasikan secara gamblang proses rumit bootstrapping , compiler yang mengcompile dirinya sendiri dan porting.

Dibawah ini gambar yang merepresentasikan Ada compiler yang ditulis/dibuat dengan C yang menghasilkan kode mesin (machine code).


1 lagi contoh notasi T-Diagram yang merepresentasikan proses bootstrapping sebuah compiler C yang ditulis dalam C, menggunakan compiler lain yang ditulis dengan bahasa mesin.







Semoga artikel ini menambah wawasan anda. Mohon maaf kalo ada salah ya.
Informasi lebih detail bisa search kata-kata yang dicetak tebal di Wikipedia.org

No comments:

Post a Comment