Önizleme · 0.6.0
KabaLang
KabaOS için Türkçe bir programlama dili. Okuması kolay bir sözdizimi, yok sayılamayan hatalar ve doğrudan makine koduna derlenen programlar.
sehirler = ["İstanbul", "Ankara", "İzmir"]
dongu sehir icinde sehirler:
yazdir(f"şehir: {sehir}")
toplam = 0
dongu i icinde 1..5: # 1, 2, 3, 4, 5 — üst sınır DAHİLDİR
toplam = toplam + i
dogrula(toplam == 15, "1..5 toplamı 15 olmalı")
KabaLang'i tanıyın
Anlaşılır
Okunduğu gibi çalışır.
Anahtar sözcükler Türkçe, girinti bloğu belirler, gereksiz noktalama yoktur. yapi ve sinif ile veriyi ve davranışı bir arada tutun; kurucu kur, nesnenin kendisi self.
sinif Sayac:
deger = 0
fonksiyon kur(self, baslangic): # KURUCU
self.deger = baslangic
fonksiyon artir(self):
self.deger = self.deger + 1
fonksiyon oku(self):
don self.deger
s = Sayac(10) # kur(...) çağrılır
s.artir()
s.artir()
dogrula(s.oku() == 12, "sınıf kurucu + metot")
yazdir(f"sayaç: {s.oku()}")Güvenli
Hatalar görmezden gelinemez.
Beklenen başarısızlık sonuc<T, Hata> ile dönüş değeridir. Bir sonucu kontrol etmeden bırakmak derleme hatasıdır — ya ? ile yayarsınız, ya ele alırsınız ya da bilerek yok saydığınızı yazarsınız.
fonksiyon bol(a: sayi, b: sayi) -> sonuc<sayi, Hata>:
eger b == 0:
don hata("sıfıra bölme")
don tamam(a // b)
r = bol(10, 2)
dogrula(r.tamam_mi(), "başarılı olmalı")
dogrula(r.deger() == 5, "değer")
h = bol(1, 0)
dogrula(h.hatali_mi(), "hatalı olmalı")
yazdir("hata mesajı: " + h.hata().mesaj())
# Hata olursa yerine kullanılacak değer:
dogrula(bol(1, 0).deger_veya(-1) == -1, "deger_veya")
yazdir("sonuc tamam")Türkçe
Türkçe harfler, doğru kurallar.
i büyüyünce İ, I küçülünce ı olur. Büyük/küçük harf dönüşümü, uzunluk ve alfabetik sıralama Türkçe kurallarıyla çalışır; gidiş-dönüş metni bozmaz.
dogrula("istanbul".buyut() == "İSTANBUL", "i → İ")
dogrula("IRMAK".kucult() == "ırmak", "I → ı")
dogrula("ığdır çorum şişli öğüt".buyut() == "IĞDIR ÇORUM ŞİŞLİ ÖĞÜT", "tüm harfler")
# Gidiş-dönüş metni BOZMAZ:
dogrula("ÖĞÜT ŞİŞLİ".kucult().buyut() == "ÖĞÜT ŞİŞLİ", "gidiş-dönüş")
dogrula("ÖĞÜT ŞİŞLİ".kucult().uzunluk() == 10, "uzunluk korunur")
yazdir("Türkçe harf kuralları tamam")Hızlı
Makine koduna derlenir, işi paylaştırır.
Kaynak dosya doğrudan çalıştırılabilir programa dönüşür — yorumlayıcı, sanal makine ya da ayrıca kurulan bir çalışma zamanı yoktur; derleme LLVM üzerinden yapılır. birlikte bloğunda baslat ile başlatılan görevler aynı anda koşar; blok hepsi bitmeden kapanmaz.
fonksiyon kare(x):
don x * x
birlikte:
a = baslat kare(6)
b = baslat kare(7)
dogrula(a.bekle() == 36, "a")
dogrula(b.bekle() == 49, "b")
yazdir("görev değerleri tamam")Her yerde
Uçbirimden masaüstüne, sunucuya.
Aynı dil, altı proje türü. Her biri tek komutla hazır bir iskeletle başlar.
Konsol
kabalang yeni aracim --konsolArayüz
kabalang yeni uygulamam --guiServis
kabalang yeni servisim --servisWeb
kabalang yeni sitem --webKütüphane
kabalang yeni kutum --kutuphaneSınama
kabalang yeni denegim --sinamaWeb sunucusu, ek kütüphane olmadan
Yol parametreleri, sorgu dizgesi, JSON yanıtı. Kullanıcıdan gelen veri HTML'e girerken
web.kacir ile kaçırılır.
fonksiyon arama(istek):
# ⚠️ Kullanıcı verisi HTML'e girerken KAÇIRILIR (web.kacir).
# Kaçırılmazsa `?q=<script>` yansımalı XSS olurdu.
aranan = web.kacir(istek.sorgu("q"))
don web.html("<p>Aranan: " + aranan + "</p>")
fonksiyon yukleme(istek):
don web.json("{\"alinan_bayt\": " + metin(istek.govde_boyutu()) + "}")
sunucu = web.sunucu(8080)
sunucu.al("/", ana_sayfa)
sunucu.al("/kisi/{ad}", selamla)
sunucu.al("/ara", arama)
sunucu.gonder("/yukle", yukleme)