البرمجة الهيكلية في الصناعات الثقيلة

البرمجة الهيكلية في الصناعات الثقيلة

البرمجة الهيكلية في الصناعات الثقيلة

أصبح العالم شبكة معلوماتية واحدة في اتساع دائم وأصبع علم الاتصالات جزء لا يتجزأ من أساسيات الحياة الحديثة (الاتصالات البشرية والإلكترونية بجميع أنواعها (حثية… سمعية… مرئية) وأصبحت البرمجة الهيكلية أساس لا يمكن تجاهله في الصناعة عمومًا والصناعات الحربية والصناعات الثقيلة خصوصًا وتمكن الإنسان العادي من إجراء الاتصالات الصوتية بالانترنت VOICE OVER IP وتمكن أيضًا من التجوال عبر الانترنت في جميع أرجاء العالم بواسطة شبكات الكمبيوتر NETWORK, NET, NAT, LAN, WAN, PAN, MAN والآن يمكن لخبير إيطالي إصلاح ماكينة ألمانية في جنوب إفريقيا باستخدام أحد تطبيقات البرمجة الهيكلية وهو SCADA IT وذلك عن طريق Matrix Laboratory مختبر أو محلل المصفوفات واستخدام خواص خاصة مثل (API) Application Program Interface هذه الخاصية تسمح لنا بكتابة برامج بلغة الـ (C) أو الـ (Fortran) وتحتوي على تعليمات تستدعي برامج فرعية وتعليمات تمكننا من جعل MATLAB كنواة حسابية في برامجنا المكتوبة باللغات السابقة وتعليمات تمكننا من قراءة وكتابة ملفات مخصصة للربط بين البرنامج واللغات الأخرى.

واستخدام دوال للبرمجة مثل الدوال الرياضية The Mathematical Function وهي عبارة عن مجموعة كبيرة من التوابع والدوال الرياضية والخوارزميات تبدأ من الدوال والتوابع القادرة على إنجاز الحسابات الأساسية (كالضرب والطرح والجمع والقسمة) وتكمل حتى نصل إلى الدوال و التوابع القادرة على إنجاز حسابات معقدة مثل إيجاد مقلوب أو مضروب مصفوفة من أي درجة كانت وإيجاد تابع بيسل.

البرمجة ببساطة وفاعلية

إن أبسط طرق البرمجة هي سرد الأوامر في سلسلة متتالية يتم تنفيذ الأول ثم الثاني .. إلا إذا حددنا في البرنامج قفزات JUMP أو حلقات تكرارية LOOP أو جمل اختيار البدائل GOTO والجمل الشرطية عندها يغير البرامج مجراه ثم يعود لتنفيذ الأوامر واحد تلو الآخر وهذه الطريقة سهلة في البرامج البسيطة ولكن في البرامج المعقدة يصبح السرد طويلاً جدًا لذا جاءت طريقة البرمجة الهيكلية ففي لغات البرمجة يكون البرنامج أقسام يكون أحدها قسمًا رئيسيًا يتم تنفيذه أولاً هذا القسم يستدعي أقسام أخرى والأقسام الأخرى تستدعي أخرى وهكذا نسمى الأقسام وظائف Functions أو برامج فرعي Subroutine ويمكن لهذه الوظائف أن تأخذ معطيات وتعطينا نتائج أو حل المسألة الفرعية نسمي المعطيات معاملات Arg uments أو Parameters ونسمي القيمة التي يعيدها Return Value وبهذا تقسم المسألة المطلوب من البرنامج حلها إلى مسائل أبسط حتى نصل إلى عدد من المسائل التي نعرف كيف نحلها هناك العديد من لغات البرمجة منها ما يمكن للمستخدم العادي الكتابة بها ومنها ما يقتصر على المحترفين لغات المستوي الراقي منها اللغات التفسيرية وهي التي لا يقوم برنامج اللغة بتحويل النص من هذه اللغة إلى غلة الآلة وإنما يبقى النص بصيغته النصية ويسمى Script وعند تشغيل هذا النص يقوم برنامج المفسر بتحويل هذا النص أمرًا، وتنفيذه واحدًا تلو الآخر وفي كل مر تنفذه فيها الأوامر تعاد هذه العملية وفي أحسن الأحوال ينقل إلى صيغة مكثفة compiled script تختزل بعض عمليات التحويل ولكن لا يتحول النص إلى لغة الآلة بل إلى ملف ثنائي يسمى byte code وهو عبارة عن سلسلة من تعليمات بلغة الآلة الافتراضية (MACHINE LANGUAGE) ويكون هناك مفسر يسمى الآلة الافتراضية يتم استدعاؤه في كل مرة يتم تنفيذ البرنامج فيها حيث يقوم بالتحويل من الآلة الافتراضية إلى الحقيقية ويكون تنفيذ هذا byte code أسرع من النص script ويعتبر تتبع الأخطاء في اللغات التفسيرية أمرًا سهلاً لأنها تنفذ سطرًا فسطر. من الأمثلة على هذه اللغات bash و perl و python و php التي تتداول برامجها على شكل نصي script وهناك نوع من هذه اللغات python مثلاً يمكنه تحويل النص إلى لغة آلة وهمية افتراضية لكسب المزيد من السرعة ولكن أشهر تلك التي تتداول بشكل ثنائي غير نصي هي جافا java و visual basic كما يمكننا كتابة برامج بمستويات منخفضة أو عالية وذلك كله في بيئة سهلة الاستخدام وتحتوي على مميزات الـ (object – oriented – programming oop) على الرغم مما يقال إلا أنها تفسيرية لأن الملف التنفيذي هو عبارة عن ملف يقوم باستدعاء الآلة الافتراضية msvbvm60.dl مثلاً التي تتابع عملية تفسير البرنامج. وعلى الرغم من كل شيء تظل هذه اللغات بطيئة إلا أنها تمتاز بأنها ستعمل على أي منصة على أي نظام تشغيل إذا وجد المفسر الخاص بها على ذلك النظام وهي فلسفة هكذا لغات Run Every Where But Write Once أي أن تكتبه مرة واحدة وتنفذه أينما كان وعلى النقيض من ذلك توجد اللغات التي تعطي ملف بلغة الآلة مباشرة مثل لغة ++C/C وتسمى عملية تحويل ملف من الكود المصدر (الملف النصي) إلى لغة الآلة تصنيف Compliing ويكون البرنامج الناتج أسرع ما يكون خصوصًا إذا كنت تستعمل مصنف gcc الذي يمكنه تحسين Optimization أي زيادة سرعة برامجك أو تقليل حجمها ويمكنه استغلال كافة تعليمات معالج معين ولكن لغة ++C/C ليست للهواة فالهدف الأسمى في اللغات التصنيفية الجيدة والقياسية هو تحقيق العبارة الشهيرة Write once, compile every where أي أن تكتبه مرة واحدة وتصنفه أينما كان

The MATLAB Language

هو اختصار للجملة التالية (Matrix Laboratory) أي (مختبر أو محلل المصفوفات) وهو لغة برمجية عالية المستوي قوية الأداء، تستخدم لإنجاز الحسابات التقنية (الفنية الهندسية) فهي تنجز الحسابات وتظهر النتائج على شكل رسومات أو منحنيات كما يمكننا أن نكتب برنامج بلغة مثل الـ (C) أو لغة الـ (Fortran) وفي الإصدارات الجديدة من MATLAB أصبح بإمكاننا كتابة واستخدام مكتبات لغة (C) و (C++) كما يتميز بوجود معدات وأدوات خاصة بحل المشكلات والمسائل الفنية المعقدة والبسيطة هذه المعدات والأدوات موجودة في مجموعة تدعى صندوق الأدوات (Tooibox) يتم تشغيل البرنامج بالضغط مرتين على الأيقونة الموجودة على سطح المكتب في نظام Windows كما يمكننا أن نضبط خصائص تشغيل البرنامج حيث يمكننا أن نجعل البرنامج ينفذ أمرًا ما أو برنامج ما وذلك عن طريق الملف startup.m حيث نكتب فيه التعليمات التي نريد تنفيذها عند بداية التشغيل كما يمكننا الخروج من البرنامج عن طريق اختيار الأمر (Exit) من القائمة File أو عن طريق كتابة الأمر quite في الـ Command window كما يمكننا أن ننفذ الملف (finish.m) قبل أن نقوم بإغلاق MATLAB هذا الملف يقوم بعدة وظائف مهمة، حيث يقوم بتنفيذ برنامج لحفظ المتغيرات المستخدمة في برنامجنا وقيمها وخصائصها كما أنه يقوم بإظهار صندوق الحوار الخاص بعملية إغلاق MATLAB ويسأل صندوق الحوار هذا فيما إذا كنا نريد حفظ التغيرات الأخيرة على برنامجنا يظهر MATLAB Desktop عندما نشغل برنامج MATLAB وهو مبني بواسطة الأداة (GUI) ويمكننا MATLAB Desktop من كتابة البرامج بلغة MATLAB وبناء تطبيقاتنا الخاصة وذلك من خلال (Comoand Window) كما يمكننا من رؤية حالة وخصائص المتغيرات المستخدمة في برنامجنا من خلال (Comoand History) كما يمكننا من رؤية الملفات المستخدة في برنامجنا وتطبيقاتنا من خلال Default MATLAB Desktop (Current Directory) يمكننا تغيير ترتيبه وشكله كما نريد.

لغة ++C/C

تعتبر C من أفضل لغة برمجة على الإطلاق وهي لغة هيكلية ولكن إذا أردت البرمجة فعليك بلغات ++C/C و php كل هذه اللغات قادرة على عمل برامج رسومية عن طريق المكتبات لديك أيضًا بيئات تطوير متكاملة رسومية IDE مثل Development وهو يأتي مع أغلب التوزيعات وهو يوفر طريقة جيدة لإدارة المشاريع الكبيرة ويوفر نظام مساعدة يبدأ معك من الصفر فيشرح أساسيات ++C/C ويسترسل في الشرح إلى الأمور المتقدمة وإذا أردت ما هو أخف منه ليناسب المشاريع الصغيرة لديك anjuata وهو صغير يمكنك تنزيله ولدينا برامج تصميم واجهات رسومية مثل glade و glade2 الذي يعطي بلغة C/C++/perl/python وغيرها بطريقة gnome على مكتبة GTK وهناك برنامج لتصميم الواجهات الرسومية بطريقة KDE أو على مكتبة QT اسمه Qt3 Designer هما يأتيان مع أغلب التوزيعات الطريقة الأكثر شيوعًا هي استعمال محرر نصوص قوي وليس بيئة تطوير أو استعمال Kate أما لغة الـ C فتجبرك على إعلان نوع المتغير مثل أن تقول أن M هي عدد صحيح و N نسبي وأن T مصفوفة من أعداد نسبية، و Q هو سلسلة من الحروف وهناك لغات لا تطلب ذلك وتحول الأنواع في ما بينها مما يسهل عليك ويجعل التنفيذ أقل سرعة مثل perl ولكن حتى إذا جعلت برنامج منظمًا ستضطر لكتابة البرنامج من جديد إذا أردنا تطويره ليشمل فكرة أعم وفي البرامج الكبيرة يصبح لدينا الكثير من المتغيرات مثلاً W ربما تعني عرض المستطيل أو عرض الشاشة .. فتضطر إلى إعادة التسمية.

مثلاً (rectangle_width و w,h) وربما تصبح (arearectangle_width, rec-) rec-(tangle_height tangle_area) ولكن عندها سيصبح الملف كبيرًا جدًا لحل هذه المشكلة ظهرت فكرة البرمجة الكينونية حيث هناك تعرف صنف class معين وتعرف ماذا له من خصائص properties أي متغيرات. وأفعال methods وهي نفسها الوظائف functions ويمكن أن تشترك هذه الخصائص في الاسم مع صنف آخر وتختلف في الطريقة مثلاً المستطيل له مساحة ولا داع لعمل أسماء طويلة مثل ( ؟؟؟) ولا داعي لأن تأخذ الطول والعرض لأنها من خصائص الكائن لذا فهي في جميع الأحوال AREA ثم تعرف كائن من هذا الصنف فيكون له هذه الخصائص والأفعال

انظر هذا النص بلغة وهمية

#the is pseudo code

class rectangle

integer w,h;

integer area() {return

w*h};

rectangle rect1;

rect1.w=10;

rect1.h=15;

Print rect1. area();

لاحظ أننا استعملنا النقطة بعد الكائن للوصول إلى خصائص وبعض اللغات تستخدم وبعضها مثل C تستخدم هذه في أحيان أخرى.

لغة PHP

تستخدم بشكل أساسي لعمل صفحات  الإنترنت وأن تكون وأن تكون واجهة للتعامل مع قاعدة بيانات SQL my ولكن يمكن عمل برامج أخرى بها.

لغة Java

لغة سهلة يمكنها عمل برامج تطبيقية وبرامج للإنترنت وهي لغة تفسيرية موجهة للكائنات وهي لغة قياسية تعمل على أكثر من جهاز وأكثر من شركة تنتج المصنف الخاص بها وهي لغة تفسيرية ولكنها تنتج bytecode أو ما يسمى machine virtal code مما يفترض أن يجعلها تعمل أسرع من اللغات التفسيرية الأخرى ومن مصنفاتها gnu-java و kaffe وهناك j2sdk الذي يفضله غالبية مبرمجي جافا.

لغات الذكاء الصناعي

Lisp … مثل rep و prolog مثل G prolog

لغة FORTRAN

لغة قديمة وصعبة وتستخدم عادة لأغراض التحليل العددي وحاليًا استبدلت بشكل كامل بلغة C ومن الأفضل البرمجة دون استخدام COBOL أو FORTRAN

لغة Pascal

لغة قوية ولكن ليست شائعة في عالم لينكس ولكنها موجودة وهناك مصنفان لها Free Pascal و GNU pascal  ولعمل برامج رسومية GUI لديك الخيارات.

Kylix مكتبة وبيئة تطوير متكاملة

Borland Lazarus بيئة تطوير متكاملة تشبه Delphi

لغة VBASIC

لا تستغرب إذا قلت لك أن الفيروس أسهل إلى المبرمج من لغة basic وعلى الرغم من ذلك يوجد بعض لغات بيسك مثل quasie و GW basic و الأفضل هو Vbasic وعادة لا تأتي هذه البرامج مع المصفوفات.

انظر هذا المثال بلغة وهمية

لإيجاد مساحة المستطيل #

البرنامج الرئيسي #

رحب بالمستخدم واسأله عن الأبعاد #1- print_hello

W,h خذ منه قيم عن الأبعاد في المتغيرين #2- get_input (w,h)

احسب المساحة #3- a=calcArea (w,h)

اطبع الجواب #4- print a

انتهاء البرنامج # exit

البرنامج الفرعي لكتابة السؤال #

Function print_hello

Print”Hello,welcome to..”

Print “enter the width and height”

End

احسب المساحة #

Function calcArea (w,h)

Return w*h

End

أخذ المساحة #

Function get_input(w,h)

Input w,h

End

لاحظ أننا إذا قسمنا المسألة إلى مسائل أبسط نظل بحاجة إلى نقطة نهاية أبسط في المرحلة الأخيرة لذلك علينا أن نستدعي شيئًا لم نكتبه نحن وهذا ما يسمى بالمكتبة فأنت لن تكتب تفاصيل كل شيء وإنما تبنى على أوامر موجودة في اللغة تسمى كلمات مفتاحية keywords أو تستدعي مكتبات كتبها غيرك أو تستدعي نظام التشغيل.

An=An-1+An-2

A0=1

A1=1

A5 مثلاً أحساب

A5=A4+A3

A3 و A4 الآن يجب أن نحسب بأربعة ثم بثلاث n لذا نستدعي نفس العلاقة لكن بوضع A4=A3+A2

A3=A2+A1

A2=A1+A0=1+1=2

A3 وهي التي تلزمنا لحساب ِِA1 و A2 نعرف الآن

A3=A2+A1=2+1=3

A4 وهي التي تلزمنا لحساب A2 و ِA3 نعرف الآن

A4=A3+A2+3+2=5

إذن

A5=A4+A3+5+3=8

يمكن أن يكون البرامج بالشكل التالي

(بلغة وهمية) function fa (n) if (n=1 or n=0) return1 else return fa (n-2)

End