Functional Programming

أهلا ومرحبا بالجميع

تعرفنا في مقالة سابقة عن المفاهيم البسيطة للدوال  واليوم نتعرف أكثر على المفاهيم الأخرى المتعلقة بالدوال في اللغة.

Functional Programming

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

وكذلك سهولة العمل على التوازى عند الحاجة، حيث يكون هناك تسهيل للبرمجة المتزامنة عند استخدام هذا النمط وذلك لان الدوال تكون Pure ولا تعدل فى ال State وانما تعمل على المعطيات فقط او المتغيرات المحلية على مستوى الدالة.


ما معني first-class؟

  • تطلق على الأجزاء المختلفة من البرنامج من متغير “ variable ” وقائمة “List“ودالة “Function“و “Class” وكائن “object” وقد يحتوي البرنامج على جزء “First-Class” واخر لا.
  • تشمل العمليات المختلفة من مرور “pass” وارجاع “Return” ال “parameters”،وتعيين “assign ” قيمة لل “parameters” ك “arguments” واستدعاء الدالة.

 

Functional Programming (FP) concepts

1-First-class Functions

نتعامل في ال “First-class”مع ال “Functions” ك “Object”.

وبالتالي نستطيع عمل الاتي:

  • مرورpassالدالة ك “parameters” وتعيينassign” قيمة للدالة.
  • عمل”returnلدالة واستدعاء”Call للدالة ال “parameter”.

كيف يمكن عمل pass|Return  لدالة؟

  • الدالة التي لا تحتوي على دالة أخري”parameter” عن طريق كتابة اسم الدالة
()FunctionName
  • وللدالة التي تحتوي علي دالة أخري”parameter” عن طريق كتابة اسم الدالة وبداخلها اسم الدالة  ال “parameter”
   (FunctionName(:FunctionName_Parameter    
  • عن طريق متغير يحتوي علي اسم الدالة:
Variable_Name = :FunctionName
(Variable-name=FunctionName(:FunctionName_Parameter

كيف يتم استدعاء الدوال من خلال المتغيرات ؟

عن طريق أمر call

ملحوظة:

  • أمر “Call” يكون لمتغير يحتوي على الدالة أو ل parameter يمثل أيضا دالة.
  • عند عمل استدعاء للدالة ال parameter بأمر “Call” خارج “scope” الدالة ينبغي عمل Return للدالة ال “parameter”.
     ([Call Variable ([Parameters

مثال توضيحي:

1.jpg

فتح الكود

2-Higher-order Functions

عبارة عن دوال تحتوي على دوال أخري ك “parameters” أو يتم التعامل معهم ك “parameters”

مثال توضيحي:

2.jpg

فتح الكود

3-Anonymous and Nested Functions     

  • دوال لا تحتوي على اسم ولكن قد تحتوي على “parameters“.
  • ويتم مرور”passing” تلك الدوال الي دوال أخرى ك “parameters” –تكون على شكل “nested functions”.
 {[Func [Parameters] { [statements

مثال توضيحي:

3.jpg

فتح الكود4.jpg

فتح الكود

4-Equality of functions

يمكن عمل مقارنة لمعرفة تشابه الدوال عن طريق المتغيرات التي تحتوي علي الدوال.

  • إذا تشابهت الدوال”المتغيرات” يكون الناتج 1
  • غير ذلك يكون الناتج 0

مثال توضيحي:

5.jpg

فتح الكود

5-Pure Functions

هي تلك الدوال التي لا تتغير حالتها أو قيمتها.

نعمل نسخ “copy” لمتغير يحتوي على قيمة ال “list | object ” الي متغير أخر، حتى لا تتغير قيمة المتغير الأصلي عند التعامل ك “reference”.

مثال توضيحي:

6.jpgفتح الكود

ومن هنا نكون قد تعرفنا علي المفاهيم المتعلقة بالدوال في اللغة

والي لقاء اخر

موقع اللغة:

http://ring-lang.net

 

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s