دليل زيج للمبتدئين: كيفية تثبيت واستخدام زيج

@apidog

@apidog

22 يونيو 2025

دليل زيج للمبتدئين: كيفية تثبيت واستخدام زيج

زيغ هي لغة برمجة حديثة وعامة الغرض مصممة لتكون قوية، مثالية، وقابلة للصيانة. مع التركيز على البساطة والوضوح، توفر زيغ تحكمًا منخفض المستوى مع تجنب تدفقات التحكم المخفية والتخصيصات. سيوجهك هذا الدليل خلال عملية التثبيت، وإنشاء أول برنامج زيغ لك، وتشغيل الاختبارات. بنهاية هذا الدليل، ستكون لديك أساس متين لاستكشاف هذه اللغة القوية بشكل أكبر.

بينما نستكشف أدوات المطورين القوية، يجدر بالذكر أبادوغ - البديل النهائي لبوستمان لتطوير واجهات برمجة التطبيقات واختبارها. تجمع أبادوغ بين توثيق واجهات برمجة التطبيقات، التصميم، المحاكاة، الاختبار، وتصحيح الأخطاء في منصة واحدة متكاملة.

زر

مع واجهته البديهية، وميزاته التعاونية، وتكامل التحكم في الإصدارات السلس، تعزز أبادوغ بشكل كبير من كفاءة سير العمل لمطوري واجهات برمجة التطبيقات. تشمل مجموعتها الشاملة من الميزات الاختبار التلقائي، إدارة البيئات، ربط الطلبات، والتحقق الذكي من الاستجابة، مما يجعلها أداة أساسية لفرق التطوير الحديثة.

زر

قبل الغوص في برمجة زيغ، فكر في إضافة أبادوغ إلى مجموعة أدوات المطورين الخاصة بك لتحسين إنتاجيتك العامة عند العمل مع واجهات برمجة التطبيقات وخدمات الويب.

الجزء 1: تثبيت زيغ

قبل أن تتمكن من البدء في البرمجة بلغة زيغ، تحتاج إلى تثبيت المترجم والأدوات. تختلف عملية التثبيت بناءً على نظام التشغيل الخاص بك.

التثبيت على لينكس

لديك خياران رئيسيان لتثبيت زيغ على لينكس:

الخيار 1: استخدام مدير حزم التوزيعة الخاصة بك

تقوم معظم توزيعات لينكس الرئيسية بتعبئة أحدث إصدار من زيغ. وغالبًا ما تكون هذه هي الطريقة الأكثر سهولة:

# لديبيان/أوبونتو
sudo apt install zig

# لفيدورا
sudo dnf install zig

# لأرش لينكس
sudo pacman -S zig

الخيار 2: التثبيت اليدوي

إذا لم يكن لدى توزيعتك زيغ أو كنت بحاجة إلى إصدار معين:

قم بتنزيل إصدار مسبق البناء من زيغ من الموقع الرسمي الذي يتطابق مع بنية وحدة المعالجة المركزية لديك

للتحقق من بنية جهازك، استخدم:

uname -m

استخرج الأرشيف باستخدام tar:

tar xf zig-linux-x86_64-0.13.0.tar.xz

أضف ملف التنفيذ الخاص بزيغ إلى PATH الخاص بك:

echo 'export PATH="$HOME/zig-linux-x86_64-0.13.0:$PATH"' >> ~/.bashrc

قم بتطبيق التغييرات:

source ~/.bashrc

التثبيت على ويندوز

لدى مستخدمي ويندوز عدة خيارات:

الخيار 1: استخدام مديري الحزم

# باستخدام شوكولاتي
choco install zig

# باستخدام وينغيت
winget install zig.zig

# باستخدام سكوب
scoop install zig

الخيار 2: التثبيت اليدوي

قم بتنزيل إصدار مسبق البناء من زيغ لنظام ويندوز يتطابق مع بنية وحدة المعالجة المركزية لديك (تستخدم معظم أنظمة ويندوز x86_64/AMD64)

تحقق من بنية جهازك باستخدام:

$Env:PROCESSOR_ARCHITECTURE

استخرج ملف ZIP

أضف زيغ إلى PATH الخاص بك:

للمستخدم الحالي:

[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\\\\path\\\\to\\\\zig-windows-x86_64",
    "User"
)

