Geri Dön

Neden Janet? Küçük Lisp lehçesi üzerine bir deneme
SiTech AI Team2 dk okuma

Neden Janet? Küçük Lisp lehçesi üzerine bir deneme

Programcı Ian Henry, küçük Lisp lehçesi Janet'in neden yan projeleri için başvurduğu dil olduğunu anlatıyor: sekiz yönergelik çekirdek, gömülebilir C çalışma zamanı ve bağımsız ikililer.

Programcı Ian Henry blogunda yazdığı denemede, küçük bir Lisp lehçesi olan Janet'in neden birkaç yıldır yan projeleri için başvurduğu dil olduğunu anlatıyor. Dili o kadar sevmiş ki hakkında tam bir kitap yazmış: "Janet for Mortals", internette ücretsiz yayımlandı.

Bir akşamda öğrenilebilecek küçük bir dil

Janet; birinci sınıf fonksiyonlara, tanımlayıcılar için tek bir ad alanına ve sözcüksel blok kapsamına sahip emperatif bir dildir. Çekirdeği yalnızca sekiz yönerge içerir — do, def, var, set, if, while, break ve fn — makrolar ise üstüne daha yüksek düzeyli akış kontrolü ekler. Henry çalışma zamanı semantiğini tanıdık buluyor: "JavaScript düşünün, artı değer tipleri, eksi tüm tuhaflıklar". Tüm standart kütüphane tek sayfaya sığıyor.

Bayt kodundan bağımsız çalıştırılabilir dosyalara

Janet kendini bayt koduna derler, bu kodu Janet çalışma zamanını da başlatan bir C dosyasına yazar ve sonra o dosyayı sistemin C derleyicisiyle derler. Sonuç: programlar yerel çalıştırılabilir dosyalar olarak dağıtılır, hiçbir şey kurmak gerekmez. Bir hello world ikilisi bir megabaytın altındadır — aarch64 macOS'ta Janet 1.27.0 için 784K — ve çalışma zamanını, çöp toplayıcıyı ve bayt kodu derleyicisini içerir; böylece programlar çalışma anında Janet kodu değerlendirebilir. Çalışma zamanı, web sitelerine bile gömülmesi kolay küçük bir C kütüphanesidir.

PEG'ler, kabuk betikleri ve koleksiyonlar

Janet'te metin işleme düzenli ifadeler yerine ayrıştırma ifadesi gramerlerine (PEG) dayanır; Henry bunları daha basit, daha güçlü ve daha öngörülebilir buluyor: HTML, JSON ve null bayt içeren ikili biçimleri ayrıştırabilirler. sh adlı üçüncü taraf kütüphane, boru hatları ve yönlendirmeler için bir kabuk betiği DSL'i ekler. Koleksiyonlar değiştirilebilir ve değiştirilemez biçimlerde gelir: değiştirilemezler değer semantiğine sahiptir, değiştirilebilirler ise — örneğin hash tabloları — kimliğe göre karşılaştırılır.

Makrolar ve derleme zamanı değerleri

Makro yazmak Henry'nin en çok önerdiği özellik; ona göre Janet'in hijyenik olmayan makroları yine de referansça şeffaf olabilir, çünkü literal fonksiyonların alıntısı kaldırılabilir. Janet ayrıca değerlerin derleme zamanından çalışma zamanına taşınmasına izin verir: bir programın derlenmesi üst düzey kodu çalıştırır ve ardından programın durumunun tam bir anlık görüntüsünü diske yazar; paylaşılan referanslar, üreteçler ve kapanışlar korunur. Kitap, bu yöntemin bir SQL şemasından veritabanı bağlantıları üretmek için nasıl kullanıldığını gösteriyor.

SiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.