فيرسيل أنشأت لغة برمجة جديدة

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00أصدرت شركة Vassal للتو لغة برمجة جديدة تُدعى Xero، والمفترض أن ما يجعل
00:00:03هذه اللغة مختلفة هو أنها بُنيت من الصفر لتمكين البشر ووكلاء الذكاء الاصطناعي
00:00:07من تطوير برامج أصلية صغيرة معًا. ولكن أليس هذا ما نفعله جميعًا على أي حال؟
00:00:12إذن، ما الذي يجعل هذه اللغة أفضل؟ وهل هي حقًا فكرة جيدة، أم أنها مجرد مشروع جانبي آخر
00:00:16لن يتحدث عنه أحد بعد بضعة أشهر؟ دعونا نكتشف ذلك.
00:00:25إن Xero هي لغة أنظمة مثل Rust أو Zig، لذا ربما تكون لغة قد تعيد منصة BUN الكتابة بها يومًا ما.
00:00:30وعلى حد علمي، الفكرة بأكملها هي أن اللغات الحالية قد بُنيت للبشر.
00:00:34فنحن من يقرأ رسائل الخطأ، والتحذيرات، وتتبع التعليمات، لكن الذكاء الاصطناعي يعمل بشكل أفضل بكثير عندما يتعامل مع
00:00:38لذا مع لغة Xero، تم بناء مجموعة الأدوات الكاملة مع أخذ ذلك في الاعتبار،
00:00:43مما يعني أن كل ما ينتجه المترجم (compiler) يمكن إخراجه بصيغة JSON.
00:00:46الآن، بناءً على هذه النقاط وحدها، والعمل الواضح جدًا في صياغة الجمل بواسطة الذكاء الاصطناعي على هذا الموقع،
00:00:51ما زلت متشككًا تمامًا في سبب وجود هذه اللغة ومدى كفاءة عملها،
00:00:56ولكني سأحتفظ بآرائي للنهاية. أولاً، دعونا نستكشف اللغة نفسها،
00:00:59لأنها في الحقيقة لا تزال رائعة جدًا. سنبدأ بالمشروع الكلاسيكي “أنا أتعلم
00:01:03لغة جديدة”، وهو طباعة سلسلة نصية بسيطة للغاية. معظم هذا الكود يسهل فهمه.
00:01:08لدينا دالة main عامة (public) باعتبارها نقطة الدخول لهذا البرنامج. هذه الدالة ستعيد
00:01:12void (فراغ)، وبداخلها نقوم بطباعة سلسلة نصية. ولكن الطريقة التي تتم بها
00:01:16طباعة هذه السلسلة هي ما يشير إلى ميزاتنا الأولى. نحن نستخدم قدرة “world”.
00:01:21أنت بحاجة إلى هذه القدرة إذا كنت تقوم بأي عمليات إدخال وإخراج، مثل عمليات الملفات، أو الطباعة، أو اتصالات الشبكة،
00:01:26أو أي تأثير جانبي للإدخال والإخراج، وكل ذلك جزء من مبدأ الصراحة التامة في هذه اللغة.
00:01:31فإذا كانت الدالة تمتلك قدرة world هذه، فهذه إشارة فورية على أنها تقوم ببعض عمليات الإدخال والإخراج،
00:01:37وإذا لم تكن تمتلكها، فهذا يعني أنها ستكون خالية من التأثيرات الجانبية للإدخال والإخراج.
00:01:40تتيح قدرة world أيضًا للمترجم رفض القدرات غير المتاحة بناءً على
00:01:45الهدف البرمجي في وقت الترجمة (compile time) بدلاً من وقت التشغيل (runtime)، فإذا حاولت استخدام الوصول إلى نظام الملفات
00:01:50داخل هذه الدالة ثم حاولت استهداف بناء لوحدات الويب (web assembly)، فسيعرض المترجم خطأً أولاً،
00:01:54وبذلك لن تفاجأ بخطأ في وقت التشغيل لاحقًا.
00:01:57بعد قدرة world، لدينا أيضًا بعض الكلمات المفتاحية في هذا البرنامج.
00:02:00لدينا هنا check، وهي الطريقة التي تتعامل بها مع الأخطاء. فإذا كانت الدالة قابلة للفشل،
00:02:05تحددها باستخدام raises، ثم تُستخدم check هنا لتمرير هذا الخطأ للأعلى. هذا مشابه جدًا
00:02:09لأداة علامة الاستفهام في لغة Rust، ولكن ككلمة مفتاحية فقط. هذا كل ما نحتاج لمعرفته
00:02:13عن برنامجنا الأول في Xero، ويمكننا تشغيله الآن بكتابة xero run ثم hello.xero.
00:02:19لاحظ أن هذا هو الامتداد الخاص بملفات لغة Xero. وإذا ضغطت على زر الإدخال الآن،
00:02:23سترى أنه يطبع: “مرحبًا، اشترك في Betastack”. وهو أمر يجب عليك فعله بكل تأكيد.
00:02:26وبالانتقال من برنامج الترحيب الخاص بنا، بما أننا أصبحنا جميعًا خبراء في Xero الآن،
00:02:30فإن اللغة تحتوي بالفعل على بعض العناصر الأساسية الأخرى لتغطية تطبيقاتك البسيطة.
00:02:34لقد قمت بإنشاء برنامج جديد هنا وهو مجرد تطبيق عشوائي يصنف ما إذا كان المدخل نصيًا،
00:02:39أم رقميًا، أم مزيجًا بينهما، ويمكنك رؤية أنه يستخدم بعض الميزات مثل المكتبات القياسية، ولدينا
00:02:43التعدادات (enums) هنا، ولدينا الأشكال (shapes)، وهي مشابهة جدًا للبُنى (structs)، ثم لدينا ميزات
00:02:47اللغة المعتادة التي تتوقعها مثل جمل if، ولدينا جملة while بالأسفل هنا، كما يمكنك أيضًا
00:02:52استخدام حلقات for، ثم لدينا أيضًا match بالأسفل هنا وهي تشبه إلى حد كبير جملة switch.
00:02:56لذا لا يوجد شيء غير متوقع أو جديد تمامًا. وعندما يتعلق الأمر بمفاهيم أكثر تقدمًا مثل الذاكرة، فمرة أخرى مع Xero
00:03:00يجب أن يكون كل شيء صريحًا. لذلك لدينا نطاقات قابلة للتعديل (mutable spans) لعرض البيانات القابلة للكتابة، وهناك أيضًا نطاقات
00:03:05لعرض البيانات القابلة للقراءة فقط، وبالأسفل هنا لدينا نوع مملوك (owned type). هذا يعني في الأساس
00:03:10أن هذه القيمة مملوكة هنا وعندما تخرج عن نطاق العمل (scope)، قم بتشغيل دالة drop. نحن نقوم بتعريف دالة drop
00:03:14بأنفسنا على الهيكل (shape) هنا، لذا هذا هو المكان الذي سنضع فيه منطق التنظيف الخاص بنا. وهناك طريقة أخرى
00:03:18يمكنك من خلالها فعل ذلك وهي استخدام الكلمة المفتاحية defer ثم وضع دالة هنا. ما يعنيه هذا
00:03:22في الأساس هو أنه عندما تنتهي هذه الدالة وتخرج عن النطاق، قم بتشغيل هذه الدالة بعدها. إذن،
00:03:26هي تحتوي تقريبًا على كل ما تحتاجه لتطبيق أساسي للغاية اليوم، وهناك بضع ميزات أخرى
00:03:31ولكني لا أريد حقًا أن يكون هذا درسًا تعليميًا في البرمجة، ولكن لا تتردد في كتابة أن لديك
00:03:35ثلاث دقائق من الخبرة في لغة Xero في سيرتك الذاتية. ومع الانتهاء من كل ذلك، دعونا نركز على ما
00:03:39أعتقد أنه الميزة التسويقية الحقيقية لـ Xero، وهي سلسلة أدواتها وحقيقة أنها بُنيت لوكلاء الذكاء الاصطناعي.
00:03:44تخيل أن وكيل ذكاء اصطناعي يكتب بعض أكواد Xero ويتسبب في بعض الأخطاء البرمجية. حسنًا، هم يزعمون أنه
00:03:49في معظم اللغات ستحصل فقط على جدار من النصوص، ورسائل الخطأ تلك مصممة
00:03:54ليقرأها البشر. في Xero، يمكنك بالفعل الحصول على الرسالة القابلة للقراءة بشريًا وستبدو
00:03:58شيئًا كهذا، ولكن يمكنك أن ترى أن هذه ليست مخرجات منظمة. لذلك تأكدوا من أنه في
00:04:02كل جزء من سلسلة الأدوات، يوجد بالفعل خيار لإنتاج صيغة JSON. فإذا قمنا بتشغيل نفس الدالة مجددًا ولكن
00:04:07هذه المرة باستخدام خيار JSON، وأنا أقوم أيضًا بتمرير هذا إلى JQ لمجرد جعل المظهر يبدو أفضل قليلاً
00:04:12يمكنك رؤية أننا نحصل على رسالة خطأ ذات مخرجات منظمة وجميلة. لدينا تشخيصات هنا مثل
00:04:16الخطورة، والكود، والرسالة. ولدينا مكان حدوث الخطأ، والقيمة المتوقعة والقيمة
00:04:21الفعلية. ثم لدينا بعض المساعدة لنموذج الذكاء الاصطناعي (LLM) نفسه بالإضافة إلى حقل أمان الإصلاح الذي
00:04:26يقول إن هذا سيتطلب مراجعة بشرية ثم بعض المعلومات حول كيفية إصلاحه. إذن،
00:04:31الأمر مجرد محاولة لإعطاء سياق كافٍ لنموذج الذكاء الاصطناعي لكي يتمكن من إصلاحه بنفسه. وهناك أمر آخر يوضح
00:04:35ذلك جيدًا وهو أمر xero fix. هذا الأمر أستخدمه مع وضع التخطيط (plan mode) بالإضافة إلى خيار JSON وأقوم أيضًا
00:04:40بتمريره إلى JQ لمجرد أن يبدو جميلاً في شاشة الطرفية (terminal). عندما أضغط على زر الإدخال هنا فإنه يقوم
00:04:44في الأساس بإجراء فحص تشخيصي على الملف المعطل المصنف الذي أعطيته إياه، ويحدد بالأسفل ما الذي
00:04:49أحتاجه لكي أصلح هذا الملف فعليًا. يمكنك رؤية أننا نحصل على مخرجات منظمة مع حقول
00:04:53يكاد لا يحتاجها سوى نموذج الذكاء الاصطناعي فقط مثل مستويات الأمان، والوضع، والتطبيق، والتعديل. لدينا عناصر بالأسفل
00:04:58مثل سياسة الإصلاح بالاستضافة الذاتية (self-host repair policy). لدينا بعد ذلك قسم التشخيص وهو تقريبًا نفس
00:05:03الشيء الذي رأيناه في أمر xero check، وبالأسفل هنا لدينا أيضًا طريقة الإصلاح لكود الخطأ
00:05:07نفسه. إذن، كيف يتم إصلاح هذا عادةً؟ يبدو أن جزءًا من الفكرة يكمن في: ماذا لو كانت اللغة
00:05:12توفر التوثيق (documentation) الخاص بها عند الحاجة إليه؟ فإذا وجهنا نموذج ذكاء اصطناعي نحو هذه اللغة الجديدة،
00:05:17فلن يحتاج في الواقع للبحث عن أي توثيق أو استخدام أي مهارات مسبقة، بل سيكون قادرًا فقط على الحصول
00:05:21على معلومات كافية من سلسلة الأدوات عندما يحتاج إليها بالفعل. ولأضع ذلك قيد الاختبار، قمت بوضع
00:05:25ملفنا المعطل في مجلد جديد تمامًا لا يحتوي على أي معلومات حول ماهية لغة Xero، والآن
00:05:30أطلب ببساطة من Claude إصلاح هذا الملف المعطل وأعطيته أيضًا الأمر الذي يحتاجه لتلك
00:05:34التشخيصات لأنه يحتاج بالفعل لبعض المعلومات حول كيفية استخدام سلسلة الأدوات. وبذلك،
00:05:38يمكننا المضي قدمًا ورؤية ما إذا كان بإمكان Claude إصلاح هذا الملف بالفعل. وها نحن ذا، بعد 31 ثانية
00:05:43تمكن من إصلاح جميع الأخطاء في الملف، وفي الواقع لقد قمت بإدخال ثلاثة أخطاء وقد وجدها
00:05:47جميعًا وقام بإصلاحها، ويمكننا التمرير لأعلى ورؤية كيف فعل ذلك. لقد قام ببساطة بتشغيل أمر
00:05:51xero fix الذي أعطيته إياه. هذه المرة حصلنا على نتيجة ok true، وبذلك عرف أنه لم يتبقَ
00:05:56أي أخطاء، وإذا قمنا بالتمرير لأعلى يمكننا أن نرى أنه أجرى بعض التعديلات على الكود وفعل ذلك لأنه في
00:06:00الخطوة السابقة قام بتشغيل xero fix وحصل على بعض المعلومات حول كيفية إصلاح تلك المشكلة تمامًا،
00:06:05وفعل ذلك مع جميع المشكلات الثلاث التي كانت لدينا. إذن، لم تكن هناك معلومات مسبقة لدى النموذج حول
00:06:10لغة Xero، ولم يستخدم أي بحث ويب أو أي شيء من هذا القبيل لجلب التوثيق، بل استخدم
00:06:14ببساطة المعلومات التي وفرتها سلسلة الأدوات كمخرجات منظمة. أنا في الحقيقة
00:06:18منبهر قليلاً بذلك، فهذه لغة جديدة تمامًا لا يزال بإمكان نموذج ذكاء اصطناعي تصحيح أخطائها بفضل
00:06:22الطريقة التي بُنيت بها اللغة، ولكن هناك شيء واحد يجعلني أتساءل: هل هذا جديد حقًا؟ أعني،
00:06:28أنا أتفهم الفكرة التسويقية الكاملة للأخطاء وأن كل شيء في سلسلة الأدوات يمتلك مخرجات
00:06:31منظمة، ولكن هذا ليس مفهومًا جديدًا حقًا، فلدينا رسائل خطأ منظمة منذ عقود. أعني،
00:06:37انظر إلى هذا، لدي نفس البرنامج المصنف تقريبًا والمبني في Rust ولديه أخطاء مشابهة،
00:06:41ويمكنني فقط طلب المخرجات بصيغة JSON. لست متأكدًا حقًا من أننا بحاجة إلى لغة كاملة
00:06:46يتم بناؤها حول هذه الفكرة، وربما كان بإمكانك فقط تحسين اللغات الحالية إذا كنت تعتقد
00:06:51أن هناك فجوة في المعلومات. كما أنني متأكد تمامًا من أنه لو أخذت كود Rust المعطل ذاك وطلبت
00:06:55أن كلود سيكون قادرًا على إصلاحه بكل سهولة، وسيكون ذلك حتى لو لم يكن يستخدم مخرجات
00:07:00مهيكلة. أشعر أن النماذج اللغوية الكبيرة تؤدي عملًا جيدًا تمامًا مع الرسائل العادية، أو ربما لم
00:07:05أواجه هذه المشكلة بعد. علاوة على ذلك، لدينا حقيقة أن نماذج الذكاء الاصطناعي قد تدرّبت على كميات هائلة من
00:07:10لغات البرمجة الحالية مثل Rust، لذا ستكون جيدة جدًا في تصحيح أخطاء ذلك ولديه الكثير من
00:07:14الأمثلة في بيانات التدريب الخاصة بها، ولكن مع Xero، لا تملك أي أمثلة على الإطلاق. الآن، هذا لا يعني أنه
00:07:19لا يجب عليك مطلقًا محاولة إضافة لغة جديدة، بل يعني فقط أنه إذا كنت تبني تطبيقًا معقدًا فلن تختار
00:07:24لغة Xero، ولكن لنكون صادقين، هم لا يسوقون لها على هذا النحو على أي حال. بشكل عام،
00:07:28أعتقد أن هذه مجرد تجربة لطيفة، وإذا ظهر أي شيء، فهي توضح أنه لا يزال بإمكانك بناء لغة جديدة
00:07:32وإعطاء نماذج الذكاء الاصطناعي السياق المطلوب دون أن يتم تدريبها مسبقًا على تلك اللغة، ولكني لست متأكدًا
00:07:37حقًا ما إذا كان هذا مطلوبًا. لا يعني أي من هذا أن اللغة نفسها ليست رائعة. كما قلت،
00:07:42في الواقع، استخدامها ليس سيئًا، وتُترجم برمجياً (compile) إلى حجم جيد. لكني أشك في أنني سأستخدمها
00:07:47يومًا ما وتفضيلها على اللغات الراسخة مثل Rust أو Zig أو Go. أنا متأكد من أنه سيكون هناك الكثير من
00:07:51الآراء حول هذا الموضوع، لذا أخبروني برأيكم في التعليقات بالأسفل أو اضغطوا على زر الاشتراك،
00:07:55وكالعادة، أراكم في الفيديو القادم.

Key Takeaway

توفر لغة الأنظمة الجديدة Xero من Vercel سلسلة أدوات كاملة تخرج مخرجاتها بصيغة JSON لتمكين وكلاء الذكاء الاصطناعي من تشخيص الأخطاء وإصلاحها تلقائيًا دون الحاجة لمعلومات أو تدريب مسبق على اللغة.

Highlights

  • أصدرت شركة Vercel لغة برمجة أنظمة جديدة تُدعى Xero مصممة من الصفر للتعاون بين البشر ووكلاء الذكاء الاصطناعي.

  • تخرج جميع أدوات المترجم في لغة Xero البيانات بصيغة JSON المهيكلة لتسهيل قراءتها ومعالجتها بواسطة نماذج الذكاء الاصطناعي.

  • تستخدم اللغة مفهوم القدرات الصريحة مثل قدرة world لإدارة عمليات الإدخال والإخراج والتحقق منها في وقت الترجمة بدلاً من وقت التشغيل.

  • نجح نموذج لغة كبير مثل Claude في إصلاح ثلاثة أخطاء برمجية متعمدة في ملف Xero خلال 31 ثانية فقط دون أي تدريب مسبق على اللغة.

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

Timeline

مفهوم لغة Xero الجديدة وهيكل الأدوات المهيكل للذكاء الاصطناعي

  • تعد Xero لغة برمجة أنظمة منخفضة المستوى تقع في نفس فئة لغات مثل Rust وZig.
  • تعتمد الفكرة الأساسية للغة على معالجة قصور اللغات التقليدية المصممة خصيصًا ليقرأها البشر.

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

إدارة القدرات ومعالجة الأخطاء والتحقق في وقت الترجمة

  • تتطلب عمليات الإدخال والإخراج وتأثيراتها الجانبية الإعلان الصريح عن قدرة world في دالة main للبرنامج.
  • يتحقق المترجم من توافق القدرات مع الأهداف البرمجية مثل WebAssembly ويرفض التعليمات الخاطئة في وقت الترجمة.

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

عناصر اللغة الأساسية وإدارة الذاكرة الصريحة

  • تضم اللغة هياكل برمجية مألوفة مثل التعدادات enums والأشكال shapes المماثلة للبُنى structs وحلقات التحكم المعتادة.
  • تفرض الذاكرة نظام إدارة صريح يعتمد على النطاقات القابلة للتعديل والقراءة فقط والأنواع المملوعة.

تعتمد اللغة على آليات تحكم تقليدية تشمل جمل if وwhile وحلقات for وتطابق الأنماط عبر جملة match. تدير اللغة الذاكرة عبر استدعاء دالة drop مخصصة للتنظيف بمجرد خروج القيمة المملوكة عن نطاق العمل. تقدم الكلمة المفتاحية defer خيارًا بديلًا لتأجيل تنفيذ دالة معينة حتى انتهاء النطاق الحالي مما يضمن سلامة إدارة الموارد.

اختبار إصلاح الأخطاء ذاتيًا بواسطة وكلاء الذكاء الاصطناعي عبر مخرجات JSON

  • يحتوي قسم التشخيص في مخرجات JSON على بيانات دقيقة تشمل الخطورة وموقع الخطأ والقيم المتوقعة وحقل أمان الإصلاح.
  • يسمح الأمر xero fix المدمج مع وضع التخطيط لوكلاء الذكاء الاصطناعي باستخراج سياسات الإصلاح الذاتي للتعليمات البرمجية.

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

تقييم الجدوى الفعلية ومقارنة مخرجات Xero باللغات الراسخة

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

تظهر المقارنة أن النماذج اللغوية الكبيرة الحالية تؤدي وظائفها بكفاءة عالية وتصلح الأخطاء باستخدام الرسائل النصية العادية دون الحاجة الملحة للغة مخصصة بالكامل. تواجه لغة Xero تحدي غياب أمثلة التدريب السابقة للنماذج، مما يضعف من جاذبية الاعتماد عليها في بناء التطبيقات المعقدة. تظل اللغة تجربة توضيحية ناجحة لكيفية تزويد المطور الآلي بالسياق، لكنها لا تدفع للتخلي عن حلول مستقرة مثل Rust أو Zig أو Go.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video