🚀 30 Dakikada MELP

Bu rehberde MELP programlama dilini sıfırdan öğrenecek, 7 adımda çalışan programlar yazacaksınız — hepsi tarayıcınızda.

Adım 0: Derleyiciye Ulaşmak (1 dk)

Web IDE'yi kullanın. WASM'a derlenmiş gerçek self-hosting MELP derleyicisini tarayıcınızda çalıştırır — aşağıdaki her adım orada çalışır, hiçbir şey kurmadan.

⚠️ Henüz herkese açık bir indirme yok. Derleyici deposu dışarıya açık olmadığı için indirilecek bir binary ya da kurulacak bir paket bulunmuyor. 404 veren bir komut yazmaktansa bugün gerçekten çalışan şeyi gösteriyoruz.

Depo açıldığında yerel derleme için clang-22 ve libgmp-dev gerekecek; adımlar kurulum sayfasında yer alacak.
Adım 1: Merhaba Dünya (3 dk)

İlk MELP programınız:

-- hello.mlp
numeric function main()
    println("Merhaba MELP!")
    return 0
end function

Derleme ve çalıştırma:

cp hello.mlp /tmp/.melp_compile_src
melp_compiler > hello.ll
clang-22 -O2 build/shim.o hello.ll -o hello -lm -lgmp
./hello
Merhaba MELP!
Adım 2: Değişkenler ve Döngüler (5 dk)
numeric function main()
    numeric yas = 25
    string isim = "Ali"
    println(isim & " " & str(yas) & " yasinda")

    -- 1'den 5'e say
    numeric i = 1
    loop i <= 5
        println(str(i))
        i = i + 1
    end loop

    -- Faktöriyel
    println("5! = " & str(faktoriyel(5)))
    return 0
end function

numeric function faktoriyel(numeric n)
    if n <= 1 then return 1 end if
    return n * faktoriyel(n - 1)
end function
Ali 25 yasinda
1
2
3
4
5
5! = 120
Adım 3: Dosya Okuma (5 dk)
numeric function main()
    string icerik = mlp_fs_read_to_string("/etc/hostname")
    println("Hostname: " & icerik)
    return 0
end function
Hostname: pardus-81y4
💡 mlp_fs_read_to_string dosyayı okur, mlp_fs_write yazar.
Adım 4: HTTP İsteği (5 dk)
numeric function main()
    -- curl ile HTTP GET
    string yanit = shell_exec("curl -s https://api.github.com/zen")
    println("GitHub Zen: " & yanit)
    return 0
end function
GitHub Zen: Avoid administrative distraction.
Adım 5: Struct + Enum (5 dk)
struct Point
    numeric x
    numeric y
end struct

enum Color
    Red
    Green
    Blue
end enum

numeric function main()
    Point p = Point(3; 4)
    println("Point: (" & str(p.x) & ", " & str(p.y) & ")")

    Color c = Color.Blue
    println("Color enum: " & str(c))
    return 0
end function
Point: (3, 4)
Color enum: 2
Adım 6: Web Sayfası (5 dk)
numeric function main()
    string html = "<h1>MELP Web</h1><p>Merhaba dunya!</p>"
    string yanit = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" & html
    string cmd = "echo '" & yanit & "' | nc -l -p 8888 -q 1 & sleep 1 && echo 'http://localhost:8888'"
    numeric rc = shell_exec(cmd)
    return 0
end function
http://localhost:8888
Adım 7: Geleceğe Mektup (5 dk)

Diğer dillerde yakın bir karşılığı olmayan özellik. Bir debug bloğu, varsayımı koşan bir nöbetçiye çevirir:

numeric function main()
    numeric uye_sayisi = 9998

    debug
        if uye_sayisi > 10000 then stop
        -- Üye sayısı 10 bini geçince yeni bir veritabanı
        -- mimarisi gerekebilir. — 2026, ilk ekip
    end debug

    println("üye: " & str(uye_sayisi))
    return 0
end function
üye: 9998

Bugün hiçbir şey olmaz. On yıl sonra, sayı 10 bini geçtiği gün program durur ve mektubu okutur — sessizce yanlışlaşmak yerine. MELP_RELEASE=1 ile derlendiğinde blok tamamen çıkarılır, sıfır maliyetle.

Sonraki Adımlar

MELP — Sade. Scope-bazlı. Hızlı. 🚀