للنظام بالكامل:

[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\\\\path\\\\to\\\\zig-windows-x86_64",
    "Machine"
)

أغلق واستعد فتح وحدة التحكم الخاصة بك

التثبيت على macOS

أسهل طريقة لتثبيت زيغ على macOS هي باستخدام Homebrew:

brew install zig

التحقق من التثبيت الخاص بك

بعد التثبيت، تحقق من أن زيغ تم تثبيته بشكل صحيح عن طريق تشغيل:

zig version

يجب أن ترى مخرجات مثل:

0.13.0

الجزء 2: مرحبا، العالم! في زيغ

الآن بعد أن تم تثبيت زيغ، دعنا نقوم بإنشاء أول برنامج لك بلغة زيغ: المثال التقليدي "مرحبا، العالم!".

إنشاء ملف البرنامج

  1. أنشئ ملفًا جديدًا باسم main.zig
  2. افتحه في محرر النصوص المفضل لديك
  3. أضف الشفرة التالية:
const std = @import("std");

pub fn main() void {
    std.debug.print("Hello, {s}!\\\\n", .{"World"});
}

دعونا نفصل ما تفعله هذه الشفرة:

تشغيل البرنامج

لبناء وتشغيل برنامجك، استخدم الأمر التالي:

zig run main.zig

هذا يقوم بتجميع الشفرة الخاصة بك وتنفيذها على الفور. يجب أن ترى المخرجات:

مرحبا، العالم!

ملاحظة مهمة حول ترميز الملفات

تتطلب زيغ ترميز UTF-8 لملفات المصدر. إذا واجهت خطأ مثل invalid bytes، فقد يحتوي ملفك على ترميز مختلف. لإصلاح ذلك:

zig fmt main.zig

سيعيد ترميز ملفك إلى UTF-8. ثم قم بإعادة فتح الملف في محرر النصوص الخاص بك.

الجزء 3: تشغيل الاختبارات في زيغ

تحتوي زيغ على إطار عمل مدمج للاختبار يسهل كتابة الاختبارات وتشغيلها. فهم كيفية استخدام الاختبارات أمر حيوي أثناء تعلمك لزيغ، خاصةً أن العديد من الأمثلة في توثيق زيغ تُقدم كاختبارات.

إنشاء اختبار بسيط ينجح

دعونا نقوم بإنشاء ملف اختبار أساسي:

  1. أنشئ ملفًا جديدًا باسم test_pass.zig
  2. أضف الشفرة التالية:
const std = @import("std");
const expect = std.testing.expect;

test "always succeeds" {
    try expect(true);
}

تستورد هذه الشفرة وحدة الاختبار، ثم تحدد اختبارًا باسم "always succeeds" الذي يتوقع أن تكون true صحيحة (وهو الأمر الذي يكون دائمًا صحيحًا).

لتشغيل هذا الاختبار:

zig test test_pass.zig

يجب أن ترى مخرجات مشابهة لـ:

جميع الاختبارات 1 نجحت.

إنشاء اختبار يفشل

الآن، دعونا نقوم بإنشاء اختبار يفشل لفهم كيفية تعامل زيغ مع حالات فشل الاختبار:

  1. أنشئ ملفًا باسم test_fail.zig
  2. أضف الشفرة التالية:
const std = @import("std");
const expect = std.testing.expect;

test "always fails" {
    try expect(false);
}

يتوقع هذا الاختبار أن تكون false صحيحة، وهو الأمر الذي يفشل بالتأكيد.

عند تشغيل:

zig test test_fail.zig

سترى مخرجات خطأ مثل:

اختبار [1/1] test.always fails... فشل (TestUnexpectedResult)
/usr/lib/zig/std/testing.zig:515:14: 0x2241ef in expect (اختبار)
if (!ok) return error.TestUnexpectedResult;
^
[...]/test_fail:5:5: 0x224305 in test.always fails (اختبار)
try expect(false);
^
0 تمت; 0 تم تخطيها؛ 1 فشلت.

فهم معالجة الأخطاء في الاختبارات

الكلمة الأساسية try مهمة جدًا في اختبارات زيغ. تحاول تنفيذ دالة قد تعيد خطأ. إذا تمت إعادة خطأ، فإنها تمرر تلك الخطأ إلى المتصل.

