و ما الفرق بينها ؟Procedural, Functional و الـ OOP ما هي البرمجة الـ
إستهلاكك لمادة البرمجة يفتح أبواباً كثيرة للتعرف على أشياء حديثة في ذلك الميدان، سواء من ناحية اللغات البرمجية او التقنيات البرمجية و أيضاً البرامج المستخدمة في ميدان البرمجة على العموم، و قد تجد في توضيحات بعض اللغات البرمجية ان هذه اللغة مثلا مجرد لغة برمجة Functional، او ان تلك اللغة هي لغة برمجة OOP إختصار لعبارة Object Oriented Programming ... لكن هل تسائلت يوما لما ذلك التقسيم؟ ما الذي يعنيه لغة برمجة Fonctional ؟ او لغة برمجة Procedural ؟ او Object Oriented Programming ؟
فيما يجيء شرح لكل الأقسام الثلاث ( و قسم إضافي اخر في مجال البرمجة ) و الشرح بشكل مفصل اللغات التي تنتمي لهذا النوع و أهم الفروقات بين كل نوع.
: Functional Programming الـ-
فيما يجيء شرح لكل الأقسام الثلاث ( و قسم إضافي اخر في مجال البرمجة ) و الشرح بشكل مفصل اللغات التي تنتمي لهذا النوع و أهم الفروقات بين كل نوع.
: Functional Programming الـ-
في البرمجة بشكل عام، يوجد مجموعة من القواعد التي يجب عليك إتباعها من أجل الاستحواذ على النتيجة المرغوبة لعل أهمها إختيار الوسيلة الأسهل و الأجود للقيام بالعملية البرمجية، كتعريف للـ Functional Programming فهي البرمجة التي تسمح لك بإدراج مجموعة من النُّظُم او المدخلات او الـ Arguments ثم الحصول على نتيجة (Return) تشييدً على طرقة التداول مع تلك الـ Argurments، و يتم إستعمالها في فعل العمليات الحسابية او التداول مع أي شيئ يفتقر الى إسترجاع مقدار محددة عقب معالجة مجموعة من البيانات.
إن كنت مبرمجاً من قبل، فأنت تدرك ان عمل الـ Function ( الدالة ) بسيط، إذ يأخذ مجموعة من الـ Arguments ثم يقوم بإعادة مقدار Return و في الوسط نجد مجموعة من الـ Instructions، من هنا إقتبست كذلكً الـ Functional Programming إسمها.
كل اللغات البرمجية إلى حد ما تأتي متضمنة خواص الـ Functional Programming و هذا لكونها الهيكل الأساس للغة البرمجية، اما عملها فيتجلى في تصرف العمليات الحسابية، المقارنات و كذلك الحلقات التكرارية، فمثلا، إن اردت إجراء عملية حسابية، فأنت بسهولة تقوم بخلق بعض المتغيرات و تمرير القيم المخصصة بها و فعل العملية ثم إرجاع النتيجة.
اما بعض اللغات البرمجية التي تعتمد على الـ Functional Programming فهي كثيرة، بل إلى حد ما كل اللغات منها الـ C، بايثون، الروبي، Haskell.
توجب هنا الدلالة الى ان بعض اللغات البرمجية مثل Clojur او Erlang تعتمد على الـ Functional Programming ف تصرف عمليات حسابية كبيرة جدا، بيسر يمكن لبعض اللغات و إن كانت تتضمنها الا تقوم بعمليات بهذه الأسلوب او الشدة، مثل الجافاسكربت مثلا.
كل اللغات البرمجية إلى حد ما تأتي متضمنة خواص الـ 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، فهي غير مشابهة قليلا عن إستخدامات كل من الـ Functional التي تسعى لإنجاز المهام الحسابية، او الـ Procedural التي تحاول لمعالجة المهام الإجرائية، الهدف من الـ OOP هو تشكيل مشروع برمجي مهيكل بطريقة جيدة، بحيث يتبع نمطاً معينا من التصميم الهيكلي التي تسمح لنا بتعديله، إضافة مميزات حديثة، حماية البيانات و المعطيات و تسهيل التداول مع المشروع البرمجي، فلو كان لديك مشروع برمجي كبير نسبيا و ترغب في صناعته بأسلوب لا تربكك، و بإحترافية، فعليك تحليله ثم إستخراج الكائنات المتواجدة في هذا المشروع ( مثلا الزبون، المنتج، نوع المنتج ... ) هذه كائنات، ثم نقوم بإعدادا كلاسات خاصة بها بإتباع القواعد الرئيسية في صناعتها (Getters, Setters, Constructors, Methods ...)، و أثناء تصرف أي عملية و لنقل مثلا شراء منتج A من طرف الزبون 1، نقوم فقط بخلق الكائنين و إعطاء مميزات كل واحد ثم تسجيلها.
اما بالنسبة للغات البرمجية التي تدعم الـ OOP فهي كثيرة منها : Java, C# , Ruby, Php . ما الاختلاف بين الأنواع الثلاث ؟ -
من خلال شرحها تَستطيع إستنباط الفرق بينها، نستطيع ان نجد لغة برمجة تدعم الأشكال الثلاث ( مثل جافا مثلا ) او لغات برمجة تدعم لاغير إثنتين او واحدة فقط من هذه الأنواع، و يختلف الإستعمال وفق الرغبة، إلا أن أغلب اللغات البرمجية حاليا أصبحت تدعم التقنيات الثلاث. تسمح لك الـ Functional بإستعمال التقنيات الحسابية في البرمجة على العموم و تسهيل التداول معها عن طريق مجموعة من الأوامر و الأسطر البرمجية، بيما تسمح لك الـ Procedural بالتعامل مع جزء أحد الكود البرمجي (Block of Code) بحسب نوع الطلب المراد فيه من طرف المستعمل او حتى المبرمج، اما الـ OOP فتقنياتها تعتمد على بناء وتركيب المشاريع البرمجية الهائلة بغية تحديث، تجديد، و إضافة مميزات جديدة للمشروع البرمجي دون لبس او لخبطة في المشروع بأكمله. بخصوص لإستخدامات الـ OOP، فهي مختلفة قليلا عن إستخدامات كل من الـ Functional التي تحاول لإنجاز المهام الحسابية، او الـ Procedural التي تحاول لمعالجة المهام الإجرائية، المبتغى من الـ OOP هو تشكيل مشروع برمجي مهيكل بطريقة جيدة، بحيث يتبع نمطاً معينا من التصميم الهيكلي التي تسمح لنا بتعديله، إضافة مميزات جديدة، حماية البيانات و المعطيات و تسهيل التبادل مع المشروع البرمجي، فإن كان لديك مشروع برمجي عظيم نسبيا و تريد صناعته بطريقة لا تربكك، و بإحترافية، فعليك تحليله ثم إستخراج الكائنات الموجودة في ذلك المشروع ( مثلا العميل، المنتج، نوع المنتج ... ) هذه كائنات، ثم نقوم بإعدادا كلاسات خاصة بها بإتباع النُّظُم الأساسية في صناعتها (Getters, Setters, Constructors, Methods ...)، و خلال فعل أي عملية و لنقل مثلا شراء منتج A من طرف العميل 1، نقوم فقط بخلق الكائنين و إعطاء مميزات كل واحد ثم تسجيلها.
اما بخصوص للغات البرمجية التي تدعم الـ OOP فهي كثيرة منها : Java, C# , Ruby, Php .
ما الاختلاف بين الأشكال الثلاث ؟ -
من خلال شرحها تَستطيع إستنباط الفرق بينها، يمكننا ان نجد لغة برمجة تدعم الأنواع الثلاث ( مثل جافا مثلا ) او لغات برمجة تدعم لاغير إثنتين او واحدة لاغير من هذه الأشكال، و يختلف الإستعمال وفق الرغبة، إلا أن أكثرية اللغات البرمجية في الوقت الحاليّ أصبحت تدعم التقنيات الثلاث. تسمح لك الـ Functional بإستخدام التقنيات الحسابية في البرمجة على العموم و تسهيل التبادل معها من خلال مجموعة من التعليمات و الأسطر البرمجية، بيما تسمح لك الـ Procedural بالتعامل مع جزء واحد من الكود البرمجي (Block of Code) وفق نوع المطلب المراد فيه من طرف المستهلك او حتى المبرمج، اما الـ OOP فتقنياتها تعتمد على تشييد وتركيب المشاريع البرمجية العظيمة بغية تحديث، تجديد، و إضافة مميزات حديثة للمشروع البرمجي دون لبس او لخبطة في المشروع بأكمله.
من خلال شرحها تَستطيع إستنباط الفرق بينها، يمكننا ان نجد لغة برمجة تدعم الأنواع الثلاث ( مثل جافا مثلا ) او لغات برمجة تدعم لاغير إثنتين او واحدة لاغير من هذه الأشكال، و يختلف الإستعمال وفق الرغبة، إلا أن أكثرية اللغات البرمجية في الوقت الحاليّ أصبحت تدعم التقنيات الثلاث. تسمح لك الـ Functional بإستخدام التقنيات الحسابية في البرمجة على العموم و تسهيل التبادل معها من خلال مجموعة من التعليمات و الأسطر البرمجية، بيما تسمح لك الـ Procedural بالتعامل مع جزء واحد من الكود البرمجي (Block of Code) وفق نوع المطلب المراد فيه من طرف المستهلك او حتى المبرمج، اما الـ OOP فتقنياتها تعتمد على تشييد وتركيب المشاريع البرمجية العظيمة بغية تحديث، تجديد، و إضافة مميزات حديثة للمشروع البرمجي دون لبس او لخبطة في المشروع بأكمله.
Aucun commentaire:
Enregistrer un commentaire