مقدمة

Mohammad Laifمنذ 4 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

 

عن هذه الدورة

عبارة عن عشرة دروس تصب في التزامن Concurrency باستخدام الروتينات المساعدة Coroutines في لغة الكوتلن. في هذه الدورة ستتعرف على مفهوم الروتينات التعاونية Coroutines. فالبداية ستكون دروس تعريفية عنها تنقسم إلى نظرة عامة تاريخية بعنوان نظرة عامة على الـ Coroutines, متى ظهرت والأنواع التي اشتقت منها ومعنى تسميتها وما الى ذلك. ودرس آخر يختص عن الروتينات في لغة الكوتلن بعنوان نظرة خاصة على الـ Coroutines في لغة الكوتلن. ثم يليهما درس لإنشائهم بعنوان إنشاء الكروتين Coroutine.

بعد ذلك في قسم “مكونات الروتينات التعاونية” سنتعرف من ماذا يتكون منه الروتين Coroutine. أو بالاحرى الاشياء الضرورية التي يجب إنشائها لنصنع روتين تعاوني في لغة الكوتلن. وهي ثلاثة أشياء النطاقات Scopes والتي سوف يعيش بداخلها الروتين بعنوان النطاقات الـ Scopes. و البنائين Builders بعنوان البنائين الـ Builders الذين سيقومون ببناء الروتين. واخيراً الموزعين أو المرسلين Dispatchers بعنوان الموزعين الـ Dispatchers والتي تكمن وظيفتهم في وضع الروتين على خيط حاسوبي ما او نقله الى آخر.

وفي قسم يليه بإسم “الدوال التأجيلية” Suspended Functions سنتعرف على مفهوم التأجيل وعلى الدوال التأجيلية في لغة الكوتلن بعنوان الدوال التأجيلية Suspended Functions. التي تختصر لنا صناعة الروتين التعاوني بوضع كلمة suspend امام اي دالة, لتصبح روتين تعاوني.

وفي القسم الاخير بإسم “التيارات Streams” سنتعرف على القنوات Channels وظيفتهم التي تكمن في آلية التخاطب والمراسلة بين الروتينات. وكذلك على مفهوم القنوات وأنواعهم وطريقة عمل كل قناة بعنوان القنوات Channels.

ودرس آخر قسم بإسم التدفق Flow خاص بالتدفقات وهي مشابهه للقنوات بعنوان التدفق Flow. والذي يعتبر البديل للـ RxJava وما الى ذلك.

 

أقسام الدورة

ستركز هذه الدورة على الاشياء الأساسية الموجودة في API الروتينات للغة الكوتلن وهي: Scope و Builders و Dispatchers وكذلك Suspend Functions و Channels و Flow.

 

الفوائد من هذه الدورة

ستتعرف على مفهوم آخر مختلف عن الخيوط الحاسوبية Threads لتطبيق مبدأ التزامن. ستفيدك الدورة في تقريب فهم اللغات الاخرى التي تركز على التزامن وتعدد الانوية, مثل لغة Go وغيرها (اود الاشارة الى أن الـ Goroutines في لغة Golang يختلف في مفاهيمه عن Coroutines الخاص بلغة Kotlin). ولكن الافادة الكبرى لك هي معرفة التزامن في لغة الكوتلن والذي بدوره يخدم مطوري تطبيقات الاندرويد بشكل كبير في صنع برامج عالية الجودة. بل أصبح مبدأ الروتينات التعاونية شئ ضروري لمبرمج الاندرويد.

 

فهرس الدروس

نظرة عامة على الـ Coroutines:

  • ماهو الروتين Routine.
  • ماهو الروتين التعاوني Coroutine.
  • كيفية عمل الروتين Coroutine وما هي آلية التعاون.
  • فهم معنى المصطلح العربي للكروتين Coroutine.

 

نظرة خاصة على الـ Coroutines في لغة الكوتلن:

  • الروتين التعاوني في لغة الكوتلن.
  • أبرز مواصفات الكروتين Coroutine.
  • تحقيق مبدأ الكروتين Coroutine في لغة الكوتلن.
  • أين توجد الكروتينات.
  • مايميز الكروتين Coroutine عن الخيط الحاسوبي Thread.
  • مايميز الكروتين Coroutine عن الدوال Function.
  • شكل يبين الدوال والكروتينات على الخيط الحاسوبي.

 

إنشاء الكروتين Coroutine:

  • إنشاء الـ Coroutine.
  • هيكلية صناعة الكروتين Coroutine.
  • مبدأ التأجيل في الكروتينات.
  • أستخدام الـ Job.
  • الكروتينات خفيفة جداً.
  • هيكلية الكروتينات.

 

