العودة
بحث من جامعة براون: async/await يتصرف بشكل مختلف في كل لغة
SiTech AI Team2 წთ. საკითხავი

بحث من جامعة براون: async/await يتصرف بشكل مختلف في كل لغة

يُظهر مختبر جامعة براون أن سبع بيئات async حديثة تختلف حتى في برنامج صغير فتعطي أربع نتائج، ويرسم الأبعاد التصميمية التسعة — من البداية الساخنة إلى الإلغاء — التي تفسر هذا الاختلاف.

تتناول ورقة جديدة من مختبر الهندسة المعرفية في جامعة براون كيف يتصرف async/await في سبع بيئات تشغيل حديثة، لتجد أن اتفاقها أقل بكثير مما يوحي به التركيب المشترك. ونشر التدوينة غافين غراي في الثامن من سبتمبر 2026.

برنامج صغير، أربع إجابات

منذ أكثر من خمسة عشر عاماً تتجه اللغات نحو "اللاتزامن المستقيم" — كي يبدو الكود المتزامن ككود خطي عادي (Python وRust وSwift). لكن شيفرة وصفية صغيرة تكشف الفرق: تطبع write_to_log حرف "A"، وتنتظر نوم ثانيتين، ثم تطبع "B"؛ وتطلق fire_and_forget الدالة كمهمة خلفية وتعود دون انتظارها؛ وينتظر main دالة fire_and_forget، وينام ثانية، ويطبع "C". وسبع بيئات — Asyncio وC# وJavaScript وTokio وSmol وTrio وSwift — تعطي أربع نتائج مختلفة، وفي ثلاث صور للبرنامج لا تنتج أي بيئتين النتيجة نفسها.

بداية ساخنة وباردة، وتسعة أبعاد

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

لماذا تطبع Swift "AC" وTrio "ABC"

يهيمن بُعدان على المثال. في النطاق الديناميكي لا تستطيع المهمة أن تعيش أطول من الدالة التي أنشأتها، وقد اختار ذلك Swift وPython مع Trio. وهما يختلفان في الإنهاء: Swift تلغي المهمة، أما Trio فتنتظر بأدب انتهاءها. لذلك تطبع Swift "AC" وتطبع Trio "ABC". ويختلف الإلغاء أيضاً في الوعي والاستمرارية (قد تتجاهل المهمة الإلغاء وتواصل عملها، أو تبقى ملغاة) وفي طريقة انتشار الإشارة: من الأعلى إلى الأسفل، أو من الأسفل إلى الأعلى، أو إلى كل التبعيات في وقت واحد.

حساب خلف فضاء التصميم

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

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.