Ana Sayfa

catlang: Kategori Teorisiyle SQL'e Derlenen Yeni Bir Programlama Dili

1 dk okuma

Yazar, catlang adını verdiği yeni bir programlama dili geliştirdiğini duyurdu. Bu dilin en dikkat çekici özelliği, yazdığınız kodları tek bir devasa SQL SELECT sorgusuna derlemesi ve bu sorgunun PostgreSQL'de çalıştırılmasıyla programın çıktısını vermesi. Yazarın bu projeye girişmesinin temel nedeni, dilin asıl özelliklerini test etmek için eğlenceli bir derleme hedefi bulma arayışıydı. Bu asıl özellikler, dilin ara dilinin (intermediary language) soyut kategori teorisi kavramlarına dayanması. catlang, yeni bir sorgu dili olmaktan ziyade, çıktısı SQL olan bir programlama dili olarak konumlanıyor.

Makalede, catlang'in nasıl çalıştığını gösteren bir örnek olarak, verilen girdiden bağımsız olarak 100 döndüren bir count fonksiyonu sunuluyor. Bu fonksiyon, geleneksel bir while döngüsüne benzer bir yapıyla çalışıyor ve arrow notation'a aşina olanlara büyük bir proc bloğunu andırıyor. count fonksiyonu, bir başlangıç değeri alıp, bir döngü içinde n değişkeninden 100 çıkarıp mutlak değerini alıyor. Sonuç negatifse döngü devam ediyor, aksi takdirde n değeri döndürülüyor. Bu dolambaçlı yaklaşım, kategori teorik yapılara kolayca dönüştürülebilecek kavramsal olarak basit şeyler arayışının bir sonucuydu.

catlang'in gücü, kaynak kodun desugar edilerek kategori teorisi tabanlı bir ara dile (IL) dönüştürülmesinde yatıyor. Bu ara dildeki her sembolün (örneğin , , ) çok basit ve spesifik cebirsel anlamları var. Örneğin, A ⨟ B ifadesi "A'yı yap ve sonucu B'ye aktar" anlamına geliyor. Yazar, bu kategorik ara dilden SQL'e bir dönüşüm sağlayarak, karmaşık programlama mantığını temel cebirsel işlemlere indirgemeyi ve nihayetinde veritabanı sorgularına dönüştürmeyi başarıyor. Bu yaklaşım, programlama dillerinin derleme süreçlerine ve temel matematiksel yapıların yazılım geliştirmedeki potansiyeline dair ilginç bir bakış açısı sunuyor.

İçgörü

Kategori teorisi gibi soyut matematiksel yapıların, modern programlama dillerinin derleme süreçlerinde ve veritabanı sorgularının oluşturulmasında nasıl yenilikçi yollar sunabileceğini gösteriyor.

Kaynak