المعلوماتية > برمجيات

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

منذ المرحلة الثانوية، تعرفنا في حصص الرياضيات إلى مفهومٍ ومُصطلح مهم وهو الدالة أو التابع Function. ولازمنا هذا المصطلح طوال فترة دراستنا، حتى الجامعية منها. وعند دراستنا لُغات البرمجة، تفاجأنا بوجود المفهوم نفسه المُتعلق بالبرمجة، وهو نموذج البرمجة الوظيفية Functional Programming Paradigm، فما هو هذا النموذج؟ وما علاقته بالإجراءات؟

تُعَد البرمجة الوظيفية Functional Programming واحدة من العديد من النماذج paradigms المُستخدمة في تطوير البرمجيات، ومن هذه النماذج نموذج *البرمجة غرضية التوجه Object-Oriented Programming paradigm، والبرمجة المُهيكلة أو المنظمة Structured Programming، والبرمجة التصريحية Declarative Programming، والبرمجة الحتمية Imperative programming وغيرها من النماذج (2).

تهدف البرمجة الوظيفية إلى هيكلة البرامج بطريقة مشابهة لتعريفاتها الرياضية. على سبيل المثال، يستخدم مفهوم العودية Recursion (استدعاء التابع على نحو متكرر عند الحاجة) بدلًا من الحلقات Loops، وغالبًا ما تكون قيمة المتغيرات ذات قيم ثابتة وليست قيمًا متغيرة فعلية، والتوابع هي كائنات من الدرجة الأولى، مما يعني أنه يمكن تمرير التوابع إلى توابع أخرى بوصفها متحولات مستقلة Arguments (1).

حتى نقول عن لغة برمجة ما إنها لغة برمجة وظيفية لا بد من توفر مجموعة من الخصائص، منها: 

هناك العديد من اللغات البرمجية التي تدعم هذا النموذج، منها لغة #C ولغة #F ولغة python، ومنها ما يدعم فقط النموذج الوظيفي (مثل لغة Haskell) ومنها ما تدعمها على نحو كبير، ولكن مع دعم لنماذج أخرى (مثل لغة Lisp أو Erlang). (3)

الهوامش: 

*البرمجة غرضية التوجه Object Oriented Programming: هنا
 
المصادر:

1. Functional Programming — ORIE 6125: Computational Methods in Operations Research 3.0.1 documentation [Internet]. People.orie.cornell.edu. 2017 [cited 23 September 2020]. Available from: هنا

2. Functional programming [Internet]. Cs.lmu.edu. [cited 23 September 2020]. Available from: هنا

3. Functional Programming [Internet]. Ics.uci.edu. 2016 [cited 23 September 2020]. Available from: هنا