كانت البرمجة الإجرائية (Procedural Programming) و تعني هي سلسلة من الإجراءات المنفذة على مجموعة من البيانات . ثم ابتكرت البرمجة البنيوية (Structured Programming) لتأمين مقاربة منظمة لهذه " الإجراءات " تسمح بمعالجة كميات ضخمة من البيانات .
البرمجة البنيوية:-
جوهر البرمجة البنيوية و باختصار شديد جدا هو مبدأ " فرق تسد " . فالمهمة المعقدة تنقسم إلى مجموعة من المهمات الأصغر إلى أن تصبح صغيرة كفاية و مستقلة كي تنجز بسهولة
على سبيل المثال إن احتساب معدل أجر عامل في شركة ما قد تكون عملية مفقدة نوعا ما ، لذلك نقسمها إلى أجزاء صغيرة :-
1. احتساب أجر كل عامل .
2. تعداد العمال .
3. جمع الأجور .
4. تقسيم المجموع على عدد العمال .
لكن عملية جمع الأجور يمكن تقسيمها إلى :-
1. الحصول على سجل كل عامل.
2. معرفة الأجر .
3. إضافة افجر إلى المجموع العام .
4. قراءة سجل العامل الثاني .
و يمكننا الحصول على سحل العامل كما يلي:-
1. فتح ملف العمال.
2. الذهاب إلى السجل الصحيح .
3. قراءة المعلومات من القرص .
و هكذا نرى أن البرمجة البنيوية مسلك ناجح أما المشاكل المعقدة . علما أن مشاكل كثيرة ستعترضنا ، كلما أزداد حجم البيانات كلما صعب الفصل بين البيانات و المهمات التي تعالج هذه البيانات مما يعقد التنفيذ و التطوير ، لذلك تزداد عملية التقسيم صعوبة كلما تراكمت المهمات المجراه على البيانات .
ابتكر المبرمجون الإجرائيون الذين يعتمدون أسلوب البرمجة الإجرائية (Procedural Programming) حلولا متطورة للمشاكل التقليدية ، لكن هذا عمليا ليس عمليا ، و لكأنهم يعيدون اخترع الدولاب . إن المرونة تعني بناء مقومات و ذات صفات واضحة يمكن توليفها في أي برنامج عند الحاجة .
تصنيف الأشياء من حولنا
تنقسم الأشياء في عالمان المحسوس إلى جماد و نبات و حيوانات . و تنقسم الحيوانات بدورها إلى برية و بحرية و برمائية و تنقسم النباتات إلى أقسما عديدة جدا لا مجال لذكرها هنا .
و هكذا يتدرج علم الطبيعة في تقسيم الأشياء حتى يصل إلى أدق التفصيلات . فإذا أردنا أن نتحدث عن النسور مثلا ، فيكفي أن نقول أن النسر ينتمي إلى الطيور حتى نفهم أنه يرث من جني الطيور كل خصائصه ، و يبقى بعد ذلك الحديث عن الخصائص المميزة للنسر و التي تجعل منه نسرا ، و سلوكه المتفرد الذي يميزه عن بقية الطيور ، إن هذا التقسيم المبدئي لمكونات العالم المحسوس يغنينا تماما عن الخوض في التفصيلات المتكررة ، و يعفينا من مشقة أن نبدأ من الصفر عندما نتحدث عن كائن ما .
و الاتجاه الجديد للبرمجة يحاول الاستعانة بهذا المنطق في حل مشكلات الحياة العملية حيث تقس الأشياء إلى فصائل (Classes) و تشترك أعضاء كل فصيلة في الصفات و السلوك . و يمكن للمبرمج أن يبني مكتبة من الفصائل (Class Library) أو يستعين بمكتبات جاهزة .
و تحتوي الفصيلة على بيانات و كذلك على سلوك البيانات أو العمليات المنتظر إجراؤها عليها بحيث تشكل معا نمطا (Type) حيا من البينات . و يمكن للمبرمج أن يبتكر نمطا جديدا ، فالأطباق الطائرة مثلا تعبر نمطا جديدا من الطيور فهي تحمل خصائص فصيلة الطيور ، لكنها تحمل بعض الخصائص المتفردة التي تميزها عن النسر و الطائرة النفاثة . و المبرمج عندما يضيف نمطا جديدا ، فهو لا يبدأ من الصفر بل إنه يضيف فقط الخصائص الجدية إلى الخصائص الموروثة .
فإذا تركنا الطيور و الأطباق الطائرة ، و هبطنا إلى عالم المشكلات اليومية و التي نستخدم الكمبيوتر لحلها ، فسوف نجد أن المشكلات كلها معروفا مقدما ، و أن مجهودات البرمجة موجهة أساسا إلى تعديل و تطوير أو بمعنى أدق إلى صيانة البرامج الموجودة أصلا .
حيث تجد المبرمج التي يعتمد الأسلوب القديم في البرمجة (البرمجة الإجرائية) يقوم بكتابة النص من البداية و ذلك لعدم توفر النص البرمجي أو لأن المكتبة الحالية لا تقوم بما يرده تحديدا .
إن الاتجاه الجديد في البرمجة و الذي يطلق عليه البرمجة الموجهة نحو الهدف (Object-Oriented Programming)) وقد بدأت لغة سي++ في تطبقيه مما جعل حياة أسهل للمبرمجين .
مبادئ البرمجة غرضيه التوجيه
لو تأمل ت الكزن لوجد أنه يتكون من فصيلة كبيرة أعضاؤها هي المادة (البيانات) و القوانين الطبيعية التي تتحكم في سلوك المادة (الدوال) . من هذه التوليفة الرائعة تنبع المعجزة الإلهية .
و لو تأملت منجزات الإنسان على مر العصور ، أما ما سمينها بالاختراعات من تلفزيون و كمبيوتر و أقمار صناعية لوجدت أنها في الحقيقة ليست إلا استخداما منطقيا لخصائص الفصيلة المعجزة (( المادة و القوانين الطبيعية )) . إن الإنسان في حقيقة الأمر لم يخترع شيئا ، بل هو – بنعمة العقل – يجتهد في اكتشاف القوانين الطبيعية و استخداماها ، فالقانون الطبيعي التي تعمل بع الطائرة و تحلق به ، موجود أصلا قبل صناعة أي طائرة ، و قانون السباحة و الطفو موجود قبل صناعة السفن و الغواصات .
بل أن قانون نسبية الزمن الذي ارتبطت صيغته الرياضية باسم البرت أنيشتين ، ليس اختراعا و لكنه اكتشافا لقانون طبيعي موجود من افصل . إنه إحدى خصائص هذه الفصيلة المعجزة التي خلقها الخالق .
إن بداية كل اكتشاف ناجح أو ابتكار مفيد تبدأ بالتأمل في قوانين الطبيعة و محاولة فهمها و الاستفادة منها و محاكاتها .
إن هذا بالتحديد ما فعله (( بايرن ستراوستراب )) عندما فكر في أن يبتكر أسلوبا جديد للبرمجة ، إنه أسلوب محاكاة القوانين الطبيعية .
أخذ هذا الموضوع من :-
1. تعلم سي ++ في 24 ساعة .
2. سي ++ لغة البرمجة الحديثة (مهندس أسامة الحسيني)
البرمجة البنيوية:-
جوهر البرمجة البنيوية و باختصار شديد جدا هو مبدأ " فرق تسد " . فالمهمة المعقدة تنقسم إلى مجموعة من المهمات الأصغر إلى أن تصبح صغيرة كفاية و مستقلة كي تنجز بسهولة
على سبيل المثال إن احتساب معدل أجر عامل في شركة ما قد تكون عملية مفقدة نوعا ما ، لذلك نقسمها إلى أجزاء صغيرة :-
1. احتساب أجر كل عامل .
2. تعداد العمال .
3. جمع الأجور .
4. تقسيم المجموع على عدد العمال .
لكن عملية جمع الأجور يمكن تقسيمها إلى :-
1. الحصول على سجل كل عامل.
2. معرفة الأجر .
3. إضافة افجر إلى المجموع العام .
4. قراءة سجل العامل الثاني .
و يمكننا الحصول على سحل العامل كما يلي:-
1. فتح ملف العمال.
2. الذهاب إلى السجل الصحيح .
3. قراءة المعلومات من القرص .
و هكذا نرى أن البرمجة البنيوية مسلك ناجح أما المشاكل المعقدة . علما أن مشاكل كثيرة ستعترضنا ، كلما أزداد حجم البيانات كلما صعب الفصل بين البيانات و المهمات التي تعالج هذه البيانات مما يعقد التنفيذ و التطوير ، لذلك تزداد عملية التقسيم صعوبة كلما تراكمت المهمات المجراه على البيانات .
ابتكر المبرمجون الإجرائيون الذين يعتمدون أسلوب البرمجة الإجرائية (Procedural Programming) حلولا متطورة للمشاكل التقليدية ، لكن هذا عمليا ليس عمليا ، و لكأنهم يعيدون اخترع الدولاب . إن المرونة تعني بناء مقومات و ذات صفات واضحة يمكن توليفها في أي برنامج عند الحاجة .
تصنيف الأشياء من حولنا
تنقسم الأشياء في عالمان المحسوس إلى جماد و نبات و حيوانات . و تنقسم الحيوانات بدورها إلى برية و بحرية و برمائية و تنقسم النباتات إلى أقسما عديدة جدا لا مجال لذكرها هنا .
و هكذا يتدرج علم الطبيعة في تقسيم الأشياء حتى يصل إلى أدق التفصيلات . فإذا أردنا أن نتحدث عن النسور مثلا ، فيكفي أن نقول أن النسر ينتمي إلى الطيور حتى نفهم أنه يرث من جني الطيور كل خصائصه ، و يبقى بعد ذلك الحديث عن الخصائص المميزة للنسر و التي تجعل منه نسرا ، و سلوكه المتفرد الذي يميزه عن بقية الطيور ، إن هذا التقسيم المبدئي لمكونات العالم المحسوس يغنينا تماما عن الخوض في التفصيلات المتكررة ، و يعفينا من مشقة أن نبدأ من الصفر عندما نتحدث عن كائن ما .
و الاتجاه الجديد للبرمجة يحاول الاستعانة بهذا المنطق في حل مشكلات الحياة العملية حيث تقس الأشياء إلى فصائل (Classes) و تشترك أعضاء كل فصيلة في الصفات و السلوك . و يمكن للمبرمج أن يبني مكتبة من الفصائل (Class Library) أو يستعين بمكتبات جاهزة .
و تحتوي الفصيلة على بيانات و كذلك على سلوك البيانات أو العمليات المنتظر إجراؤها عليها بحيث تشكل معا نمطا (Type) حيا من البينات . و يمكن للمبرمج أن يبتكر نمطا جديدا ، فالأطباق الطائرة مثلا تعبر نمطا جديدا من الطيور فهي تحمل خصائص فصيلة الطيور ، لكنها تحمل بعض الخصائص المتفردة التي تميزها عن النسر و الطائرة النفاثة . و المبرمج عندما يضيف نمطا جديدا ، فهو لا يبدأ من الصفر بل إنه يضيف فقط الخصائص الجدية إلى الخصائص الموروثة .
فإذا تركنا الطيور و الأطباق الطائرة ، و هبطنا إلى عالم المشكلات اليومية و التي نستخدم الكمبيوتر لحلها ، فسوف نجد أن المشكلات كلها معروفا مقدما ، و أن مجهودات البرمجة موجهة أساسا إلى تعديل و تطوير أو بمعنى أدق إلى صيانة البرامج الموجودة أصلا .
حيث تجد المبرمج التي يعتمد الأسلوب القديم في البرمجة (البرمجة الإجرائية) يقوم بكتابة النص من البداية و ذلك لعدم توفر النص البرمجي أو لأن المكتبة الحالية لا تقوم بما يرده تحديدا .
إن الاتجاه الجديد في البرمجة و الذي يطلق عليه البرمجة الموجهة نحو الهدف (Object-Oriented Programming)) وقد بدأت لغة سي++ في تطبقيه مما جعل حياة أسهل للمبرمجين .
مبادئ البرمجة غرضيه التوجيه
لو تأمل ت الكزن لوجد أنه يتكون من فصيلة كبيرة أعضاؤها هي المادة (البيانات) و القوانين الطبيعية التي تتحكم في سلوك المادة (الدوال) . من هذه التوليفة الرائعة تنبع المعجزة الإلهية .
و لو تأملت منجزات الإنسان على مر العصور ، أما ما سمينها بالاختراعات من تلفزيون و كمبيوتر و أقمار صناعية لوجدت أنها في الحقيقة ليست إلا استخداما منطقيا لخصائص الفصيلة المعجزة (( المادة و القوانين الطبيعية )) . إن الإنسان في حقيقة الأمر لم يخترع شيئا ، بل هو – بنعمة العقل – يجتهد في اكتشاف القوانين الطبيعية و استخداماها ، فالقانون الطبيعي التي تعمل بع الطائرة و تحلق به ، موجود أصلا قبل صناعة أي طائرة ، و قانون السباحة و الطفو موجود قبل صناعة السفن و الغواصات .
بل أن قانون نسبية الزمن الذي ارتبطت صيغته الرياضية باسم البرت أنيشتين ، ليس اختراعا و لكنه اكتشافا لقانون طبيعي موجود من افصل . إنه إحدى خصائص هذه الفصيلة المعجزة التي خلقها الخالق .
إن بداية كل اكتشاف ناجح أو ابتكار مفيد تبدأ بالتأمل في قوانين الطبيعة و محاولة فهمها و الاستفادة منها و محاكاتها .
إن هذا بالتحديد ما فعله (( بايرن ستراوستراب )) عندما فكر في أن يبتكر أسلوبا جديد للبرمجة ، إنه أسلوب محاكاة القوانين الطبيعية .
أخذ هذا الموضوع من :-
1. تعلم سي ++ في 24 ساعة .
2. سي ++ لغة البرمجة الحديثة (مهندس أسامة الحسيني)