نيوتك

مفهوم البرمجة ولغاتها


؟ الدرس الأول ؟

إعداد- م· عبير السيد
ab_elsayed1002@yahoo.com

سوف أتحدث في هذه السلسلة من المقالات عن مفهوم البرمجة بوجه عام وعن المصطلحات الشائعة في عالم البرمجة·
ما معنى كلمة برنامج؟ البرنامج هو مجموعة من الجمل مكتوبة في شكل أوامر موجهه لجهاز الكمبيوتر لتنفيذ مهمةٍ ما وتتم كتابة هذه الأوامر بإحدى لغات البرمجة· وتسمى مجموعة الأوامر هذه بالكود (Code). وهناك العديد من المصطلحات التي ترادف كلمة برنامج ومنها Application و Program و Software و كل هذه المصطلحات لها نفس المعنى·
هناك العديد من الأمثلة لبرامج معروفة وشائعة الاستخدام ومنها Microsoft Word و Microsoft Excel و Microsoft Access و Paintbrush. حتى إن إنظمة التشغيل نفسها مثل Windows هي عبارة عن برنامج·

Paintbrush
لغات البرمجة
لغة البرمجة هي اللغة التي يتم استخدامها لكتابة الأوامر التي سيقوم جهاز الكمبيوتر بتنفيذها وهناك العديد من الأمثلة على هذه اللغات و منها CوC و Pascal و Basic و Java. وتنقسم لغات البرمجة إلي ثلاثة أنواع هي:
1- لغة الآلة (Machine Language)
هي اللغة الوحيدة التي يفهمها جهاز الكمبيوتر مباشرة ويستخدمها في تنفيذ العمليات الحسابية والأوامر الموجهة إليه، وهي عبارة عن مجموعة من الأصفار والآحاد (0,1) يتم تجميعها معا بالعديد من الطرق لتكوين مختلف الأوامر التي ينفذها الكمبيوتر فعلى سبيل المثال، قد يتم تمثيل عملية الجمع بلغة الكمبيوتر في صورة 11001011 ، و من عيوب هذه اللغة أنها صعبة الفهم والتعلم بالنسبة للإنسان، لأنها لا تمثل جملا مفهومة بالنسبة له، كما أنها تعتمد على المكونات الصلبة للجهاز (Hardware) و بالتالي فإنها تختلف من جهاز إلى آخر· و من عيوبها أيضا أنها تتطلب وقتا وجهدا كبيرا لكتابة البرنامج· أما مميزاتها فهي سرعة تنفيذ الأوامر المكتوبة بها حيث إنها مكتوبة مباشرة باللغة التي يفهمهما الكمبيوتر·
2- لغة الاسمبلي (Assembly Language)
مع ازدياد استخدام الكمبيوتر ظهرت الحاجة لوجود لغة يستطيع الإنسان فهمهما بسهولة حتى يتمكن من التعامل بسهولة مع جهاز الكمبيوتر وتوجيه الأوامر إليه بدلا من استخدام لغة الآلة (Machine Language) التي كان يصعب على الإنسان التعامل معها، ومن هنا ظهرت لغة الاسمبلى و هي لغة تستخدم اختصارات لكلمات باللغة الإنجليزية لتنفيذ الأوامر: فعلى سبيل المثال لتنفيذ عملية الجمع يكون الأمر هو ADD وهو اختصار لكلمة Addition . و لكي يفهم جهاز الكمبيوتر الأوامر المكتوبة بلغة الاسمبلي فلابد من وجود مترجم (translator) وهو عبارة عن أداة خاصة بلغة الاسمبلي تقوم بترجمة هذه الأوامر و تحويلها إلى لغة الكمبيوتر حتى يستطيع الكمبيوتر تنفيذها ويسمي هذا المترجم Assembler. ومن عيوب هذه اللغة أنها ما زالت تتطلب معرفة بالمكونات الصلبة للكمبيوتر·
3- لغات المستوى العالي (High Level Languages)
مع وجود الازدياد السريع والمستمر في استخدام الكمبيوتر، ظهرت الحاجة لوجود نوع من اللغات أكثر سهوله من الاسمبلى في الاستخدام والتعلم، وفي نفس الوقت لا يتطلب استخدامها معرفة بالعمليات التي تتم داخليا في المكونات الصلبة للجهاز، ومن هنا ظهرت لغات المستوى العالي وهي لغات تتم فيها كتابة الأوامر في صورة جمل تشبه الإنجليزية و بالتالي يسهل علي الإنسان فهمهما و التعامل معها· و من أمثلة هذه اللغات C و و Pascal و Basic و Java. و يتم تصنيف لغات المستوى العالي إلى نوعين هما:
أ- Procedure Oriented Language
و فيها تتم كتابة الأوامر المراد تنفيذها في صورة جمل متتالية و بالترتيب المراد تنفيذها به· ويهتم هذا النوع من اللغات بالوظائف (Functions) التي يتم تنفيذها من خلال البرنامج ولا يعنيه الكائنات (Objects) التي يتعامل معها البرنامج· فعلى سبيل المثال فإنه عند عمل برنامج خاص بالمرتبات فإن العملية الحسابية الخاصة بحساب إجمالي مرتب موظف هي ما تهتم به Procedure Language بينما لا يعنيها الموظف نفسه في حد ذاته ككائن· و من أمثلة هذا النوع من اللغات C و Pascal و Basic.
ب-Object Oriented Language
لقد أدى التطور الكبير في عالم البرمجة إلى ظهور حاجة لبرامج تتكون من مجموعة كائنات يمكن تجميعها معا بالعديد من الطرق للحصول علي العديد من البرامج و التي يؤدي كل منها وظيفة مختلفة عن الآخر· والكائن هو عبارة عن مجموعة من البيانات (Data) والأوامر Instructions التي يتم تنفيذها على البيانات مخزنين معا في وحدة واحدة هي الكائن و بالتالي يمكن إعادة استخدام (Reusability) هذا الكائن العديد من المرات، وكلما احتجنا إليه وفي العديد من البرامج بدلا من إعادة كتابة نفس الأوامر مرة أخرى، وهذا يوفر الوقت و المجهود· فعلى سبيل المثال، فإن الكائن الخاص بالموظف يمكن استخدامه في برنامج شئون العاملين و في برنامج المرتبات و في برنامج الموارد البشرية حيث أن جميع هذه البرامج تحتاج لوجود بيانات عن الموظف فيها وبالتالي نكون قد أنشأنا كائنا واحدا للموظف، وأعدنا استخدامه في العديد من البرامج دون الحاجة لوجود خاص ببيانات الموظف في كل برنامج منها على حدة· و تمثل C و Java أشهر أمثلة لهذا النوع من اللغات·
و لكي يفهم جهاز الكمبيوتر الأوامر المكتوبة بإحدى لغات المستوى العالي، ويقوم بتنفيذها فلابد من وجود مترجم ليقوم بتحويل أوامر تلك اللغة إلى لغة الجهاز· و كل لغة من لغات المستوى العالي يكون لها المترجم الخاص بها، وهناك نوعان رئيسيان من المترجمات للغات المستوى العالي وهما:
أ- Interpreter
يقوم بترجمة البرنامج سطرا سطرا، و تحويله إلى لغة الجهاز ويقوم بتنفيذ كل سطر بعد ترجمته وهذا يؤدي إلى استغراق وقت طويل لإتمام عملية التنفيذ (Execution).
ب- Compiler
يقوم بترجمة البرنامج كله مرة واحدة وتحويله بالكامل إلى لغة الجهاز قبل البدء في عملية تنفيذ أوامر البرنامج· وبذلك يتميز بسرعة التنفيذ عن ال Interpreter و لكن عيبه أن المبرمج يضطر للانتظار حتى تتم ترجمة البرنامج بالكامل لمعرفة الأخطاء الموجودة في كود البرنامج (مجموعة الأوامر المكونة للبرن