חזרה
מחקר מבראון: async/await מתנהג אחרת בכל שפה
SiTech AI Team2 წთ. საკითხავი

מחקר מבראון: async/await מתנהג אחרת בכל שפה

מעבדת ההנדסה הקוגניטיבית בבראון מראה ששבע סביבות async מודרניות חלוקות גם בתוכנית קטנה, וממפה את תשעת ממדי התכנון — מהתחלה חמה וקרה ועד ביטול — שמסבירים את הפער בין השפות.

מאמר חדש של מעבדת ההנדסה הקוגניטיבית באוניברסיטת בראון בוחן כיצד מתנהג async/await בשבע סביבות הרצה מודרניות — ומגלה שהן מסכימות ביניהן הרבה פחות ממה שמרמז התחביר המשותף. את הפוסט פרסם גאווין גריי ב-8 בספטמבר 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 — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.