Steve Yegge , dolaylı olarak buna hitap eden harika bir blog yazısı yazdı .
Büyük nokta # 1: derleyiciler bilgisayar biliminin hemen hemen her yönünü kapsar. Bunlar üst düzey bir ders çünkü bilgisayar bilimi öğretim programında öğrendiğiniz diğer her şeyi sadece başlamak için bilmeniz gerekiyor. Veri yapıları, arama ve sıralama, asimptotik performans, grafik boyama? Hepsi orada.
Knuth'un anıtsal (ve hiç bitmeyen) "Bilgisayar Programcılığı Sanatı" üzerinde bir derleyici ders kitabı olarak başlamış olmasına rağmen, on yıllardır çalışmasının bir nedeni var. Carl Sagan'ın dediği gibi "Sıfırdan bir elmalı turta yapmak istiyorsanız, önce evreni icat etmelisiniz", derleyici yazmak istiyorsanız, önce bilgisayar biliminin hemen her yönüyle ilgilenmelisiniz.
Eğer derleyici kendi kendine barındırılıyorsa, ne yaparsam yapayım, ihtiyacım olanı yapabileceğimden eminim. Tersine, eğer kendi dilinizde bir derleyici yazmadıysanız, birileri için gerçekten önemli olan bir şeyi kaçırması iyi bir ihtimaldir, çünkü dil uygulayıcıları bu konular hakkında düşünmelerini gerektirecek bir program yazmak zorunda kalmamışlardır .
Büyük nokta # 2: 30.000 feet'ten itibaren şaşırtıcı sayıda sorun sadece derleyicilere benziyor.
Derleyiciler bir sembol akışı alır, yapılarını alana özgü önceden tanımlanmış kurallara göre belirler ve bunları başka bir sembol akışına dönüştürür. Kulağa oldukça genel geliyor, değil mi? İyi evet.
Visual C ++ ekibinde olsanız da olmasanız da, genellikle derleyicinin bir parçası gibi görünen bir şey yapmanıza ihtiyaç duyacağınızı göreceksiniz. Her gün tam anlamıyla yaparım.
Diğer mesleklerin aksine, programcılar sadece araçları kullanmakla kalmaz, kendi araçlarını da oluştururlar. Başka bir araç üretmeyen araçlarla (yetenek eksikliği veya başka araçların yapımında kullanılabilecek araçların bulunmaması nedeniyle) yazamayan bir programcı sonsuza dek özürlü olacak.
Eğer bir dil bir sembol akışına, programlara kurallara uymaya ve onu sembollerin başka bir sembol akışına dönüştürmeye yarayan, oldukça kısıtlı bir dil gibi görünen ve faydalı olabilecek bir dil programına dönüştürmeyen programlar oluşturmaya uygun değilse bana göre.
(Neyse ki, sembollerin dönüştürülmesi için uygun olmayan pek çok programlama dili olduğunu sanmıyorum. C muhtemelen bugün kullanılan en kötü dillerden biri, ancak C derleyicileri genellikle kendileri tarafından barındırılıyor, böylece hiç kimseyi durdurmadı.)
Yegge'den bahsetmediğim kişisel deneyimlerden son vereceğim üçüncü bir neden (çünkü "neden ev sahibi" hakkında yazmıyordu): hataları giderir. Eğer araç her zaman bir derleyici, yazarken inşa onu (henüz sadece her zaman çalıştırmak , sen iyi ölçekli bir kod tabanı (derleyici kendisi) karşı doğru ve işe, işe üzerine onu) bağlıdır.
Bu ay nispeten yeni ve meşhur, kendi kendine barındırılmayan bir derleyici kullanıyorum (hangisini tahmin edeceğinizi muhtemelen tahmin edebilirsiniz) ve 2 gün boyunca hiçbir şeyi bölmeden geçemem. Tasarımcıların gerçekte ne kadar kullanmaları gerektiğini merak ediyorum.