Ana içeriğe geç

Zig

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/zig

Kısaca

Zig, elle bellek yönetimi sunan ve gizli kontrol akışı içermeyen, C'nin daha basit ve güvenli bir halefi olmayı hedefleyen düşük seviyeli bir sistem dilidir.

Zig nedir?

Zig, Andrew Kelley tarafından geliştirilen ve ilk kez 2016'da duyurulan, genel amaçlı bir sistem programlama dilidir. İşletim sistemi bileşenleri, gömülü yazılımlar, oyun motorları ve performans açısından kritik araçlar gibi C ile aynı türden işleri hedefler; ancak modern güvenlik özellikleri ve daha net kurallarla. Zig hâlâ kararlı bir 1.0 sürümüne doğru çalışmaktadır, bu yüzden sürümler arasında kırıcı değişiklikler yaygındır.

Zig'in tasarımı birkaç ilkeyi izler: gizli kontrol akışı yok, gizli bellek ayırma yok, önişlemci ya da makro yok. Belleğe ihtiyaç duyan fonksiyonlar bir ayırıcıyı (allocator) açık bir argüman olarak alır; böylece belleğin nereden geldiğini her zaman görebilir ve nasıl yönetileceğini seçebilirsiniz. Hatalar, hata birleşim tiplerinde (error union) döndürülen ve try ile catch ile ele alınan sıradan değerlerdir; comptime ise sıradan Zig kodunun derleme zamanında çalışarak tipler üretmesine ve fonksiyonları özelleştirmesine izin verir, böylece C ve C++'ın makrolarının ve şablonlarının yerini alır.

Zig ayrıca bir C ve C++ araç zinciri olarak da çalışır: C başlık dosyalarını doğrudan içe aktarabilir, C fonksiyonlarını ek bağlayıcılar olmadan çağırabilir ve C kodunu tek bir makineden birçok hedef platform için derleyebilir; bu da çapraz derlemeyi kolaylaştırır. Hata ayıklama ve güvenli sürüm derlemeleri, tamsayı taşması ve sınır dışı erişim gibi sorunlar için çalışma zamanı denetimleri ekler; en hızlı sürüm modu ise bunları kaldırır. Zig kullanmak, her göstergeyi gösteren bir kontrol paneline sahip manuel vitesli bir araba sürmeye biraz benzer: kontrol hâlâ tamamen sizdedir, ama sizden çok daha az şey gizlenir.

Zig sıklıkla Rust ile kıyaslanır, çünkü ikisi de C ve C++'a modern alternatiflerdir. Rust, sahiplik kuralları ve ödünç denetleyicisi sayesinde bellek güvenliğini derleme zamanında garanti eder; bu da bütün bir hata sınıfını önler ama karmaşıklık ekler. Zig ise elle bellek yönetimini korur ve bunun yerine açık ayırıcılara, çalışma zamanı güvenlik denetimlerine ve teste dayanır. Zig ayrıca ruh olarak C'ye daha yakındır: tamamını öğrenebileceğiniz küçük bir dildir ve mevcut C koduyla sorunsuz birlikte çalışır.

Önemli noktalar

  • Zig, C'ye modern ve daha basit bir alternatif olarak konumlanan bir sistem dilidir.
  • Bellek, fonksiyonlara aktarılan açık ayırıcılarla elle yönetilir.
  • comptime, makrolara güvenmek yerine Zig kodunu derleme zamanında çalıştırır.
  • C kodunu derleyebilir ve çapraz derleyebilir, C başlıklarını doğrudan içe aktarabilir.
  • Rust'ın aksine ödünç denetleyicisi yoktur; güvenlik, çalışma zamanı denetimlerinden ve açık tasarımdan gelir.

Örnek

Zig'de açık bellek ayırmazig
const std = @import("std");

pub fn main() !void {
    // Memory comes from an allocator you choose and pass explicitly
    const allocator = std.heap.page_allocator;
    const numbers = try allocator.alloc(u32, 5);
    defer allocator.free(numbers); // freed when main returns

    for (numbers, 0..) |*n, i| {
        n.* = @intCast(i * i);
    }
    std.debug.print("Last square: {d}\n", .{numbers[4]});
}

Sık sorulan sorular

Zig üretime hazır mı?

Bazı şirketler ve açık kaynak projeleri Zig ile yazılmış yazılımları şimdiden yayımlıyor, ancak dil 1.0 sürümüne ulaşmadı ve sürümler arasında hâlâ değişiyor. Onu kullanan ekipler, derleyiciyi yükselttiklerinde kodlarını güncellemeyi beklemelidir.

Zig ile C arasındaki fark nedir?

Zig, C'nin elle bellek yönetimini ve düşük seviyeli kontrolünü korur, ancak önişlemciyi kaldırır; hata birleşimleri, isteğe bağlı tipler, derleme zamanında yürütme ve güvenlik denetimleri ekler ve ayırmayı açık hale getirir. C kütüphanelerini doğrudan da kullanabilir, bu yüzden ikisi aynı projede yaşayabilir.

Zig mi Rust mı öğrenmeliyim?

Rust, derleme zamanı bellek güvenliği garantileri ve geniş, kararlı bir ekosistem sunar; bu da büyük ekiplere ve güvenliğe duyarlı koda uygundur. Zig daha küçük ve C'ye daha yakındır; bu da basit, açık düşük seviyeli kontrol ve kolay C birlikte çalışabilirliği isteyen geliştiricilere uygundur.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar