- Fransa'da bir bilgisayar okulunda 5 yıl eğitim aldı ve 20 yıl boyunca serbest geliştirici olarak çalıştı
- Ağırlıklı olarak istemci projelerinde Ruby on Rails ile çalıştı
- Common Lisp öğrenmeye başlarken ASN.1 ayrıştırıcısı üreten bir sunucu yönetim protokolü yazdı
- Common Lisp'ten C kodu üreterek bir SNMP sunucusu geliştirdi
- Sonrasında Common Lisp tabanlı çeşitli projeler yazdı:
- cl-unix-cybernetics – GitHub'da en çok yıldız alan projesi
- cl-streams ve cffi-posix geliştirdi
- cl-facts – bir triple store; Common Lisp grafik veritabanı işlevi görüyor
- hızlı, atomik transaction ve iç içe geçebilen transaction desteği sunuyor
unwind-protect ile uyumlu
- yalnızca 3 makro öğrenerek kullanılabiliyor
- European Lisp Symposium (ELS)'ta sunuldu
- Common Lisp geliştirmeye odaklanırken istemcilerini kaybetti, ancak Lisp'in potansiyeline dair güçlü bir inanç geliştirdi
Sanal makinelerin (VM) ve container'ların sınırları
- Uzmanlar VM ve container'ların sorunlarına dikkat çekiyor:
- VM'ler gereksiz CPU ve bant genişliği israfına yol açıyor
- Linux'un cgroups tabanlı container'larında uzaktan komut çalıştırma (RCE) ve yetki yükseltme açıkları bulunuyor
- Her yıl yeni güvenlik açıkları keşfediliyor
- OpenBSD'yi tercih ederek Terraform, Ansible gibi DevOps araçlarının sorunlarından kaçındı
Common Lisp'in sınırları ve performans sorunları
- Clojure gibi ortamlarda GC (garbage collector) nedeniyle performans sorunları yaşandı:
- Binlerce birimi işleyen bir strateji oyunu geliştirirken başarısızlık örnekleri ortaya çıktı
- JVM'in GC'si performans ve maliyet sorunlarını beraberinde getiriyor
C'ye geçiş kararı
- Common Lisp'in performans ve taşınabilirlik sınırlarını fark etti:
- Linux, OpenBSD, GTK+ ve GNOME'un tamamı C ile yazıldı
- Sonunda performans ve taşınabilirlik sorunlarını çözmek için C'ye geçti
Yeni dil KC3'ün geliştirilmesi
- libc3 yardımcı kütüphanesi geliştirildi → C3 dili → ad daha sonra KC3 olarak değiştirildi
- KC3'ün özellikleri:
- bir interpreter (ic3) ve compiler (c3c) içeriyor
- UTF-8 buffer'lardan veri yapıları oluşturup tersine dönüştürebiliyor
- defensive programming yaklaşımıyla en baştan bug'ları en aza indiriyor
- güvenlik sorunu yok
- enum etiketli union tabanlı bir veri tipi sistemi sunuyor
KC3 ile elde edilen sonuçlar
- cl-facts C89'a taşındı:
- geliştirme Covid-19 döneminde tamamlandı
- triple ekleme, silme, recursive query sistemi, transaction, logging, kalıcılık gibi özellikler hayata geçirildi
- Algoritmik tipler için ayrıştırıcı ve üretici yazıldı:
- struct, linked list, map, hash table, complex number, tuple, code block ve daha fazlasını içeriyor
- José Valim'den (Elixir'in yaratıcısı) büyük ilham aldı
- ikc3 – KC3 değerlendirme sonuçlarını yazdıran bir REPL
- kc3_httpd – MVC framework tabanlı bir web sunucusu geliştirildi
- mevcut blog sayfası da kc3_httpd üzerinden sunuluyor
- Dokümantasyon sitesi yazıldı → KC3'ün Markdown to HTML dönüştürücüsü kullanıldı
Sonuç
- Common Lisp'te edinilen deneyimlerin üzerine C'ye geçildi
- KC3, performans, güvenlik ve taşınabilirlik alanlarında güçlü sonuçlar verdi
- İleride KC3 ile ilgili ek makrolar ve örnekler paylaşılacak
1 yorum
Hacker News görüşleri
Ben tersini düşünüyorum. Küçükken çok VB kullandım, sonra üniversitede Java, C ve C++ öğrendim ve ağırlıklı olarak C kullandım. Xfce'nin çekirdek geliştiricisi oldum ve 5 yıl çalıştım
Bu duyguya tamamen katılıyorum. Birkaç yıldır saf C ile bir şeyler geliştirmek için güçlü bir istek duyuyorum
Çok uzun zaman önce C ile programlamaya başladım ve bazen hâlâ o günlere dönmek istiyorum
Blog yazısını okuduktan sonra yazarın ne anlatmak istediği konusunda kafam karıştı
kc3 kod örneği verilmiş
C benim ilk dilimdi ve basit konsol uygulamalarıyla küçük oyunlar yaptım
Bazen hobi olarak C ile kod yazıyorum. Ama tekrarlayan işler çok fazla olduğu için sıkıcı oluyor
C pratik olduğu için başarılı oldu
Hiçbir şey anlamadım
Bu yazı, mutlu sonu olmayan bir ibret hikâyesi gibi okunuyor