00:00:00تعاني معظم نماذج البرمجة بالذكاء الاصطناعي من مشكلة كبيرة، وهي عجزها التام عن التعامل مع لغة Swift.
00:00:06لقد شاهدنا جميعاً تلك العروض المبهرة لعملاء برمجة يبنون تطبيقات ويب وأدوات JavaScript في ثوانٍ معدودة،
00:00:11ولكن بمجرد أن تطلب منهم المساس بكود Swift، تنهار الأمور بسرعة.
00:00:16والسؤال الآن: لماذا تفشل أذكى النماذج في العالم في تطوير تطبيقات iOS؟
00:00:22هذا ما سنكتشفه في فيديو اليوم.
00:00:25اليوم، سأقوم باختبار أفضل عملاء البرمجة من خلال نفس تحدي برمجة تطبيق Swift لنرى
00:00:30أي النماذج يمكنها حقاً التعامل مع هذه المهمة، وأيها مجرد نماذج متخصصة فقط في تطوير الويب.
00:00:36سأعطيكم تلميحاً بسيطاً: أحد هذه النماذج اجتاز الاختبار ببراعة تامة.
00:00:40أما أي نموذج هو، فستكتشفون ذلك لاحقاً في هذا الفيديو.
00:00:43سيكون الأمر ممتعاً جداً، فلنبدأ مباشرة.
00:00:50حسناً، أولاً وقبل كل شيء، دعونا نتناول القضية الأساسية.
00:00:52لماذا تُعد نماذج البرمجة بالذكاء الاصطناعي سيئة في تطوير Swift؟
00:00:56ولكي أكون واضحاً، هذه ليست ملاحظتي الشخصية فحسب.
00:00:59فقد وجدت دراسة بعنوان “تقييم النماذج اللغوية الكبيرة لتوليد الأكواد - دراسة مقارنة”
00:01:05أُجريت على لغات Python و Java و Swift، أن أداء جميع النماذج المختبرة، بما في ذلك GPT و Claude،
00:01:12كان في لغة Swift أقل باستمرار منه في Python أو Java.
00:01:17ويعود السبب إلى ثلاث عقبات رئيسية تعيق الذكاء الاصطناعي فعلياً عندما يتعلق الأمر بمنظومة Apple.
00:01:24أولاً، هناك فجوة البيانات.
00:01:25فبينما يغرق الويب بأكواد JavaScript و Python مفتوحة المصدر، فإن جزءاً ضخماً من أكواد Swift الاحترافية
00:01:31يظل حبيساً خلف أبواب مغلقة في مستودعات خاصة أو تجارية.
00:01:36ثانياً، لدينا “انزياح الواجهة البرمجية” (API drift).
00:01:38تشتهر Apple بالتحرك السريع وتغيير الأنظمة باستمرار.
00:01:42لقد تغيرت نماذج SwiftUI و Swift للتزامن في السنوات الثلاث الماضية أكثر مما تغيرت بعض معايير الويب في عقد من الزمن.
00:01:49ولأن معظم نماذج الذكاء الاصطناعي لديها تاريخ انقطاع معرفي، فهي غالباً ما تحاول كتابة كود Swift
00:01:54باستخدام قواعد قديمة لا تعمل ببساطة في أحدث إصدار من Xcode.
00:01:59وأخيراً، هناك انحياز في معايير القياس.
00:02:02فمعظم نماذج الذكاء الاصطناعي التي نختبرها اليوم مثل Qwen أو Grok مدربة لاجتياز اختبارات محددة.
00:02:08فهي مصممة لاجتياز اختبارات قياس ضخمة مثل HumanEval، والتي تركز بشكل شبه كامل
00:02:13على لغة Python ومنطق الويب.
00:02:16وبما أنه لا توجد العديد من اختبارات القياس الكبرى لواجهات iOS المعقدة، فإن هذه النماذج ببساطة لم يتم
00:02:21تقييم قدرتها على بناء تطبيق وظيفي متكامل.
00:02:25لذا اخترت بعضاً من أشهر نماذج البرمجة بالذكاء الاصطناعي المتاحة، وأعطيت كل واحد منها
00:02:30نفس التعليمات بالضبط.
00:02:32كلفت كلاً منها ببناء نسخة بسيطة من تطبيق يشبه Tinder باستخدام Swift يسمى “Dogtinder”، حيث
00:02:38تُعرض عليك صور كلاب مختلفة باستخدام واجهة برمجة تطبيقات Dog CEO.
00:02:43ويمكنك التمرير لليسار أو اليمين لاختيار الكلاب التي تعجبك، وإذا حدث إعجاب متبادل،
00:02:47يمكنك فتح واجهة دردشة لتبادل الرسائل المضحكة مع الكلب المختار.
00:02:52المفترض أن يكون التطبيق لطيفاً وبسيطاً بما يكفي لينجزه عميل ذكاء اصطناعي، كما أنه يتضمن
00:02:58بعض التحديات المثيرة للاهتمام مثل بناء خاصية الرسوم المتحركة للتمرير بلغة Swift الأصلية.
00:03:03أما بالنسبة للاختبارات نفسها، فسنبدأ من النموذج صاحب الأداء الأسوأ وصولاً إلى الأفضل.
00:03:09وفي المركز الأخير للأسف، لدينا نموذج Qwen 3 Coder Next الجديد.
00:03:15لطالما روجت Qwen لهذا النموذج الجديد كبديل مفتوح المصدر للعمالقة
00:03:20مثل Kimi أو Claude بحجم نموذج أصغر ولكن بأداء أعلى.
00:03:25وعلى الرغم من أن هذا قد يكون صحيحاً في تطبيقات الويب، إلا أنه لم يصمد أمام تحدي Swift للأسف.
00:03:32لقد حاولت قدر الإمكان استخدام أدوات واجهة الأوامر (CLI) الخاصة بهم والمتاحة لهذا النموذج،
00:03:37وفي هذه الحالة، استخدمت أداة Qwen CLI لإجراء هذا التحدي.
00:03:42وبمجرد انتهائه من توليد الكود، لم أتمكن حتى من فتح ملف المشروع الذي
00:03:46أنتجه Qwen.
00:03:48لذا وجهت له أمراً بإصلاح الخطأ الذي ظهر عند محاولة فتح الملف.
00:03:53ولكن حتى بعد ذلك، لم يتمكن Qwen من إصلاح الخطأ، وبدلاً من ذلك قدم لي ملف تعليمات طويلاً
00:03:58حول كيفية بناء هذا المشروع بنفسي من الصفر ثم نسخ الملفات إلى
00:04:03مجلد المشروع، وهو أمر لا أريد القيام به يدوياً في هذا التحدي لأن
00:04:08ذلك سيفقد الاختبار معناه.
00:04:09وكما سترون لاحقاً، لاحظت أن بعض النماذج وجدت صعوبة بالغة في إنتاج
00:04:14المجموعة النهائية من ملفات هذا المشروع، والتي يمكن فتحها بنجاح من
00:04:19المحاولة الأولى.
00:04:20لذا في حالات مثل Qwen هنا، قررت إعطاءه تحدياً أسهل بدلاً من ذلك.
00:04:26قمت بإنشاء مشروع تطبيق iOS جديد على Xcode يدوياً، وقررت أن هذا قد يكون
00:04:31وقتاً جيداً لتجربة خاصية الذكاء البرمجي الجديدة المدمجة في
00:04:37أحدث إصدار من Xcode.
00:04:38وهذا أمر رائع لأن Xcode أصبح لديه أخيراً ميزة المساعد بالذكاء الاصطناعي الخاصة به.
00:04:43لذا ربطته بحسابي في OpenRouter واخترت نموذج Qwen 3 coder next من
00:04:49القائمة المنسدلة وحاولت خوض التحدي مرة أخرى.
00:04:52وحتى مع كل هذه المساعدة، لم يتمكن Qwen من إنتاج مشروع ناجح من
00:04:57المحاولة الأولى، حيث واجهنا بعض المشكلات في إعداد نماذج Swift بدقة.
00:05:02والآن مع ميزة المساعد الجديدة بالذكاء الاصطناعي، يمكننا تحديد كل هذه المشكلات ثم
00:05:07تكليف المساعد بإنشاء إصلاح لجميع المشكلات المختارة دفعة واحدة.
00:05:12أخيراً، وبعد بضع جولات من توجيه Qwen لإصلاح المشكلات المتبقية، حصلنا
00:05:16أخيراً على نسخة عاملة من تطبيق Dogtinder، ولكن بصراحة كانت النتيجة سيئة للغاية.
00:05:23لم يتمكن حتى من تحميل الصور من واجهة Dog CEO، كما كانت واجهة المستخدم
00:05:29بدائية جداً وغير جذابة على الإطلاق.
00:05:32ناهيك عن وجود خلل في قسم “الإعجابات المتبادلة” حيث لم تكن تظهر أي
00:05:36من هذه النتائج.
00:05:37لذا للأسف، فشل Qwen تماماً في تحدي تطبيق Xcode.
00:05:42وبالانتقال إلى المركز قبل الأخير، لدينا نموذج Grok مع إصدار Grok code fast.
00:05:48بالنسبة لهذا النموذج، حاولت استخدامه عبر إضافة VS Copilot على برنامج VS Code، ومرة أخرى،
00:05:53واجهت نفس المشكلة حيث لم يتمكن Grok من إنتاج جميع ملفات المشروع اللازمة
00:05:59لحزمة مشروع Swift الكاملة.
00:06:02وبدلاً من ذلك، قدم لي تعليمات حول كيفية نسخ الملفات يدوياً.
00:06:06لذا اضطررت مرة أخرى للعودة لاستخدام المساعد بالذكاء الاصطناعي في Xcode عبر استدعاء نموذج Grok
00:06:12من OpenRouter.
00:06:14وواجه Grok أيضاً بعض المشكلات، لذا اضطررت لتوجيهه مرتين لإصلاح الأخطاء
00:06:19المتبقية.
00:06:20ولكن بعد كل ذلك، تمكن من إكمال التطبيق بنجاح.
00:06:23ومن النظرة الأولى، قام Grok بعمل مريع فيما يخص التصميم.
00:06:27فالتصميم لم يكن جذاباً على الإطلاق، ولم تكن هناك حتى أقسام يمكننا من خلالها رؤية
00:06:32الإعجابات المتبادلة.
00:06:33السبب الوحيد الذي جعلني أضع Grok في مرتبة أعلى من Qwen هو أنه على الأقل من منظور
00:06:38الوظائف، كل شيء يعمل بما في ذلك خاصية الدردشة، ولكن لنكن صادقين، كلاهما
00:06:44كانا متقاربين جداً في ضعف الأداء.
00:06:48ولا يوجد شيء في هذا التطبيق يبدو مثيراً أو مريحاً للعين.
00:06:51لذا لن أقول إن Grok فشل في التحدي، ولكنه يحصل على أدنى درجة نجاح
00:06:57ممكنة.
00:06:58التالي في قائمة المتصدرين هو Kimi مع أحدث طراز Kimi K2.5.
00:07:04وقد واجه Kimi نفس مشكلة Qwen، فعند استخدام واجهة الأوامر الخاصة بهم، أنتج
00:07:08ملف المشروع، لكنني لم أتمكن من فتحه.
00:07:11وحتى بعد محاولة إصلاحه عبر واجهة الأوامر، لم تُحل المشكلة.
00:07:15لذا مرة أخرى في اختبار Kimi، اضطررت لاستخدام ميزة المساعد المدمجة في Xcode
00:07:20مع نموذج Kimi K2 المقدم من OpenRouter.
00:07:23وكان أداء Kimi مشابهاً لأداء Qwen و Grok لأنه لم يكمل
00:07:29التحدي من المحاولة الأولى.
00:07:31لذا اضطررت لتوجيهه مجدداً لإصلاح المشكلات المتبقية.
00:07:34ولكن بعد جولة واحدة فقط من إصلاح الأخطاء، تمكن Kimi من تقديم النتيجة النهائية.
00:07:39وكانت هذه النسخة في الواقع خطوة للأمام مقارنة بـ Qwen و Grok لأننا حصلنا على الأقل
00:07:44على تطبيق يشبه فعلاً تطبيق Tinder.
00:07:47وأصبح لدينا الآن هذه الرسوم المتحركة اللطيفة للتمرير لليمين واليسار مع ملصقات “أعجبني” و”لا”
00:07:53على الجوانب، ونافذة منبثقة أنيقة عند حدوث إعجاب متبادل.
00:07:57ولكن الرسوم المتحركة كانت مليئة بالأخطاء وصعبة التعامل.
00:08:00في بعض الأحيان لم أتمكن حتى من رؤية الصورة لأنها كانت تطفو في مكان ما خارج الشاشة.
00:08:05ولكن على الأقل تمكن Kimi من تخزين الإعجابات المتبادلة بشكل صحيح.
00:08:08وحصلنا بالفعل على قسم يمكننا من خلاله رؤية إعجاباتنا وفتح أي منها والبدء
00:08:12في الدردشة مع كلب معين.
00:08:14لذا فهذا يعد بالفعل تقدماً كبيراً عن Qwen و Grok.
00:08:18ولكن إذا كان عليّ مقارنته بالأمثلة الأخرى التي ستشاهدونها لاحقاً في هذا الفيديو، فسأقول
00:08:22إنها لا تزال نتيجة دون المستوى.
00:08:25وهذا هو السبب في أنني وضعت Kimi في مرتبة متأخرة في القائمة.
00:08:29ويليه نموذج Gemini 3 Pro.
00:08:31وهذا النموذج مثير للاهتمام لأنني حصلت على نتائج مختلفة تماماً عند اختبار نفس النموذج
00:08:36عبر واجهة الأوامر الخاصة به مقابل مساعد الذكاء الاصطناعي في Xcode.
00:08:41لنرى أولاً ما حصلنا عليه عند استخدام Gemini CLI.
00:08:45تشير واجهة الأوامر إلى أن النموذج لا يزال في وضع المعاينة.
00:08:49فربما كانت هذه هي المشكلة الأساسية.
00:08:50ولكن مرة أخرى، عندما أعطيته نفس التوجيه الذي استخدمته مع كل النماذج في هذا
00:08:55التحدي، لم يتمكن من إعطائي ملف المشروع في النهاية.
00:08:59والسبب هو أنه لإنشاء ملف مشروع Xcode، تحتاج أولاً لإنشاء ملف YAML
00:09:04بتفاصيل المشروع ثم استخدام أمر CodeGen لتوليده.
00:09:09لكن لسبب ما، ترفض بعض النماذج القيام بذلك أو لا تعرف كيف.
00:09:14ومع ذلك، بمجرد أن وجهت Gemini لإنشاء الملف تحديداً، قام بذلك.
00:09:18واحتجت فقط لمنحه الإذن لتنفيذ أمر CodeGen.
00:09:22وبمجرد فتحنا للمشروع، واجهنا خطأ في الملفات المساعدة (assets).
00:09:25لكن Gemini أصلح ذلك بسرعة.
00:09:28وبعد حل تلك المشكلة، بدأ التطبيق في العمل أخيراً.
00:09:31لكن النتيجة كانت سيئة، وبشكل مفاجئ.
00:09:35لقد كان معطلاً.
00:09:37نظام الإعجابات المتبادلة لم يكن يعمل بشكل صحيح وكل شيء كان مليئاً بالأخطاء.
00:09:41في هذه اللحظة، كنت على وشك إعطاء Gemini درجة رسوب.
00:09:45لكن بدافع الفضول فقط، قررت منح Gemini فرصة أخرى وإجراء التحدي
00:09:50باستخدام مساعد Xcode الأصلي عبر تشغيل Gemini 3 Pro من خلال OpenRouter.
00:09:56وعندما فعلت ذلك، نجح في الأمر من المحاولة الأولى هذه المرة.
00:10:01وليس هذا فحسب، بل كان التطبيق رائعاً بشكل مذهل.
00:10:04أقصد أن التصميم كان ممتازاً.
00:10:06والوظائف كانت في مكانها الصحيح.
00:10:08حتى أنه أضاف شعاراً جميلاً في الأعلى.
00:10:10بصراحة، لم يكن هناك أي عيب في هذه النسخة من التطبيق.
00:10:14لذا أنا مندهش قليلاً كيف أن تشغيل نفس التعليمات عبر نفس النموذج، ولكن
00:10:20من خلال أدوات برمجة مختلفة، قد أنتج نتيجتين مختلفتين تماماً.
00:10:24ومع ذلك، فقد أعجبت جداً بالنسخة التي قدمها لي Gemini أخيراً عبر
00:10:29أدوات Xcode ومن المحاولة الأولى، كما يجب أن أشير.
00:10:32ولهذا السبب وضعت Gemini في مرتبة أعلى قليلاً، لأن النتيجة النهائية كانت
00:10:37رائعة بالفعل.
00:10:38حسناً، التالي في القائمة هو GPT 5.3 codecs.
00:10:43وبما أن OpenAI لديها تطبيق codecs الخاص بها، قررت إجراء التحدي من
00:10:48تطبيقهم الخاص.
00:10:49وعلى عكس النماذج السابقة التي رأيناها حتى الآن، تمكن GPT 5.3 من إنتاج
00:10:55المنتج النهائي العامل من المحاولة الأولى.
00:10:58وهذا بحد ذاته يمثل تقدماً كبيراً.
00:11:00لكن يجب أن أقول، التطبيق نفسه لم يكن مثيراً جداً.
00:11:03كان له طابع لوني أزرق رتيب للغاية.
00:11:06والمشكلة الأكبر التي أزعجتني هي عدم قدرته على ملاءمة عرض الصورة مع
00:11:11إطار التطبيق.
00:11:13فبالنسبة لبعض الكلاب، انتهى الأمر بحاوية ممدودة جداً تخرج عن
00:11:18حدود التطبيق.
00:11:20لذا فهذا عيب تصميمي كبير لم يتمكن codecs من معالجته بشكل صحيح.
00:11:25لكن التطبيق نفسه وظيفي ويحتوي على كل عناصر واجهة المستخدم الضرورية.
00:11:29كما أن قسم الإعجابات المتبادلة يعمل بشكل صحيح حيث تمكنا من الدردشة مع الكلاب.
00:11:34السبب في منحي GPT 5.3 هذه المرتبة العالية هو أنه
00:11:40أول نموذج يتمكن فعلياً من إنتاج حزمة مشروع Swift بالكامل دون أي
00:11:46مساعدة خارجية أو إعداد مسبق لمشروع Xcode.
00:11:50بشكل عام، النتيجة ليست سيئة، لكنها ليست مبهرة أيضاً.
00:11:54وأخيراً، نصل إلى المركز الأول في قائمة المتصدرين.
00:11:57سأترك لكم لحظة لتخمين أي نموذج قد يكون هذا.
00:12:01نعم، أعتقد أننا جميعاً نعرف أي نموذج هو.
00:12:04إنه بالطبع Opus 4.6، الذي اجتاز هذا التحدي ببراعة ومنذ البداية.
00:12:11لقد وجهت له نفس التعليمات كبقية النماذج، لكنني استخدمت أداة Claude code CLI
00:12:17الخاصة بهم واحتاج الأمر فقط لمنحه الأذونات اللازمة.
00:12:20وقام النموذج بكل شيء بمفرده، بما في ذلك إنشاء ملف مشروع Xcode وظيفي بالكامل
00:12:27دون الحاجة لأن أقوم بإعداده مسبقاً.
00:12:29وليس هذا فحسب، بل كان التطبيق نفسه جميلاً للغاية.
00:12:34كان التصميم متقناً.
00:12:35والرسوم المتحركة كانت سلسة وانسيابية.
00:12:37وقسم الإعجابات المتبادلة يعمل بشكل صحيح، وكذلك نافذة الدردشة.
00:12:41الشيء الوحيد الذي لم نحصل عليه في هذه النسخة هو شعار أكثر أناقة مثل الذي أنتجه
00:12:46Gemini في النسخ السابقة.
00:12:48ولكن عدا ذلك، كانت هذه أجمل نسخة بين الجميع.
00:12:52حتى أنه تمكن من إنتاج ذلك من المحاولة الأولى.
00:12:55لذا أقول إن أداء Opus مذهل حقاً مقارنة بجميع النماذج الأخرى.
00:13:01فهو يستحق بالتأكيد المركز الأول.
00:13:05ولكن انتظروا، هناك المزيد.
00:13:07إليكم مفاجأة إضافية.
00:13:09لا يزال هناك نموذج آخر نحتاج لمراجعته لم يظهر في القائمة
00:13:13بعد.
00:13:14بينما كنت أصنع هذا الفيديو، صدر إعلان مفاده أن GLM قد أطلقت
00:13:18أحدث إصداراتها وهو الإصدار الخامس، وقد ادعوا بجرأة أن هذا النموذج يتفوق
00:13:23حتى على Opus 4.6 في البرمجة.
00:13:26لذا كان عليّ طبعاً اختباره في نفس تحدي Swift.
00:13:31وبما أن GLM لا يمتلك أداة CLI خاصة به، استخدمت مرة أخرى مساعد Xcode
00:13:37عبر ربطه بـ OpenRouter واستخدام GLM 5 من هناك.
00:13:41أولاً، لم يكمل GLM هذا التحدي من المحاولة الأولى.
00:13:45وهذا يظهر بالفعل أداءً أسوأ من Opus 4.6.
00:13:49ثانياً، اضطررت لخوض ثلاث جولات من إصلاح الأخطاء لجعله يعمل بنجاح في النهاية.
00:13:56دعونا نرى النتيجة النهائية لنموذج GLM 5.
00:13:59كما ترون، يبدو الأمر بالنسبة لي نتيجة راسبة بالفعل.
00:14:03يبدو أنه لا يستطيع تحميل أي من صور الكلاب.
00:14:06كما أنه يفتقر لخاصية التمرير.
00:14:08والأسوأ من ذلك، أنه يمر على ثلاثة كلاب فقط ثم يظهر رسالة تفيد
00:14:13بأنه لا توجد كلاب أخرى متاحة.
00:14:15وعلاوة على ذلك، إذا ذهبنا لقسم الإعجابات المتبادلة، لا يمكن النقر على أي منها لفتح
00:14:20واجهة الدردشة مع أي من الكلاب.
00:14:23لذا فمن الواضح أن هذا القسم غير مكتمل.
00:14:25بناءً على هذه النتيجة، أين نضع GLM؟
00:14:29أخشى أننا مضطرون لوضعه في المركز قبل الأخير فوق Qwen مباشرة لأن
00:14:36هذا الأداء لم يكن مقبولاً على الإطلاق وليس بجودة النماذج الأخرى.
00:14:42لذا فإن القول بأن GLM 5 أقوى من Opus 4.6 هو ادعاء جريء للغاية.
00:14:47لم أختبر هذا النموذج في مهام برمجة أخرى، وقد يكون الأمر
00:14:52أنه يعمل بشكل جيد في مشاريع الويب البسيطة أو ربما أفضل حتى من
00:14:57Opus 4.6.
00:14:59لكنه بالتأكيد ليس نموذجاً جيداً للبرمجة بلغة Swift.
00:15:02ماذا تعلمنا اليوم؟
00:15:04من الواضح أنه بينما تتحرك ثورة الذكاء الاصطناعي بسرعة الضوء، فإن مشكلة Swift لهذه النماذج
00:15:10لا تزال حقيقية جداً. لقد أثبت Opus 4.6 و GPT 5.3 أنه إذا كان النموذج ضخماً وقدراته التحليلية
00:15:18قوية بما يكفي، فيمكنهما التغلب على نقص بيانات كود Swift مفتوح المصدر.
00:15:23ولكن بالنسبة لنماذج مثل Qwen و Grok، فإن فجوة البيانات وانزياح الواجهة البرمجية اللذين تحدثنا عنهما
00:15:29يؤثران عليهما بشدة.
00:15:31كما فوجئت بمدى الفائدة الحقيقية لمساعد Xcode الجديد في تطبيقات Swift.
00:15:36لقد رأينا ذلك بوضوح في الاختلاف بين نسختي تطبيق Gemini.
00:15:40لذا إذا كنت مطور iOS، فمن المفيد على الأرجح استخدام أدوات الذكاء الاصطناعي الداخلية الخاصة بهم
00:15:46للحصول على نتائج أفضل.
00:15:47ها قد وصلنا للنهاية، أتمنى أن تكونوا قد استمتعتم بهذا التحليل.
00:15:51أعتقد أن هذا يفتح نقاشاً أوسع حول حقيقة أننا ربما يجب أن نبدأ في امتلاك
00:15:55نماذج متخصصة للغات برمجة محددة.
00:15:57لأن من الواضح أن الكثير من هذه النماذج منحازة بشكل أكبر لتطبيقات الويب ومشاريع
00:16:03JavaScript أو Python.
00:16:04لكن لبعض الحلول البرمجية المتخصصة، قد نحتاج لنماذج برمجة مخصصة.
00:16:09ولكن ما هو رأيكم في كل هذا؟
00:16:11أخبرونا في قسم التعليقات بالأسفل.
00:16:13وإذا أعجبكم هذا الفيديو، يرجى التعبير عن ذلك عبر الضغط على زر الإعجاب
00:16:18أسفل الفيديو.
00:16:19ولا تنسوا أيضاً الاشتراك في قناتنا.
00:16:22كان معكم أندريس من Better Stack، وأراكم في الفيديوهات القادمة.