النطاقات الـ Scopes:

  • ماهو عنصر الـ Job.
  • نقاط يجب عليك معرفتها عند التعامل مع الـ Job.
    •  إنشاء عنصر Job.
    • إنشاء عنصر Deferred.
  • ماهي الـ Coroutine Context.
    • إنشاء Coroutine Context.
  • النطاقات الـ Scopes.
    • فوائد النطاق Scope.
    • انواع النطاقات.
    • إنشاء النطاقات.
      • إنشاء نطاق Scope بإستخدام الواجهة CoroutineScope.
      •  من خلال عمل implementaiton لها.
      • إستخدام نطاق الدالتين التأجيليتين كلاً من الـ coroutineScope و الـ supervisorScope.
  • هيكلة النطاقات.

 

البنائين الـ Builders:

  • ما هو البناء Builder.
  • أنواع البنائين.
    • النوع الأول الـ runBlocking.
    • النوع الثاني الـ launch.
    • النوع الثالث الـ async.
      • مثال برمجي لإرجاع عنصر من نوع Deferred يحمل نتيجة.
      • مثال برمجي لتشغيل شفرتان في شكل متنافس Concurrent.
    • النوع الرابع withContext.
  • متى تستخدم هذه الأنواع.

 

الموزعين الـ Dispatchers:

  • المرسلين الـ Dispatchers.
  • أنواع الـ Dispatchers.
    •  النوع الأول الـ Default.
    • النوع الثاني الـ IO.
    • النوع الثالث الـ Unconfined.
    • النوع الرابع الـ Main.
  • متى أستخدم هذه الأنواع.
  • الدوال التأجيلية Suspending Functions والـ Dispatchers.

 

الدوال التأجيلية Suspended Functions:

  • مواصفات الدوال التأجيلية.
  • نظرة على الدروس السابقة تساعد على فهم الدوال التأجيلة.
  • ما هي الدوال التأجيلية في لغة الكوتلن.
  • إنشاء دالة تأجيلية.
    • تشغيل الدالة.
    • تشغيل محتوى الدالة في خيط حاسوبي محدد أو نقلها من خيط الى آخر.
  • التزامن في الدوال التأجيلية.
  • التشغيل في وضع تسلسلي Sequential متزامن في التوقيت Synchronous.
  • التشغيل في وضع تنافسي Concurrent غير متزامن في التوقيت Asynchronous.
  • نمط كتابة الدوال التنافسية.
  • الهيكلة في الدوال التأجيلية.
    • إستخدام نطاق الـ coroutineScope.
    • إستخدام نطاق الـ supervisorScope.

 

القنوات Channels:

  • مقدمة في التيارات Streams.
  • التيار الحار والتيار البارد.
  • ماهي القنوات.
  • لماذا القنوات.
  • آلية مشاركة القنوات للعناصر.
  • آلية عمل القنوات.
  • كيف نتعامل مع القنوات.
  • مثال برمجي لإرسال العناصر من خلال قناة من كروتين الى آخر.
  • أنواع القنوات.
    • النوع الأول الـ Unbuffered) Rendezvous).
    • النوع الثاني الـ Conflated.
    • النوع الثالث الـ Buffered.
    • النوع الرابع الـ Unlimited.
  • أنماط القنوات.
    • النمط الأول: المنتجين Producers.
    • النمط الثاني: خطوط الأنابيب Pipelines.
    • النمط الثالث: Fan-out.
    • النمط الرابع: Fan-in.
    • النمط الخامس: Ticker.

 

التدفق Flow:

  • مقدمة.
  • ماهو التدفق Flow.
  • كيف نتعامل مع التدفق؟
  • أمثلة برمجية.

 

المصادر

  • كتاب Learning Concurrency in Kotlin (الكتاب ممتاز, مختصر ولكن معلومات غير محدثه).
  • كتاب Elements of Kotlin Coroutines.
  • كتاب KOTLIN FOR ANDROID DEVELOPERS (فصل واحد).
  • كتاب Android Concurrency (الكتاب للتزامن بلغة الجافا, مرجع رائع لمن يريد فهم الامور المخفية).
  • بالنسبة لباقي المصادر فهي متعددة, ستجد في كل درس مراجع رسمية مقالات أو كتب. وانتبه الى أن الـ Kotlin Coroutines تتحدث بإستمرار وبسرعة, لذلك قد تواجه لبس او عدم شمولية بسبب عدم تحديث بعض من المصادر لنفسها.

المحاضر

Mohammad Laif

محتوى الدورة

الكلمات الدليلية

عن الدرس

0 إعجاب
2 متابع
0 مشاركة
1878 مشاهدات
منذ 4 سنوات

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !