Günümüzde compilerlar kendi dillerinde yazılıyorlar. Bu özelliğe sahip compilerlara self-hosting compilers denir. Örneğin bugün C ve C++ programlama dillerinde yoğun bir şekilde tercih edilen GCC (GNU Compiler Collection) büyük oranda C dilinde yazılmıştır. Benzer şekilde D programlama dilinin official compilerı Digital Mars´ın DMD´si de büyün oranda D dilinde yazılmıştır.
Peki bir compiler kendi dilinde compile edilebiliyorsa ilk compiler nasıl yazıdı? Zaten bilişim literatüründe buna chicken and egg problemi denir. Compilerların ilk sürümü mutlaka bir X dilinde yazılmak zorundadır. Bu bir high-level programlama dili olabileceği gibi Assembly dilleri gibi low-level diller de olabilir. Zira ilk compiler 1952 yılında A-0 programlama dili için Grace Hopper tarafından Assembly dilinde yazılmıştır. Günümüzde bilinen dillerden örnekler vermek gerekirse:
İlk Pascal compilerı Niklaus Wirth tarafından 1969 yılında Fortran dilinde yazılmıştır. İlk Fortran compilerı Assembly dilinde yazılmıştır.
İlk C compilerı Dennis Ritchie ve Ken Thompson tarafından 1970 yılında C´nin atası kabul edilen B ve BCPL dillerinde yazılmıştır. O dillerden de geriye gidildiğinde yine karşınıza Assembly dilleri çıkacaktır. C ve C syntax dilleri bugün yazılım dünyasının yapı taşlarını oluşturmaktadır. Günümüzde kullanılan işletim sistemlerinin tümü C ve C++ dilleri kullanılarak yazılmıştır. Ayrıca meşhur “Hello world!” programı da ilk kez C dilinde yazılmıştır.
İlk BASIC interpreterlarından birisi olan Altair BASIC´i Bill Gates, Paul Allen ve Monte Davidoff tarafından 1975 yılında MITS Altair 8800 bilgisayarı için Assembly dilinde yazılmıştır. Bill Gates´e göre Altair 8800 dünyanın ilk modern bilgisayarıdır. Bill Gates yıllar sonra bu interpreterı yazmak için kullandığı delikli bantlardan birisini asitsiz bir kalem ile imzalayıp (sanırım zarar görmemesi için) Computer History Museum´a hediye etmiştir.
Java ve Ruby gibi modern dillerin yazılımları da C dilinde yazılmıştır.
Özetle programlar günümüz programlama dillerinden önce makine dilinde yazılıyorlardı. Makine dilinin kullanımı çok zor ve hata payı yüksek olduğu için belli başlı komutları temsilen semboller kullanılmaya başlandı ve sembolik makine kodu (Assembly dilleri) doğmuş oldu. İlk compiler da Assembly dilinde yazılmıştır. Ondan sonrasını artık biliyorsunuz zaten.
Bilişim tarihi ile ilgileniyorsanız Computer History Museum´un sitesindeki belgeleri ve makaleleri okuyabilirsiniz. Eğer programlama dillerinin çalışma mantıklarını ve compilerların nasıl tasarlanıp yazıldıklarını merak ediyorsanız Sebesta´nın Concepts of Programming Languages kitabını okuyabilirsiniz.