مقدمة سريعة في البرمجة التفاعلية التفاعلية (FRP)

يمثل FRP تقاطع نموذجين البرمجة. ولكن ، قبل أن نعمق في المفاهيم ، نحتاج إلى معرفة المزيد عن بعض المصطلحات الأساسية.

فرب: الرد على الأحداث

البرمجة الحتمية

تقليديًا ، نكتب رمزًا يصف كيف يجب أن يحل المشكلة. يتم تنفيذ كل سطر من التعليمات البرمجية بالتسلسل لإنتاج النتيجة المرجوة ، والتي تعرف باسم البرمجة الضرورية. يجبر النموذج الضروري المبرمجين على كتابة "كيف" سوف يحل البرنامج مهمة معينة. لاحظ أنه في البيان السابق ، الكلمة الأساسية هي "كيف".

إليك مثال على ذلك:

دع الأرقام = [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9]
var numbersLessThanFive = [Int] ()
لفهرس في 0 .. 

كما ترون ، ننفذ سلسلة من التعليمات بالتسلسل لإنتاج الإخراج المطلوب.

البرمجة الوظيفية

البرمجة الوظيفية هي نموذج برمجة حيث تصمم كل شيء كنتيجة لوظيفة تتجنب تغيير الحالة وتحوير البيانات. سنناقش مفاهيم مثل الحالة وتغيير البيانات وأهميتها في الأقسام التالية ، ولكن للرجوع إليها:

  • ضع في اعتبارك الحالة واحدة من التباينات والمجموعات المختلفة التي يمكن أن يشتمل عليها البرنامج في أي وقت أثناء تنفيذه
  • تعد قابلية تحويل البيانات هي المفهوم الذي قد تتغير به مجموعة بيانات معينة خلال فترة زمنية محددة أثناء تنفيذ البرنامج.

يمكن استخدام نفس المثال الذي تم تقديمه باستخدام البرمجة الضرورية بالطريقة التالية باستخدام الطريقة الوظيفية:

دع الأرقام = [1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9]
اسمح للأرقام LessThanFive = numbers.filter {$ 0 <5}

نقوم بتغذية وظيفة المرشح بإغلاق يحتوي على معيار معين. ثم يتم تطبيق هذا المعيار على كل عنصر في صفيف الأرقام ، ويحتوي الصفيف الناتج على عناصر تلبي معاييرنا.

لاحظ إعلان الصفيفتين في كلا المثالين.

في المثال الأول ، تم التصريح عن الصفيف numberLessThanFive كـ var ، بينما في المثال الثاني ، تم إعلان الصفيف نفسه على أنه let.

هل يرن بعض الأجراس؟

أي منهج أفضل ، أي مجموعة أكثر أمانًا للتعامل معها؟

ماذا لو حاول أكثر من مؤشر ترابط العمل مع نفس الصفيف وعناصره؟

أليست مجموعة ثابتة أكثر موثوقية؟

البرمجة التفاعلية

البرمجة التفاعلية هي ممارسة البرمجة باستخدام تدفقات البيانات غير المتزامنة أو تدفقات الأحداث. يمكن أن يكون تدفق الأحداث بمثابة أي شيء مثل مدخلات لوحة المفاتيح ، وصنابير الأزرار ، والإيماءات ، وتحديثات موقع GPS ، والتسارع ، و iBeacon. يمكنك الاستماع إلى الدفق والرد عليه وفقًا لذلك.

ربما تكون قد سمعت عن البرمجة التفاعلية ، ولكن قد يبدو الأمر مخيفًا للغاية أو مخيفًا أو خفيًا حتى لا يمكنك تجربته. ربما تكون قد رأيت شيئًا كهذا:

var twoDimensionalArray = [[1 ، 2] ، [3 ، 4] ، [5 ، 6]]
دع flatArray = twoDimensionalArray.flatMap {صفيف في
    إرجاع array.map {عدد صحيح في
        عودة عدد صحيح * 2
    }
}

طباعة (flatArray)

الإخراج: [2 ، 4 ، 6 ، 8 ، 10 ، 12]

للوهلة الأولى ، قد تكون الشفرة السابقة غامضة بعض الشيء ، وقد يكون هذا هو السبب في أنك أدرت ظهرك لهذا النمط من البرمجة. البرمجة التفاعلية ، كما ذكرنا سابقًا ، هي البرمجة مع تدفقات الأحداث.

ومع ذلك ، فإن السؤال الأكبر لا يزال دون إجابة. ما هي البرمجة التفاعلية الوظيفية (FRP)؟

FRP هو مزيج من النماذج الوظيفية والتفاعلية. وبعبارة أخرى ، فإنه يتفاعل مع تدفقات البيانات باستخدام النموذج الوظيفي. FRP ليست أداة مساعدة أو مكتبة - إنها تغير الطريقة التي تصمم بها تطبيقاتك والطريقة التي تفكر بها في تطبيقاتك.

في المدونة التالية ، سأتحدث عن اللبنات الأساسية للبرمجة التفاعلية - حتى ذلك الحين ، تابعونا واستمتعوا بقراءة :)

للحصول على فهم قوي للمفاهيم التفاعلية وكتابة تطبيقات iOS في RxSwift ، يمكنك قراءة كتابي: البرمجة التفاعلية في Swift 4.

توجد المزيد من مشاريعي والرمز القابل للتنزيل في repos github العامة الخاصة بي

يمكنك قراءة المزيد عن الموضوع هنا

شكرا للقراءة ، يرجى مشاركتها إذا وجدت أنها مفيدة :)