Assembly ile Kendi Web Sunucunuzu Kurun: Düşük Seviye Bilginin Bugün de Değeri
Düşük Seviyeli Kodlama: Neden Hâlâ Öğrenilmeli?
Yazılım dünyası her geçen yıl biraz daha soyutlaşıyor. Sunucusuz fonksiyonlar, yönetilen containerlar, otomatik ölçeklenen altyapılar... Artık çoğumuz üzerinde çalıştığımız donanımı hiç görmüyoruz. İşte tam bu noktada biri çıkıp ARM64 assembly dilinde web sunucusu yazıyor ve hepimizi düşünmeye davet ediyor: Kodumuz ile silikon arasındaki her katmanı birer birer kaldırdığımızda ne olur?
Kim Bu Proje?
ymawky - developer imtomt tarafından geliştirilen, macOS için tamamen ARM64 assembly dilinde yazılmış bir web sunucusu. C yok, Rust yok, Go yok. Sadece Apple'ın M serisi çipleri için yazılmış ham assembly kodu. Linux branch'i de mevcut, yani platform bağımsızlığı düşünülmüş.
Eğer daha önce assembly ile hiç uğraşmadıysanız, bu proje size çılgınca gelebilir. Neden kimse hafıza güvenliği, çöp toplayıcı ve okunabilir sözdizimi gibi nimetleri terk edip kendi başına bu işin altına girsin ki?
Cevap şu: Tüm bu güvenlik ağlarını kaldırdığınızda kazanımlarınız.
Assembly Öğretir, Diğer Diller Öğretemez
Assembly ile web sunucusu yazmak, production frameworklerinin yıllardır sizin için çözdüğü sorularla yüzleşmenizi gerektirir:
- HTTP gerçekten nasıl çalışır? Protokol yığınını bayt bayt siz kurarsınız. Header'ların ne anlama geldiğini, neden var olduklarını anlarsınız.
- Hafıza yönetimi gerçekten ne gerektirir? Çöp toplayıcı yok. Her allocasyonu, her deallocasyonu kendiniz takip edersiniz. Bu deneyim, herhangi bir dilde daha verimli kod yazma biçiminizi kökten değiştirir.
- CPU niyetlerinizi nasıl çalıştırır? ARM64'ün kendine özgü çağrı kuralları, register kullanımları ve pipeline detayları vardır. Bunları bilmek, hangi dilde kod yazarsanız yazın sizi daha iyi bir programcı yapar.
Syscall seviyesinde socket bağlantılarını manuel olarak yönetmeyi başardıktan sonra, Express veya Flask gibi frameworkler size tamamen şeffaf gelir. Arkalarında ne döndüğünü bilirsiniz - ve ne zaman yanlış gittiklerini de.
ARM64: Tam Da Şimdi Öğrenilecek Mimari
ARM64 (AArch64) seçimi tesadüf değil. Apple'ın M serisi çipleri ARM mimarisini ana akım bilgisayarlara taşıdı. AWS Graviton da ARM'ı sunucu tarafında ciddi bir seçenek haline getirdi. ARM64 assembly bilmek, bulut altyapısının büyük kısmını çalıştıran donanımı anlamanızı sağlar.
ARM komut seti, x86_64'e kıyasla şaşırtıcı derecede zarif. Daha temiz bir register modeli, daha tutarlı komut kodlaması ve x86'ın sonradan eklenti olarak eklediği özellikler built-in olarak sunuluyor. Mac üzerinde ARM assembly yazmak, production ARM donanımıyla eşleşen bir geliştirme ortamı sağlar - heterojen computing dünyasında nadir görülen bir tutarlılık.
Günümüz Geliştiricileri İçin Pratik Çıkarımlar
Muhtemelen production servislerinizi assembly ile yeniden yazmayacaksınız. Zaten mesele bu değil. ymawky gibi projelerin değeri, derin bir anlayış geliştirmelerinde yatıyor.
Assembly ile haşır neşir olmak isteyebileceğiniz durumlar:
- Performans sorunlarını debug etmek: Komut döngülerini anlamak, "optimize edilmiş" kodunuzun neden yavaş olduğunu bulmanıza yardımcı olur.
- Daha iyi API'ler tasarlamak: HTTP'i bayt seviyesinde anladığınızda, REST interface'leriniz daha sağlam olur.
- Framework'lerin ne yaptığını takdir etmek: Express veya Django'nun ne kadar çok şeyi sizin için otomatik hallettiğine şaşıracaksınız. Bunu bilmek, doğru konfigürasyon yapmanızı sağlar.
- Sistem programlamaya yakınlaşmak: Assembly tanıdık geldiğinde, Rust ve C daha az korkutucu hale gelir.
Derin Teknik Çalışmanın Hissi
Sistemleri tamamen anlamanın verdiği bir tatmin var. Karmaşıklığı soyutlamaların arkasına saklamak yerine, her katmanda gerçekten ne olduğunu bilmek. İşte gerçek sistem programlamanın ruhu bu - bir bare-metal sunucuya SSH attığınızda, kernel kaynak kodunu okuduğunuzda, tüm stack'inizi anladığınızda hissettiğiniz o duygu.
ymawky gibi projeler sadece teknik başarılar değil. Günlük hayatta kullandığımız makineleri daha derinden anlamaya davetler. Projeye katkıda bulunun, fork'layıp öğrenin veya sadece zanaatkârlığa hayran kalın - birisinin soyutlama trendine karşı direndiğine tanık oluyorsunuz.
Tanıdığım en iyi geliştiricilerin çoğu en az bir kez metale dokunmuştur. Belki sizin de zamanınız gelmiştir.
Projeyi merak ettiniz mi? ymawky GitHub'da keşfe hazır. Unutmayın: Anlayış yaparken gelir. Kodu okuyun, biraz assembly yazmayı deneyin ve bilgisayarınızın neden bu şekilde çalıştığını yeniden keşfedin.