10 puan yazan GN⁺ 2023-09-05 | 1 yorum | WhatsApp'ta paylaş
  • Yazar, 500 satır Python koduyla bir C derleyicisi yazma gibi zorlu bir meydan okumayı üstlenmiş
  • Derleyici tek geçişli; önce bir sözdizim ağacı kurup ardından bunu makine koduna dönüştüren tipik iki geçişli derleyicilerden farklı olarak, ayrıştırma sırasında kod üretiyor
  • Derleyici WebAssembly'yi hedefliyor; bu karar pratiklikten çok meraktan kaynaklanıyor. Register'ların olmaması ve bir stack machine kullanılması gibi WebAssembly'nin kendine özgü zorlukları vurgulanıyor
  • 500 satır kısıtı nedeniyle derleyici; struct, enum, union, önişlemci yönergeleri, kayan nokta ve 8 baytlık türler gibi belirli C özelliklerini desteklemiyor
  • Derleyici, c-testsuite içindeki 220 test vakasının 34'ünü geçiyor ve Fibonacci dizisini hesaplayan bir programı başarıyla derleyip çalıştırabiliyor
  • Yazı, derleyicinin koduna dair ayrıntılı bir çözümleme sunuyor; C sözdiziminin çeşitli yönlerini nasıl ele aldığını ve WebAssembly ile çalışmanın zorluklarının neler olduğunu açıklıyor
  • Derleyicinin karmaşıklığına rağmen, kod kalitesinden ödün verip her şeyi tek geçişte yapınca sonucun şaşırtıcı derecede kısa olabileceğini gösteriyor
  • Bu tür tek geçişli derleyicilerin, kısalıkları sayesinde kendi kendini barındıran diller için stage0 olarak çok uygun olabileceği öne sürülüyor
  • Kod satırı sayısı, yorumlar, docstring'ler ve boşluklar hariç tutularak sloccount aracıyla ölçülmüş

1 yorum

 
GN⁺ 2023-09-05
Hacker News görüşleri
  • Python ile 500 satırda C derleyicisi yazılması üzerine bir yazı; 1978'de yayımlanan Tiny Pascal derleyicisiyle karşılaştırılıyor
  • Derleyici tek geçişli; kod üretimi ayrıştırma sırasında yapılıyor ve bu, erken dönem bilgisayarların sınırlı belleğine uyum sağlamak için özellikle C için tasarlanmış bir özellik
  • Kendi derleyicini yazmanın faydaları arasında derleyiciler, yorumlayıcılar, bağlayıcılar/yükleyiciler ve ilgili sistem yazılımlarını anlamak; hata ayıklama çabasına yardımcı olmak; ve geliştiricinin beceri düzeyini artırmak yer alıyor
  • Bu proje, x86 assembly üreten, bunu ikiliye derleyen ve çalıştıran bir TypeScript projesi gibi diğer projelere benziyor
  • Yazı, açık anlatımı nedeniyle övülüyor; bu da garip programlama dilleri (esolangs) alanında eğlenceli bir meydan okuma olarak görülüyor
  • Anlaşılması kolay 500 satır kodla bir C derleyicisi yazmak, deneyimli geliştiriciler için bile aylar sürebilecek önemli bir meydan okuma olarak değerlendiriliyor
  • Yazı, Scheme to WASM derleyicisi gibi diğer küçük derleyicilere dair merak uyandırıyor
  • Karşılaştırma için yazı, Ritchie'nin en eski struct derleyicisi ile v7 Unix C derleyicisi dahil diğer küçük C veya C benzeri derleyicilerin kod satırı sayılarına (LOC) değiniyor