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