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وكالعادة، أراكم في الفيديو القادم.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video