Menu
flag Ar iconالعربيةdown icon

ما هي لغة Zero؟ لغة البرمجة المصمّمة لوكلاء الذكاء الاصطناعي

‏Zero لغة برمجة أنظمة تجريبية من Vercel Labs، صُمّمت لتكون وكلاء الذكاء الاصطناعي مستخدميها من الدرجة الأولى — لا البشر فقط. تعرّف على ماهيتها وأسباب وجودها.

تحتوي هذه الصفحة على محررات قابلة للتشغيل — حرّر، شغّل، وشاهد النتيجة فوراً.

لغة مصمَّمة حول قرّائها

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

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

‏Zero مبنية من قِبل Vercel Labs، موجودة على zerolang.ai، ومفتوحة المصدر على github.com/vercel-labs/zero. ملفات المصدر تنتهي بـ .0.

خمسة أمور في هذا المقتطف — pub، وWorld، وraises، وcheck، والاستدعاء الصريح world.out.write — تُخبرك بالكثير عن طريقة تفكير Zero. سنشرح كلًا منها لاحقًا.

"كل شيء صريح"

الشعار غير الرسمي في توثيق Zero هو كل شيء صريح. تتجنّب اللغة عمدًا نوع الآليات الخفية التي تجعل لغات الأنظمة الأخرى مريحة للبشر لكنها خطرة على مولّدات الشيفرة:

  • لا جامع نفايات إلزامي.
  • لا مُخصِّص ذاكرة خفي.
  • لا زمن تشغيل غير متزامن ضمني.
  • لا متغيّرات عمومية سحرية — لا stdout محيط، ولا process.env، ولا نظام ملفات ضمني.

أي شيء تفعله الدالة يمسّ العالم الخارجي يجب أن يظهر في توقيعها. هذا قدر كبير من الكتابة بالنسبة للبشر؛ أما للوكيل الذي يستنتج ما تفعله الدالة فعليًا، فهي هدية.

القدرات بدلًا من العموميات

طريقة تعامل Zero مع الإدخال والإخراج هي أوضح مثال على هذه الفلسفة. لا توجد دالة print عمومية. الإخراج يحدث عبر قيمة World يُسلّمها زمن التشغيل إلى main:

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

إذا أرادت دالة عميقة في مكدّس الاستدعاءات كتابة سطر سجل، فيجب تمرير World (أو قدرة أضيق) إليها صراحة. تستطيع قراءة توقيع الدالة وتعرف — دون قراءة جسمها — هل يمكن أن تمسّ الشبكة أو نظام الملفات أو stdout. هذه خاصية يستطيع المحلّل الساكن (أو الوكيل الذي يراجع الشيفرة) الاعتماد عليها.

قدرة World تتعمّق في هذه الفكرة.

الفشل الصريح مع raises وcheck

الدوال التي يمكن أن تفشل تُعلن ذلك. والمستدعون الذين يستدعون دوال قابلة للفشل يُقرّون بذلك. لا يوجد رمي ضمني:

raises { InvalidInput } على validate تعني "هذه الدالة يمكن أن تفشل بـ InvalidInput". وcheck في موقع الاستدعاء تعني "إذا فشل هذا، انشر الخطأ إلى الأعلى". لا يمكنك إسقاط خطأ بالخطأ — إما أن يظهر في توقيع دالتك أو يوقفك المترجم. راجع Raises و Check للقصة كاملة.

مترجم يتحدّث مع الوكلاء

أكثر ما يميّز Zero ليس ميزة في الصياغة — بل مخرجات المترجم. شغّل zero check --json على برنامج معطوب وستحصل على شيء كهذا:

{
    "ok": false,
    "diagnostics": [
        {
            "code": "NAM003",
            "message": "unknown identifier",
            "line": 3,
            "repair": { "id": "declare-missing-symbol" }
        }
    ]
}

ثلاثة أمور تجعل هذا مختلفًا عن خطأ مترجم عادي:

  1. رموز أخطاء مستقرّة. NAM003 تعني "مُعرِّف غير معروف" اليوم وستعني تمامًا الشيء نفسه في الإصدار التالي للمترجم. يستطيع الوكلاء مطابقة الأنماط على الرمز دون تحليل نصّ إنجليزي.
  2. بيانات إصلاح مهيكلة. الحقل repair يُسمّي نوع الإصلاح الذي يعتقد المترجم أنه سيحلّ الخطأ. يستطيع الوكيل جلب الخطة عبر zero fix --plan --json وتطبيقها.
  3. لا حاجة لتحليل النصّ الأدبي. الفكرة كلّها هي ألّا يضطر الوكيل لتفسير رسالة وُدّية للبشر ليُقرّر ما يفعله تاليًا.

تشخيصات JSON تشرح الصيغة بالتفصيل.

مساحة سطحية صغيرة عمدًا

صياغة Zero صغيرة ومنتظمة — أقرب روحًا إلى لغة C المبكّرة منها إلى لغة فيها كلّ شيء مثل Scala أو ‏C++ الحديثة. السبب عملي: يجب أن يستطيع الوكيل استيعاب اللغة كاملةً خلال جلسة دون أن يُخطئ في الحالات النادرة.

هذا يعني أنك ستجد:

  • طريقة واحدة لتعريف دالة (fun أو pub fun).
  • طريقة واحدة لربط قيمة محلية (let).
  • طريقة واحدة لنمذجة الأنواع المنتجة (shape)، وطريقة واحدة لنمذجة أنواع المجموع (choice)، وطريقة واحدة للتعدادات البسيطة (enum).
  • بنية مطابقة أنماط واحدة (match).
  • بنية حلقة واحدة في المرحلة الأولى من اللغة (while).

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

ما ليست Zero

لضبط التوقّعات:

  • ليست لغة سكربتات. Zero تُترجم إلى ملفات تنفيذية أصلية. البرامج صغيرة (يذكر التوثيق ملفات تنفيذية أقل من 10 كيلوبايت) ولا تجرّ معها زمن تشغيل.
  • ليست Rust ولا Go ولا Zig. الصياغة لها أسلاف مشتركة لكن الأولويات مختلفة — Rust تُحسِّن لأمان الذاكرة بنظام أنواع متطوّر، أما Zero تُحسِّن لقابلية تعلّم الوكيل بنظام صغير عمدًا.
  • ليست مستقرّة. Zero قبل الإصدار 1.0. الفريق صريح بأن تغييرات كاسرة ستحدث إذا أفادت أهداف اللغة الموجّهة للوكلاء. لا تعتمد عليها في أي شيء جدّي بعد.
  • ليست ميزة في منصّة Vercel للنشر. رغم أنها من Vercel Labs، فإن Zero غير مرتبطة بـ Next.js أو باستضافة Vercel. هي لغة أنظمة مستقلّة.

متى قد تجرّب Zero اليوم

قد تجرّب Zero اليوم إذا كنت مهتمًا بـ:

  • كيف تتغيّر اللغة عندما تأتي قيود تصميمها من الوكلاء بدلًا من البشر.
  • التجريب مع الإدخال والإخراج القائم على القدرات دون تبنّي لغة بحثية.
  • مشاهدة شكل "مخرجات مترجم مهيكلة" كميزة من الدرجة الأولى لا كملحق لاحق.
  • تقديم ملاحظات لـ Vercel Labs على مشروع يتطوّر بنشاط.

ستتجاوزها (الآن) إذا كنت تحتاج لغة مستقرّة لعمل حقيقي، أو تريد منظومة ناضجة من المكتبات، أو تحتاج أدوات متعدّدة المنصّات بمستوى Rust أو Go.

التالي: تثبيت Zero

التوثيق التالي يشرح تثبيت سلسلة أدوات Zero وجعل أوّل برنامج لك يُترجم. يستغرق الأمر دقيقة تقريبًا من البداية إلى النهاية.

الأسئلة الشائعة

ما هي لغة البرمجة Zero؟

‏Zero لغة برمجة أنظمة تجريبية من Vercel Labs، صُمّمت لتكون وكلاء الذكاء الاصطناعي مستخدميها الأساسيين إلى جانب البشر. تتميّز بصياغة صغيرة منتظمة، وتأثيرات صريحة عبر قدرة World، ومترجم يُصدر تشخيصات JSON مهيكلة وخطط إصلاح قابلة للقراءة آليًا يمكن للوكلاء التصرّف بناءً عليها مباشرة.

من يطوّر Zero؟ وهل هي منتج رسمي من Vercel؟

‏Zero مشروع من Vercel Labs — الذراع البحثية لـ Vercel. هي تجربة مفتوحة المصدر مُستضافة على github.com/vercel-labs/zero، وليست منتجًا مستقرًا من Vercel. ملف README يصفها صراحة بأنها قبل الإصدار 1.0 ويحذّر من تشغيلها في الإنتاج أو مع بيانات حسّاسة.

هل Zero لغة 'للوكلاء'؟

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

كيف يبدو ملف مصدر Zero؟

ملفات المصدر تستخدم الامتداد .0. أبسط برنامج يبدو هكذا: pub fun main(world: World) -> Void raises { check world.out.write("hello\n") }. المعامل World هو كائن القدرة الذي تستخدمه لتنفيذ عمليات الإدخال والإخراج، وraises وcheck يجعلان العمليات القابلة للفشل صريحة.

هل Zero جاهزة للإنتاج؟

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

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن