Sizde mi derleyemediklerimizdensiniz?

Derleyiciler bilgisayar bilimlerinin herhalde en karışık/teorik ama üzerinde çalışması en zevkli/karışık konularından biridir. Kafası biraz çalışan her bilgisayar mühendisliği öğrencisinin mezun olmadan edindiği hayallerinden biri heralde bir dil ve o dil için bir derleyici yazmaktır, aynı IT sektöründe çalışan büyük çoğunluğun bir zaman sonra Kaş'a yerleşip salatalık yetiştirmek istemesi ya da her mühendisin bir gün danışmanlık şirketi açıp zengin olmak hayali ile yaşaması gibi.

Derleyicilerin bu kadar teknik ve karışık olmalarının en büyük sebebi bilgisayar bilimlerinde aklınıza gelebilecek neredeyse her türlü konsepti barındırmalarıdır. Düşünsenize en kaba hali ile kodu alacak, anlayacak, sentatik olarak doğruluğunu ispatlayacak, bir amaç için (hızlı çalışmak, az güç tüketimi, işlemci ailesine özelleştirmek v.s gib) optimize edecek, çalıştığı işlemci için özel süreçleri işletecek, ortaya, linkleme işlemlerini yapacak ya da yaptıracak, ortaya insan tarafından anlaşılır bir şeyi alıp makina tarafından anlaşılacak bir hale getirecek. Bunları yaparken yüzlerce farklı algoritma ve yaklaşım uygulayacak ve NP-Complete bir problem olan kod optimizasyonunu en optimum şekilde gerçeklemek için çalışacak.

Bu vizyona sahip olmayan biri için ise arkada olanların karışıklığının, mükemmeliğinin, büyüleyiciliğinin hiçbir önemi olmadan sadece program yaratan program olarak kalacak derleyici, üzücü bir hayat hikayesi...

Başka açıdan baktığımızda ise ne kadar şanslıyız aslında, derleyici alemlerinin kralına, GCC ailesine, ev sahipliği yapıyor, onu ya da ortaya çıkardığı güzellikleri her gün, her saniye kullanıyoruz. İstediğimiz an neler yapıyor acaba diye kaynak kodlarının içinde kayboluyor, binlerce döküman bulabiliyor/okuyabiliyor/deneyebiliyor ve genel kültürümüzü genişleyebiliyoruz.

Fakat bunları yapmak yerine işkembeden atmak istesek, konu hakkında tek fikrimiz yokken birşeyler biliyormuş gibi görünmek istesek neler olurdu acaba? Mesela hiç Redhat'in bir yerlerde gizli geliştirilen, kimsenin bilmediği bir GCC sakladığını ve dağıtımındaki paketleri bu derleyiciyi kullanarak hızlandırdığını ama kendi paketleri arasında dağııtığı GCC'yi kullanmadığını düşündünüz mü?

Bu kadar ince düşünmenizi engellemeye yardımcı olmak amacıyla Emre Sevinçlik yapıp bu girdimin sağını solunu linkler ile dolduracağım;

Öncelikle sizi derleyiciler ne türlü optimizasyonlar yapabiliyor isimli nefis makele ile başbaşa bırakacağım, buradaki her alt başlığı da okuyarak gerçekten fikir sahibi olduğunuzu düşündükten hemen sonra GCC özelinde neler yapabileceğinizi görmeniz için buraya alacağım sizi, arkasından linkerların dünyası ile tanışmanızı tavsiye edeceğim, onuda okuduğunuza inandıktan sonra mesela bintuils özelinde bu aralar nelerin yapılabildiğini anlatan bir makele için sizi oturduğunuz yerden kaldırıp şuraya doğru eşlik edeceğim.

Bunları okuduktan ve anladıktan sonra eğer halen "Top Secret GCC" hakkındaki yorumlarınız değişmedi ise sizi kendinizle başbaşa bırakacağım, ama yok konular ilginizi çekti ise ivedelikle bu kitabı satın almanızı ve Finite Automata ile başlayıp, veri yapıları, teoremler, analiz yöntemleri v.s ile devam eden halen ders çalışır gibi insanın eline kağıt kalem alıp sınava hazırlanırmış gibi takip ettiği acayip bir dünyaya girmenizi tavsiye edeceğim.

Dedim ya derleyicinin hikayesi acılı/hüzünlü bir hayat hikayesi diye...