حاول تشغيل نفس الاختبار بدون الكلمة الأساسية try:

test "لن يتم تجميعه بشكل صحيح" {
    expect(false);
}

ستحصل على خطأ في مجمع التعليمات البرمجية لأنك لا تتعامل مع الخطأ المحتمل الذي قد ترجعها expect().

الجزء 4: أساسيات زيغ للمبتدئين

المتغيرات والثوابت

في زيغ، يمكنك تعريف المتغيرات والثوابت كما يلي:

const std = @import("std");

pub fn main() void {
    // ثابت (لا يمكن تغييره)
    const fixed_value = 42;

    // متغير (يمكن تغييره)
    var changeable_value = 10;
    changeable_value = 20; // هذا مسموح

    // يمكنك تحديد الأنواع بشكل صريح
    const explicit_integer: i32 = 1234;
    var explicit_float: f64 = 3.14159;

    std.debug.print("ثابت: {d}, قابل للتغيير: {d}\\\\n",
        .{fixed_value, changeable_value});
}

أنواع البيانات الأساسية

تمتلك زيغ عدة أنواع بيانات مدمجة:

const std = @import("std");

pub fn main() void {
    // أعداد صحيحة
    const i: i32 = -42;       // عدد صحيح 32 بت ذو إشارة
    const u: u32 = 42;        // عدد صحيح 32 بت بدون إشارة

    // أعداد عائمة
    const f: f32 = 3.14;      // عدد عائم 32 بت
    const d: f64 = 2.71828;   // عدد عائم 64 بت

    // منطقي
    const b: bool = true;

    // أحرف وسلاسل نصية
    const c: u8 = 'A';                    // حرف (كعدد صحيح)
    const s: []const u8 = "مرحبا، زيغ!";  // سلسلة (شريحة من u8)

    // مصفوفات ذات حجم ثابت معروف في وقت التجميع
    const arr = [5]u8{1, 2, 3, 4, 5};

    std.debug.print("عدد صحيح: {d}, عدد عائم: {d}\\\\n", .{i, f});
    std.debug.print("سلسلة: {s}\\\\n", .{s});
}

الدوال

تُعرف الدوال في زيغ باستخدام الكلمة الرئيسية fn:

const std = @import("std");

// دالة أساسية مع معلمات وقيمة العودة
fn add(a: i32, b: i32) i32 {
    return a + b;
}

// دالة قد تعيد خطأ
fn divide(a: f32, b: f32) !f32 {
    if (b == 0) {
        return error.DivisionByZero;
    }
    return a / b;
}

pub fn main() void {
    // استدعاء دالة بسيطة
    const sum = add(5, 3);
    std.debug.print("5 + 3 = {d}\\\\n", .{sum});

    // استدعاء دالة قد تعيد خطأ
    if (divide(10, 2)) |result| {
        std.debug.print("10 / 2 = {d}\\\\n", .{result});
    } else |err| {
        std.debug.print("خطأ: {}\\\\n", .{err});
    }

    // طريقة أخرى للتعامل مع الأخطاء
    const division_result = divide(10, 0) catch |err| {
        std.debug.print("فشل القسمة: {}\\\\n", .{err});
        0; // القيمة الافتراضية في حالة الخطأ
    };
    std.debug.print("النتيجة (أو القيمة الافتراضية): {d}\\\\n", .{division_result});
}

الخاتمة

لقد غطى هذا الدليل الأساسيات اللازمة للبدء في استخدام زيغ - من التثبيت عبر أنظمة التشغيل المختلفة، إلى إنشاء وتشغيل أول برنامج لك، والعمل مع إطار الاختبار في زيغ. كما قدمنا بعض المفاهيم الأساسية مثل المتغيرات، وأنواع البيانات، والدالات.

زيغ هي لغة قوية تقدم تحكمًا منخفض المستوى مع التركيز على الأمان، والوضوح، وقابلية الصيانة. إن نهجها في معالجة الأخطاء وإدارة الذاكرة يجعلها بديلًا مثيرًا للاهتمام للغات مثل C وC++ وRust.

لمتابعة رحلتك في زيغ، قم بالتفكير في:

تذكر أن زيغ لا تزال تتطور، لذا قد تتغير بعض الميزات مع نضوج اللغة نحو الإصدار 1.0. أتمنى لك البرمجة الممتعة!

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات