🤔 Neden MELP?

Her dil bir sorunu çözer. MELP'in çözdüğü sorun: karmaşıklık olmadan güvenlik.

1. Scope Modeli — GC Yok, Borrow Checker Yok, Memory Safe

MELP'te her değişken bir scope içinde yaşar. Scope kapandığında bellek otomatik temizlenir.

scope hesap
    numeric bakiye = 1000
    scope cagir
        numeric function para_cek(numeric m)
            if m > bakiye then return 0 end if
            bakiye = bakiye - m
            return 1
        end function
        return para_cek(200)
    end scope
end scope
-- bakiye burada otomatik temizlendi

Rust: borrow checker ile ödünç verme kuralları.
Go: GC ile bellek yönetimi, pause süreleri.
MELP: Scope = yaşam döngüsü. Ne GC, ne borrow checker.

2. Self-Hosting — Derleyici MELP'te Yazıldı

# MELP derleyicisi kendini derleyebilir:
melp_compiler < main.mlp > stage.ll
clang stage.ll -o new_compiler
./new_compiler < main.mlp > stage2.ll
diff stage.ll stage2.ll  # → boş (self-hosting kanıtı!)

Bu, dilin olgunluğunun ve güvenilirliğinin kanıtıdır.

3. Sessiz Yanlış — Yazılımın En Tehlikeli Hali

Yazılımın en tehlikeli hali çöktüğü hal değildir. Yanlış cevabı sessizce verdiği haldir: milyar dolarlık hata (null), yutulmuş exception'lar, exit 0 dönen bozuk pipeline'lar, -O2'nin sildiği benchmark döngüleri.

MELP'in cevabı derleyicinin tamamına uygulanan bir kuraldır: runtime'a tahmin bırakılmaz. Başka bir dilin makul bir yorum seçip devam edeceği yerde MELP açık bir hata koduyla durur. Ondalık sayıyı import'suz kullanmak sessiz bir yanlış okuma değil, derleme hatasıdır. Eksik bir implementasyon exit 0 dönmek yerine gürültüyle patlamak zorundadır.

Bu disiplin kullanıcı koduna olduğu kadar kendimize de uygulanır: kanıtsız yeşil, kırmızıdan tehlikeli sayılır.

4. OOP'suz Nesne — Kalıtım Yok, Bileşim Var

struct Point
    numeric x; numeric y
end struct
-- point.move(1, 2) → move_point(point, 1, 2)
-- MELP: bileşim > kalıtım

Sınıf, kalıtım, virtual method yok. Struct + fonksiyon. Daha basit, daha hızlı.

5. Debug Block — Tasarım Zamanı IDE İletişimi

debug
    external ide
    ide_inspect(members_count)
    if members_count > 10000 then
        ide_warning("Kritik seviye: " & str(members_count))
        ide_highlight(1442)
    end if
end debug

Release'de sıfır maliyetle strip edilir. Debug'da IDE ile konuşur.

6. Performans — C ile Aynı Ligde

MELP "C'den hızlı" iddiasında değildir. Hedefi sürprizsiz, C ligi performansı. MELP LLVM/clang ile derlenir; en adil kıyas, C'nin de aynı backend'le (clang -O2) derlenmesidir — tek değişken dil. Sayılar protokollüdür (5 tekrar, en iyi; Intel i7-10750H).

TestMELPC (clang -O2)Durum
fib(40)234ms232msPratikte özdeş — aynı LLVM (gcc-C: 171ms)
string concat 100K9ms~1msO(n) parite; C sabit-katsayıda önde

fib(40): MELP Rust'tan (277ms) ve Go'dan (429ms) da hızlıdır. Ama manşet "C'yi geçtik" değildir — MELP, kendi backend'iyle derlenen C ile aynı ligde, sürprizsiz.

Not: "loop 100M" gibi yan-etkisiz döngüler LLVM tarafından compile-time'da katlanır (induction variable elimination) — bu bir optimize-edilebilirlik göstergesidir, çalışma-zamanı hız ölçümü DEĞİLDİR; hız tablosuna dahil edilmez. MELP'in ürettiği IR'ın LLVM'in katlayabileceği kadar temiz olması olumlu bir işaret, ama "C'yi geçtik" anlamına gelmez.

MELP vs Diğer Diller

ÖzellikMELPRustGoZig
Bellek modeliScopeBorrow checkerGCManuel
Self-hosting
Veri yarışı✅ yapısal olarak imkânsız✅ borrow checker
Debug bloğu (geleceğe mektup)
Freeze/karantina🔬 scope dondurma*
OOP'suzTraitsInterface
Öğrenme eğrisiDüşükYüksekOrtaOrta
Tedarik zinciri — paket ekosistemi✅ hiç yokcargomodules
Tedarik zinciri — build zinciri (xz sınıfı)❌ cevabımız yok
Araç zinciri olgunluğu❌ genç🔬

Son iki satır kaybettiğimiz satırlardır ve tabloda kalırlar. Yalnız kazandıklarını sıralayan bir karşılaştırma, karşılaştırma değil reklamdır.

* Freeze bugün host API üzerinden çalışır (scope dondurma/çözme, seçici); dil sözdizimine tam entegrasyonu geliştirme aşamasındadır — bu yüzden 🔬 (kısmî) damgalıdır.

MELP — Karmaşıklık olmadan güvenlik. 🚀