برمجة الأحداث المتزامنة (Asynchronous Programming) تُعد واحدة من الأساليب البرمجية الهامة والتي تمكن المطورين من كتابة الأكواد بحيث يمكن للبرنامج تنفيذ مهام متعددة في نفس الوقت. في هذا النمط، يتم تنفيذ الأكواد البرمجية سطرًا بسطر، أي خطوة تنفذ تلو الأخرى بشكل تتابع. وفي هذا السياق، يُعنى العمل المتزامن أن المهمة الحالية يجب أن تُنهى تنفيذها قبل الانتقال إلى المهمة التالية. هذا يعني أنه يتعين حل كل مهمة بشكل تام قبل بدء تنفيذ المهمة التالية.
مثال باستخدام Synchronous
الكود
void main() { print("First Operation"); print("Second Big Operation"); print("Third Operation"); print("Last Operation"); }
نتيجة الكود:
First Operation Second Big Operation Third Operation Last Operation
في المثال أعلاه، يمكننا أن نرى أنه يتم طباعة النصوص سطراً بسطر. فلنفترض أن المهمة “Second Big Operation” تستغرق 3 ثوانٍ للتحميل، في هذه الحالة، ستضطر المهام “Third Operation” و “Last Operation” إلى الانتظار لمدة 3 ثوانٍ. لحل هذه المشكلة، تم تطوير برمجة الأحداث غير المتزامنة.
مثال باستخدام Asynchronous
في برمجة الأحداث غير المتزامنة (Asynchronous Programming)، يستمر تنفيذ البرنامج للسطر التالي دون الانتظار لاستكمال المهمة السابقة. ببساطة، لا تنتظر. يُمثل الأحداث التي لا تحتاج إلى حلها قبل المتابعة للمهمة التالية.
void main() { print("First Operation"); Future.delayed(Duration(seconds: 3), () => print('Second Big Operation')); print("Third Operation"); print("Last Operation"); }
نتيجة الكود:
First Operation Third Operation Last Operation Second Big Operation
في المثال أعلاه، يمكننا أن نرى أنه يتم طباعة “Second Big Operation” في النهاية. يستغرق التحميل 3 ثوانٍ، ولكن المهمتين “Third Operation” و “Last Operation” لا تحتاجان إلى الانتظار لمدة 3 ثوانٍ. هذه هي المشكلة التي تحلها برمجة الأحداث غير المتزامنة. يمثل Future قيمة غير متوفرة حاليًا، وسوف تتعرف على Future في الدرس التالي.
لماذا نحتاج إلى البرمجة غير المتزامنة؟
تستخدم البرمجة غير المتزامنة في العديد من الحالات، بما في ذلك:
- جلب البيانات من الإنترنت.
- كتابة بيانات في قاعدة البيانات.
- تنفيذ مهمة تستغرق وقتًا طويلاً.
- قراءة البيانات من ملف.
- تنزيل ملف، وماإلى آخره.
المصطلحات الهامة
- العمل المتزامن: يحجب العمل المتزامن تنفيذ العمليات الأخرى حتى يكتمل.
- الدالة المتزامنة: تقوم الدالة المتزامنة بتنفيذ عملية متزامنة فقط.
- العمل غير المتزامن: يسمح العمل غير المتزامن بتنفيذ العمليات الأخرى قبل اكتماله.
- الدالة غير المتزامنة: تقوم الدالة غير المتزامنة بتنفيذ عملية غير متزامنة ويمكنها أيضًا تنفيذ عمليات متزامنة.
باستخدام برمجة الأحداث غير المتزامنة، يمكننا تحسين استجابة البرنامج وتحسين تجربة المستخدم. يمكن استخدام كلاس Future وكلمات async و await لأداء عمليات غير متزامنة في لغة دارت. ستتعرف على كلاس Future والكلمات async و await في الدروس اللاحقة.
هذا كان شرحًا لبرمجة الأحداث غير المتزامنة في لغة دارت. توضح هذه البرمجة كيف يمكننا تنفيذ مهام متعددة دون تعليق تنفيذ الخط الرئيسي للبرنامج. تعزز برمجة الأحداث غير المتزامنة استجابة البرنامج وتتيح لنا القيام بالعديد من العمليات المهمة مثل جلب البيانات من الإنترنت أو كتابة البيانات في قاعدة البيانات بطريقة فعالة.