الـ Object Oriented Programming أو البرمجة كائنية التوجه، واللي بنختصرها بـ OOP، هي عبارة عن Programming Paradigm (نمط أو نموذج في البرمجة). النمط ده تم تقديمه لأول مرة في أواخر الخمسينات وأوائل الستينات.
الموضوع بدأ عن طريق مجموعة من الباحثين في جامعة MIT، وكان قائدهم شخص اسمه John McCarthy. جون مكارثي هو اللي طور لغة الـ Lisp، وقدم فيها مفهوم مهم جداً وهو “Data as first-class citizen”، ودي كانت الشرارة الأولى اللي انطلقت منها الـ OOP.
Evolution of OOP (60s - 90s)
1960s - 1970s:
بين فترة الستينات والسبعينات، ظهرت مجموعة من لغات البرمجة زي Simula و Smalltalk. اللغات دي طورت واشتقوا منها مبادئ الـ OOP الأساسية زي الـ Class والـ Object. لكن، في الوقت ده، اللغات دي مكانش ليها انتشار واسع بشكل أكاديمي أو تجاري.
1980s: C++
في التمانينات، حصلت نقلة نوعية بتقديم لغة C++. اللغة دي تبنت مفاهيم الـ Object Oriented (زي الـ Classes والـ Objects) بشكل قوي.
ده خلى المطورين في الوقت ده يقدروا يستخدموها عشان يبنوا أنظمة Software معقدة وضخمة، وعشان كده اللغة دي لاقت استحسان كبير جدًا في الـ Industry وصناعة البرمجيات.
1990s: Java
في التسعينات، زادت شهرة الـ OOP بشكل أكبر بكتير، وده بسبب تقديم لغة Java. الجافا كانت مصممة خصيصًا للاستخدام بداخل بيئة الشبكات وبيئة النظم الموزعة (Distributed Systems)، وده ساعد في ترسيخ الـ OOP كنمط أساسي.
Nowadays:
حاليًا، الـ OOP منتشرة بكثرة كنمط ونموذج في البرمجة، ومدعومة من أشهر لغات البرمجة اللي بنستخدمها النهاردة زي:
- C#
- Python
- Ruby
- وغيرهم كتير.
Other Programming Paradigms
هل فيه أنماط أو نماذج (Paradigms) تانية للبرمجة غير الـ OOP؟ أكيد فيه. خلينا نستعرض أهمهم:
1. Procedural Programming
نموذج البرمجة الإجرائية. النوع ده بيقوم بشكل أساسي على استخدام الـ Functions عشان ينظم الكود.
- مثال: لغة C.
2. Functional Programming
النوع ده بيقوم على الـ Mathematical Functions (الدوال الرياضية). بيعزز مفاهيم زي:
- الـ Immutability (عدم القابلية للتغيير).
- الـ Recursion.
- الـ Higher-Order Functions.
- أمثلة: لغات زي Haskell و Lisp.
3. Logic Programming
نموذج البرمجة المنطقي، وده بيقوم على الـ Formal Logic (المنطق الرسمي) واستخدام الـ Declarative Approach (الأسلوب التصريحي) في البرمجة.
- مثال: لغة Prolog.
4. Scripting Programming
نموذج البرمجة النصي. بيعتمد على كتابة Scripts أو Small Code Snippets (أجزاء صغيرة من الكود) عشان تقوم بـ Automation (أتمتة) لـ Tasks معينة وكبيرة.
- أمثلة: لغات زي Python، Perl، و JavaScript.
5. Event-Driven Programming
نموذج البرمجة اللي بتقوده الأحداث. الـ Paradigm ده بيستخدم عملية التطوير بناءً على التفاعلية والاستجابة. اللي بيحدد سير البرنامج هو مجموعة الأحداث (Events) اللي بيقوم بيها الـ User.
- أمثلة: JavaScript و C#.
6. Reactive Programming
نموذج البرمجة التفاعلي. بيسمح بإنشاء أنظمة صغيرة بتتفاعل مع التغييرات في الـ Inputs (المدخلات)، عن طريق نشر التغييرات دي تلقائيًا لجميع أجزاء النظام.
- مثال: مكتبة ReactiveX.
mindmap root((Programming Paradigms)) OOP C# Java Python Procedural C Language Functional Haskell Lisp Logic Prolog Scripting Python JavaScript Event-Driven JavaScript C# Reactive ReactiveX
Multi-Paradigm Languages & C#
زي ما لاحظنا، فيه بعض لغات البرمجة بتدعم Paradigm واحد فقط، والبعض الآخر بيدعم أكتر من نمط (Multi-Paradigm)، زي الـ JavaScript والـ C#.
في الكورس ده، هنغطي مفاهيم الـ OOP باستخدام لغة C#.
ليه اخترنا الـ C#؟
- لأنها General Purpose (متعددة الأغراض).
- لغة High Level.
- بتعمل Support لأكتر من Paradigm (بما في ذلك الـ OOP، Event-Driven، Functional features، وغيرها).