Menu

Zero Hello World: İlk .0 Programınızı Yazın ve Çalıştırın

İlk Zero programınız — kanonik hello-world örneğinin her parçası ne anlama geliyor, zero run ile nasıl çalıştırılır ve neden beş satırlık bir program bile baştan World, raises ve check kullanır.

Bu sayfada çalıştırılabilir editörler var — düzenle, çalıştır ve sonucu anında gör.

Dosyayı Yazın

Editörünüzü açın ve aşağıdaki beş satırı uygun bir yere hello.0 olarak kaydedin — ya da aşağıdaki bloğun üzerindeki Run'a tıklayın:

İşte bu — eksiksiz bir Zero programı. Yerelde çalıştırmak için:

zero run hello.0

Şunu görmelisiniz:

hello from zero

command not found aldıysanız Zero Kurulumu sayfasına dönün ve önce zero --version komutunun çalıştığından emin olun.

Her Token'ı Tek Tek Açalım

Bu küçücük program bile Zero'yu farklı kılan şeylerin çoğunu sergiliyor. Soldan sağa okuyalım.

pub

pub, bir bildirimi public olarak işaretler — yani mevcut modülünün dışında görünür yapar. Runtime'ın main'i kendi dosyasının kapsamı dışından bulabilmesi gerekir, bu yüzden main pub olmalıdır. Aynı dosya içindeki private bir yardımcı fonksiyonun buna ihtiyacı olmazdı.

fun

fun, bir fonksiyon bildirimini başlatır. Zero fun kullanır; fn (Rust), func (Go) ya da function (JavaScript) değil. Tek bir anahtar kelime, her yerde aynı şekilde kullanılıyor.

main

Geleneksel giriş noktası adı. Bir Zero executable target çalıştığında, runtime pub fun main(world: World) imzasını arar ve onu çağırır. Diğer fonksiyonları istediğiniz gibi adlandırabilirsiniz, ama main programın giriş noktası için ayrılmış geleneksel bir isimdir.

(world: World)

Tek parametrenin adı world ve tipi World. Runtime, main'i çağırmadan önce bir World değeri oluşturur ve onu içeri geçer. O değer programın capability'lerini taşır: stdout, stdin, filesystem, network ve runtime'ın ne vermeye karar verdiğine bağlı olarak diğer her şeye erişim.

Parametre ismini siz seçersiniz — (w: World) ya da (io: World) de sorunsuz derlenir. Örneklerdeki konvansiyon world; biz de buna sadık kalacağız.

-> Void

Dönüş tipi. Void, fonksiyonun anlamlı bir değer döndürmediği anlamına gelir — fonksiyon değeri için değil, side effect'i için var. Yazacağınız pek çok fonksiyon i32 ya da tanımladığınız bir shape gibi gerçek tipler döndürecek.

raises

main üzerindeki çıplak raises (belirli bir error tipi olmadan) "bu fonksiyon başarısız olabilir" anlamına gelir. main için bu, gövde içindeki herhangi bir check hatayı yukarı yansıtırsa programın nonzero status ile çıkabileceği anlamına gelir. Daha dar formları — örneğin raises { InvalidInput }Raises ve Check sayfasında göreceğiz.

check world.out.write("hello from zero\n")

Asıl iş yapan satır bu. Üç alt parça:

  • world.outWorld capability üzerinde bir alan olarak gösterilen standart çıktı stream'i.
  • .write("hello from zero\n") — o stream'e bir string yazan metot. Hata gösterebilecek bir sonuç döndürür (yazma işlemi başarısız olabilir; stream kapanmış olabilir).
  • check — başarısızlık olursa bunu yukarı yansıtır. check olmadan compiler, write'ın sonucunun sessizce yutulduğundan şikayet ederdi.

Sonundaki \n literal bir yeni satır karakteridir. Onsuz çıktı yeni satıra geçmez ve shell prompt'unuz mesajınızla aynı satıra konar.

Az Önce Ne Oldu

zero run hello.0 çalıştırdığınızda:

  1. Compiler dosyanızı parse etti ve type-check yaptı.
  2. Platformunuz için küçük bir native executable üretti.
  3. Runtime, mevcut process için bir World capability oluşturdu.
  4. main(world)'ü çağırdı.
  5. Kodunuz "hello from zero\n" stringini o world'ün out stream'ine yazdı — bu da terminalinizin stdout'una bağlı.
  6. main Void döndürdü, runtime temizlik yaptı ve program 0 status ile çıktı.

Ortada garbage collector yok, gizli runtime initialization yok, implicit modül bootstrap yok. Tüm program, yazdığınız fonksiyon ve onun çağırdığı standart kütüphane kodundan ibaret.

Küçük Bir Değişiklik Deneyin

Mesajı yazmadan önce bir binding ile tutmasını sağlayın:

Tekrar çalıştırın — aynı çıktı, ama artık let bağlamalarını gördünüz ve string'lerin etrafa geçirebileceğiniz birinci sınıf değerler olduğunu doğruladınız.

Başarısız Bir Varyant

check'i unutursanız ne olur?

pub fun main(world: World) -> Void raises {
    world.out.write("oops\n")
}

zero check hello.0 bunu derlemeyi reddeder. write'ın sonucu başarısız olabilen bir değer; onu görmezden gelmek bir compile error. Ya check ile ele alırsınız (hatayı yukarı yansıtırsınız) ya da explicit bir şekilde işlersiniz. Bu, Rust'ın must_use sonuçlarıyla aynı fikir; sadece her başarısızlık olasılığı olan çağrı için zorunlu kılınıyor.

Sırada: Zero CLI

Burada zero run'u kullandınız. CLI'da bilmeye değer küçük bir komut seti var — check, run, build, test, fix, explain — her biri ajanların tüketmesi için tasarlanmış yapılandırılmış bir --json moduna sahip.

Sıkça Sorulan Sorular

Zero'da hello world programı nedir?

Kanonik Zero hello world beş satırdır: pub fun main(world: World) -> Void raises { check world.out.write("hello from zero\n") }. Bunu hello.0 olarak kaydedin ve zero run hello.0 ile çalıştırın.

Zero'da pub fun main ne anlama gelir?

pub bir bildirimi public yapar — kendi modülünün dışından görünür kılar. fun bir fonksiyon tanımlar. main ise Zero'nun bir executable target için aradığı geleneksel giriş noktasıdır. Hepsi birlikte pub fun main, program başladığında runtime'ın çağırdığı public giriş noktasını tanımlar.

main neden World parametresi alır?

Zero'da global I/O yoktur. Dış dünyaya konuşan her şey — stdout, stdin, dosyalar, network — explicit olarak verilen capability'ler üzerinden gider. Runtime main'e bir World değeri verir; fonksiyonlar I/O yapmak için ancak o değeri (veya parçalarını) kullanabilir. Bu sayede side effect'ler fonksiyon imzalarında görünür hale gelir.

Hello world'de raises ve check ne işe yarar?

main üzerindeki raises, fonksiyonun başarısız olabileceğini belirtir. check world.out.write(...) ifadesi başarısız olabilecek bir fonksiyonu çağırır ve hata alırsa onu çağıran tarafa — burada nonzero status ile çıkacak olan runtime'a — yansıtır. check olmadan compiler, hata ele alınmadığı için çağrıyı derlemeyi reddederdi.

Zero hangi dosya uzantısını kullanır?

Zero kaynak dosyaları .0 uzantısını kullanır (rakam sıfır, O harfi değil). hello.0 dosyası bir Zero kaynak dosyasıdır. Compiler zero check hello.0 ve zero run hello.0 gibi komutlarla çağrılır.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA