Menu
flag Ar iconالعربيةdown icon
جرّب في Playground

التصميم الموجَّه للوكلاء: لماذا توجد Zero وما الذي تُقايضه

‏Zero مبنية حول سؤال واحد: كيف تبدو لغة برمجة عندما يكون وكلاء الذكاء الاصطناعي مستخدمين من الدرجة الأولى منذ اليوم الأول؟ إليك المبادئ والمقايضات.

السؤال الذي تطرحه Zero

الفرضية خلف Zero بسيطة: عندما يقرأ وكيل ذكاء اصطناعي — لا إنسان فقط — الشيفرة ويكتبها ويُصلحها، ماذا تريد اللغة نفسها أن تبدو عليه؟

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

تبدأ Zero من جديد مع قلب القيد: صمِّم للوكلاء أوّلًا، اقبل أن البشر سيستمرّون في قراءة الشيفرة، وانظر ما يخرج.

المبدأ 1: سطح صغير منتظم

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

تُبقي Zero السطح صغيرًا عمدًا:

  • شكل ربط واحد (let).
  • شكل دالة واحد (fun، اختياريًا pub).
  • حلقة واحدة اليوم (while).
  • طريقة واحدة لنمذجة الأنواع المنتجة (shape).
  • طريقة واحدة لنمذجة أنواع المجموع بحمولات (choice).
  • طريقة واحدة لنمذجة مجموعات مُعنوَنة (enum).
  • بنية مطابقة أنماط واحدة (match).

لا إعادة تحميل معاملات، ولا مُزخرفات (decorators)، ولا ماكروهات، ولا تحويلات ضمنية، ولا إكراه قيم صدق، ولا عامل ثلاثي. كل غياب ميزة: يُزيل مكانًا يستطيع فيه الوكيل اختيار البديل الخاطئ.

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

المبدأ 2: تأثيرات صريحة

معظم اللغات تسمح لأي دالة، في أي مكان، بتنفيذ إدخال/إخراج. console.log في JavaScript، وprintf في C، وprint في Python. توقيع الدالة لا يُعطي أي دليل على ما إذا كانت قد تكتب إلى ملف أو تصل إلى الشبكة. الطريقة الوحيدة للمعرفة هي قراءة الجسم، تكراريًا.

تتّخذ Zero الموقف المعاكس: كل تأثير تُحدثه الدالة يظهر في توقيعها.

  • الإدخال/الإخراج يُحرَس بـ قدرة World. دالة لا تأخذ World لا تستطيع تنفيذ إدخال/إخراج. نظام الأنواع يفرض هذا.
  • الفشل يُحرَس بـ raises وcheck. دالة قابلة للفشل تقول ذلك في توقيعها. كل مستدعٍ يُقرّ بذلك بـ check أو بنية صريحة أخرى.

من توقيع الدالة وحده، تستطيع الإجابة على سؤالَين يهمّان وكيلًا (أو محلِّلًا ساكنًا، أو مراجِعًا بشريًا) كثيرًا:

  • "هل يمكن لهذا مسّ العالم الخارجي؟" — نعم إذا وفقط إذا ظهرت World.
  • "هل يمكن لهذا الفشل؟" — نعم إذا وفقط إذا ظهرت raises.

تلك الخاصية ليست موجودة في اللغات السائدة، وليست خاصية صغيرة.

التكلفة هي توصيل المعاملات. قيمة World تُمرَّر حيثما يُحتاج الإدخال/الإخراج؛ وعبارة raises تتكرّر حيثما تتدفّق الأخطاء. تقبل Zero ذلك ثمنًا للخاصية.

المبدأ 3: أدوات حتمية

المبدأ الثالث هو الأكثر توجيهًا للوكلاء مباشرة: كل مخرج يُنتجه المترجم هو بيانات مهيكلة.

تشخيصات JSON هي المثال الأبرز:

{
    "code": "NAM003",
    "message": "unknown identifier",
    "line": 3,
    "repair": { "id": "declare-missing-symbol" }
}

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

  1. رموز مستقرّة. NAM003 تعني الشيء نفسه اليوم وغدًا، بغضّ النظر عن صياغة الرسالة الموجَّهة للبشر.
  2. خطط إصلاح مهيكلة. عندما يعتقد المترجم أنه يعرف كيف يُصلح تشخيصًا، يُصدر خطّة كبيانات — قائمة تعديلات، لا اقتراح إنجليزي.
  3. قنوات مهيكلة متعدّدة. التشخيصات، ورسوم الاعتمادية، وتقارير الحجم، والتفسيرات كلّها تعيش خلف أوضاع --json.

الفكرة كاملة أن أداة — وكيل أو غيره — لا تحتاج أبدًا لتحليل نصّ إنجليزي للتصرّف على مخرجات المترجم. البحث عن رمز مستقرّ دقيق؛ وتحليل النصّ ضبابي. تعامل Zero الأوّل كعقد والثاني كراحة للبشر.

المبدأ 4: مكتبة تعيش في اللغة

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

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

هذا طموح أكثر من كونه واقعًا منتهيًا اليوم. المكتبة القياسية قبل الإصدار 1.0 حقيقية لكنها لا تزال تنمو. المبدأ هو الاتّجاه، لا الوجهة.

ما تُقايضه Zero

كل خيار تصميمي يُكلّف شيئًا. مقايضات صادقة تقوم بها Zero:

  • الإطالة على حساب الإيجاز. الدوال النقية لا تحتاج World. الدوال القادرة على الإدخال/الإخراج تحتاج. الأخطاء تظهر في التوقيعات. النتيجة تعليقات أكثر من مكافئ JavaScript أو Python.
  • الصراحة على حساب السحر. لا ميتابرمجة انعكاسية، ولا مُزخرفات تُغلّف السلوك بهدوء، ولا متغيِّرات عمومية ضمنية. أشياء تبدو وكأنها "تعمل ببساطة" في اللغات الديناميكية يجب توصيلها يدويًا.
  • الثبات على حساب الديناميكية. الأنواع مطلوبة على المعاملات وقيم الإرجاع وحقول البِنى. يُنجز المترجم قدرًا كبيرًا من العمل؛ والتكلفة أن كل توقيع شيء يجب على المؤلف (أو المولّد) كتابته.
  • الاستقرار على حساب وتيرة التغيير. اللغة قبل الإصدار 1.0 وتتغيّر بسرعة، لكن نيّة التصميم هي إغلاق السطح بمجرّد استقراره. التكلفة أن إضافة ميزة راحة ذكية جديدة لاحقًا يصبح أصعب، لأن المعيار للإضافات "هل هذا يساعد الوكيل أكثر مما يُكلّفه؟"

هل تستحقّ المقايضات يعتمد على ما تُحسِّن من أجله. إن كنت إنسانًا يكتب سكربتًا لمرّة واحدة، فالاحتكاك حقيقي وفوائد الوكيل مجرّدة. إن كنت تُشغّل وكيلًا يُنتج آلاف البرامج الصغيرة يوميًا، فالاحتكاك يدفع نفسه مرّات عديدة.

ما لا تحاول Zero أن تكونه

بعض الادّعاءات السلبية تستحقّ التصريح بها:

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

ما هو مثير حتى لو لم تستخدمها

حتى لو لم تكتب سطرًا من Zero أبدًا، فالتجربة مُفيدة:

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

أين تقرأ تاليًا

إن انتهيت من بقية هذه الوثائق، فأكثر القراءات فائدة خارجية:

  • مستودع Zero على github.com/vercel-labs/zero — أمثلة ومصدر وAGENTS.md لبيان نيّة المُشرفين.
  • الموقع الرسمي zerolang.ai — تعليمات البدء والمقدّمة التقليدية.

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

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

ماذا تعني 'لغة برمجة موجَّهة للوكلاء'؟

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

لماذا لا تعمل لغة موجودة للوكلاء؟

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

ما المبادئ الأساسية لتصميم Zero؟

صياغة صغيرة منتظمة (طريقة واحدة لكل شيء)، تأثيرات صريحة عبر قدرة World (لا إدخال/إخراج محيط)، فشل صريح عبر raises/check (لا تدفّق تحكّم خفي)، وأدوات حتمية (مخرجات المترجم كبيانات مهيكلة برموز مستقرّة وخطط إصلاح). تتركّب المبادئ — كلٌّ منها يجعل الأخرى أكثر فائدة للوكيل.

ماذا تتنازل عنه Zero لتكون موجَّهة للوكلاء؟

الإيجاز والراحة المحيطة. لا توجد قيم صدق ضمنية، ولا print عمومية، ولا try/catch تتفكّك بهدوء عبر مكدّس الاستدعاءات. الدوال تحمل معاملات أكثر والتوقيعات تحمل تعليقات أكثر. المقايضة أن ما تفعله الدالة — بما في ذلك ما يمكن أن تفشل فيه — قابل للقراءة من توقيعها وحده.

هل ستحلّ Zero محلّ لغات البرمجة التي يكتبها البشر؟

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

Coddy programming languages illustration

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

ابدأ الآن