إستهلاكك لمادة البرمجة يفتح أبواباً كثيرة للتعرف على أشياء جديدة في هذا المجال، سواء من ناحية اللغات البرمجية او التقنيات البرمجية و أيضا البرامج المستخدمة في مجال البرمجة بشكل عام، و قد تجد في شروحات بعض اللغات البرمجية ان هذه اللغة مثلا مجرد لغة برمجة Functional، او ان هذه اللغة هي لغة برمجة OOP إختصار لعبارة Object Oriented Programming ... لكن هل تسائلت يوما لما هذا التقسيم؟ ما الذي يعنيه لغة برمجة Fonctional ؟ او لغة برمجة Procedural ؟ او Object Oriented Programming ؟
- الـ Functional Programming :
في البرمجة بشكل عام، يوجد مجموعة من القواعد التي يجب عليك إتباعها من أجل الحصول على النتيجة المرغوبة لعل أهمها إختيار الوسيلة الأسهل و الأمثل للقيام بالعملية البرمجية، كتعريف للـ Functional Programming فهي البرمجة التي تسمح لك بإدراج مجموعة من القواعد او المدخلات او الـ Arguments ثم الحصول على نتيجة (Return) بناءً على طرقة التعامل مع تلك الـ Argurments، و يتم إستخدامها في إجراء العمليات الحسابية او التعامل مع أي شيئ يحتاج الى إسترجاع قيمة معينة بعد معالجة مجموعة من البيانات.
إن كنت مبرمجاً من قبل، فأنت تدرك ان عمل الـ Function ( الدالة ) بسيط، إذ يأخذ مجموعة من الـ Arguments ثم يقوم بإعادة قيمة Return و في الوسط نجد مجموعة من الـ Instructions، من هنا إقتبست أيضا الـ Functional Programming إسمها.
اما بعض اللغات البرمجية التي تعتمد على الـ Functional Programming فهي كثيرة، بل تقريبا كل اللغات منها الـ C، بايثون، الروبي، Haskell.
توجب هنا الإشارة الى ان بعض اللغات البرمجية مثل Clojur او Erlang تعتمد على الـ Functional Programming ف إجراء عمليات حسابية كبيرة جدا، ببساطة يمكن لبعض اللغات و إن كانت تتضمنها الا تقوم بعمليات بهذه الكيفية او القوة، مثل الجافاسكربت مثلا.
- الـ Procedural Programming :
يمكنك إلتماء عبارة Procedure في إسم هذا النمط البرمجي، و يُقصد بها تعريفا باللغة العربية " الإجراء "، ان كانت الـ Functional Programming تقوم بقراءة التعليمات سطراً بسطر و تنفيذها بهدف الخروج بنتيجة في الأخير، فإن الـ Procedural Programming جاءت لحل مشكلة تشغيل كل قطعة من الكود دفعة واحدة، و الإعتماد فقط على تشغيل جزء معين من شفرة برمجية حسب الطلب / الإجراء.
سيكون أسهل بالنسبة لي - كمبرمج - ان اطور مجموعة من الشفرات البرمجية ( لنقل مثلا كود يقوم بحساب مساحة مربع، و كود يقوم بحساب مساحة مستطيل، ثم الدائرة ) و بعد تشغيل البرنامج لا اقوم بتشغيل كل الأكواد دفعة واحدة، بل اقوم بتشغيل الكود الفرعي فقط حين يطلبه المستخدم، فإن نقر المستخدم على زر الحصول على مساحة المربع، اقوم بتشغيل الكود الخاص بذلك و أقوم بإعطاء النتيجة، بينما بقية الكود لا تشتغل الا عند الطلب او الإجراء.
في لغات برمجية متقدمة، قد تجد انها تستخدم ما يسمى بالـ Routines او الـ Subroutines او Methods او حتى الـ Procedure، بحيث تقوم بتضمين قطعة كود معينة في جزء معين من الكود الرئيسي و تقوم بتشغيله فقط عند الحاجة مثل النقر على زر او حدوث Event معين.
يوجد العديد من اللغات البرمجية التي تعتمد عليها مثل الـ C، البايثون، الجافا و Php و غيرها .
- الـ OOP Programming :
الـ OOP، و هي إختصار لعبارة Object-Oriented Programming لكن سنرمز لها في بقية هذا المقال بالـ OOP، يعتمد في الأساس هذا النمط على تحويل الكود البرمجي او المشروع البرمجي على شكل كائنات (Objects) لكل كائن خواصه و تعريفاته الخاصة، و يمكن التلاعب بهذه الكائنات سواء أثناء إنشائها عن طريق ما يسمى بالـكلاس Class او بعد إنشائها بإستخدام الـ Objects، يتم التعامل مع مجموعة كبيرة من التقنيات الوسطية في الـ OOP و أساسها أربع تقنيات و هي : Inheritance و Encapsulation و الـ Abstraction و أخيرا الـ Ploymorphisme .
اما بالنسبة للغات البرمجية التي تدعم الـ OOP فهي كثيرة منها : Java, C# , Ruby, Php .
- ما الفرق بين الأنواع الثلاث ؟
من خلال شرحها يمكنك إستنباط الفرق بينها، يمكننا ان نجد لغة برمجة تدعم الأنواع الثلاث ( مثل جافا مثلا ) او لغات برمجة تدعم فقط إثنتين او واحدة فقط من هذه الأنواع، و يختلف الإستخدام حسب الرغبة، لكن معظم اللغات البرمجية حاليا أصبحت تدعم التقنيات الثلاث.
تسمح لك الـ Functional بإستخدام التقنيات الحسابية في البرمجة بشكل عام و تسهيل التعامل معها عن طريق مجموعة من الأوامر و الأسطر البرمجية، بيما تسمح لك الـ Procedural بالتعامل مع جزء واحد من الكود البرمجي (Block of Code) حسب نوع الطلب المرغوب فيه من طرف المستخدم او حتى المبرمج، اما الـ OOP فتقنياتها تعتمد على هيكلة المشاريع البرمجية الكبيرة بغية تطوير، تحديث، و إضافة مميزات جديدة للمشروع البرمجي دون لبس او لخبطة في المشروع بأكمله.
تسمح لك الـ Functional بإستخدام التقنيات الحسابية في البرمجة بشكل عام و تسهيل التعامل معها عن طريق مجموعة من الأوامر و الأسطر البرمجية، بيما تسمح لك الـ Procedural بالتعامل مع جزء واحد من الكود البرمجي (Block of Code) حسب نوع الطلب المرغوب فيه من طرف المستخدم او حتى المبرمج، اما الـ OOP فتقنياتها تعتمد على هيكلة المشاريع البرمجية الكبيرة بغية تطوير، تحديث، و إضافة مميزات جديدة للمشروع البرمجي دون لبس او لخبطة في المشروع بأكمله.
ليست هناك تعليقات:
إرسال تعليق