بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
الهدف من هذا المقال
سنحاول في هذا المقال تسليط الضوء على بعض المبادئ و المفاهيم الاساسية في عالم البرمجة .
1- دردشة حول لغات البرمجة :
كلنا يعرف ان البرمجة عبارة عن لغة تواصل بين المبرمج و النظام , بحيث ان النظام يملك عدة لغاة تواصل مع المستخدمين و مع الآلة في نفس الوقت .
فنظام التشغيل هنا يلعب دور الوسيط بين المستخدم/المبرمج و الآلة الفزيائية
فمثلا يتخاطب النظام مع المستخدم العادي بواسطة ازرا تقوم بعمل محدد , بواسطة رسائل توجيهية و كذلك المستخدم العادي يتواصل مع النظام عبر واجهة رسومية مبسطة لا تتطلب معرفة واسعة بالنظام .
انت مثلا عندما تنسخ ملف من قارء الاقراص الى القرص الصلب تقوم بعمل كوبي ثم كولي فقط , لا تحتاج لمعرفة كم وحدة حجز يتطلبها الملف او كم هي المساحة التي ستخصص في الذاكرة العشوائية لاتمام هذا العمل , او العنوان الرقمي الذي سيخصص للملف داخل القرص الصلب ... الخ
اذا النظام هنا يتعامل مع المستخدم العادي بواسطة واجهة رسومية مبسطة .
المبرمج يملك ميزة تفرقه عن المستخدم العادي , لان المبرمج يتقن التحاور مع النظام بلغته
مباشرتا , المبرمج لا يستعمل الازرار بل هو الذي ينشئ الازرار و يحدد علمها بمساعدة نظام التشغيل .
و هنا نستطيع ان نقول ان نظام التشغيل يمثل مزرعة خصبة للمبرمج او مختبر شخصي , و بهذا يصبح المبرمج مستخدم فعال ينشئ و ينتج اما المستخدم العادي يبقى عبارة عن مستهلك و كل هذا يمر عبر نظام التشغيل .
و حتى بيت المبرمجين مقسم الى عدة طوابق , فكما قلنا سابقا النظام يحتوي على عدة لغاة مرتبة من الاسفل الى الاعلى .
ابتداء من الآلة الفزيائية وصولا الى الواجهة الرسومية
و هذا ما سنراه في الفقرة التالية
2- مستويات لغات البرمجة :
1-2 مقدمة
لو وضعنا جهاز الكومبيوتر تحت المجهر مالذي سنرى ؟؟
سنرى الآلاف من النواقل النحاسية Bus التي تربط بين مختلف مكونات الجهاز
لو تعمقنا اكثر سنرى اشاراة كهربائية تمر بسرعة فائقة عبر هذه النواقل
ببساطة هذا هو جهاز الكومبيوتر
لدينا اشاراة كهربائية مختلفة مثلا 5 فولت يعبر منطقيا عن 1 و لدينا -5 فولت يعبر منطقيا عن 0 .
لا حظوا جيدا في الجملة السابقة تكون لدينا تقسيم اولي , اشارة فيزيائة (آلة فيزيائية ملموسة) و نظام منطقي
اذا نقطة الصفر هي x فولت , نرتفع للطابق الاول سنجد اسقاط منطقي و تتحول الـ x فولت الى عدد منطقي (0 او 1)
اذا كل تلك البيانات المتناقلة بين مكونات الجهاز اصلها اشاراة كهربائية اما سالبة او موجبة
السالب يعبر عن قيمة منطقية 0 و الموجب يعبر عن القيمة 1
و من هنا يتكون لنا النظام الثنائي système binaire و كما يسمى النظام الرقمي système numérique
فمن ابسط شيئ كملف يحتوي على كلمة hello وصولا الى البرامج الضخمة كلها تحول الى نظام ثنائي ( 01011101010101) لكي تعالج من طرف الآلة .
اذا بعد الاشارة اكهربائية الموجبة و السالبة , اللغة الوحيدة التي يتقنها الكومبيوتر هي النظام الثنائي .
نحن الآن نستعمل النظام العشري , فمثلا العدد 2 في النظام العشري يقابله 10 في النظام الثانئي
3 ---11
4----100
5----101
9----1001
2009----11111011001
و هكذا ...
حتى الحروف تحول الى نظام الثنائي ليتمكن الجهاز من معالجتها , و قبل هذا تحول الى ترميز Ascii او EBCEDIC ..
مثلا حرف A يحول الى النظام التشفير ASCII فيصبح 65 و الـ a الصغيرة يعبر عنها بـ 97 .
ثم تحول 65 الى نظام الثنائي فتصبح 1000001 و هكذا
يعني ان الحرف A الكتابي في لغة البشر يتحول الى 1000001 في لغة الآلة .
حرف امام حرف و عدد امام عدد تتكون لنا سلسلة طويلة من النظام الثنائي
0101010101111100011101101
لدينا اصغر وحدة هي البت bit اما يكون 1 او 0
عند تكون 8 اعداد تصبح كلمة mots اي 1 اوكتي 1 octets
و هي اصغر تجميعة متعتمدة بالآلة .
و يجمع الجهاز تلك السلاسل الى وحدات اما 8 او 16 او 32 او 64 بت
نحن كبشر يصعب علينا التحاور مع الجهاز بهذه اللغة , تخيل حرف A فقط يقابله 1000001 بت ناهيك عن الترميز codage و بت الانطلاق و بت النهاية .. الخ
كل هذا لحرف واحد ,فما بملاين الجمل !!
لهذا توجد مترجمات بالجهاز تقوم بترجمة الاحرف و الاعداد تلقائيا الى لغة الالة .
تسمى هذه المترجمات بـ المترجم compilateur او المفسر interpréteur
تترجم الاكواد البرمجية الى لغة الآلة فتقوم هذه الاخيرة بمعالجتها ثم تترجم النتائج مرة اخرى من لغة الآلة الى لغة برمجية مفهومة .
شيفرات برمجية ---------> المترجم/المفسر ---->لغة آلة
---> معالجة –> نتائج
- كما ان لغة الآلة مقيدة (بـ 1 و 0 ) و محددة بطرق ترميز صارمة فان لغاة البرمجة ايضا تسير وفق نفس النهج , فهي عبارة عن كلماة محددة او بتعبير آخر صيغة محددة يتوجب على المبرمج اتباعها لكي يحصل على النتائج المرجوة
مثلا لطباعة رسالة بلغة السي يتوجب علينا استعمال الكلمة printf و بصيغة محددة لا نستطيع تعديها , و هي وضع الرسالة بين قوسين و علامات تنصيص ثم نختم السطر بـ نقطة فاصلة
مثال
كود PHP:
[left]printf (« hello world »); [/left]
[right][/right]
[/FONT][/B][/SIZE]
فعلى المبرمج اتباع هذه الصيغ و القوانين الصارمة لحل المشكلة , فلقد وضعت هذه الصيغ لتنظم طريقة العمل , فهي تساعد المبرمج و لا تقيد عمله بل تنظمه .
و هذا لامر لا يخص لغاة البرمجة فقط بل ان كل مجال يتعامل مع صيغ خاصة به
فالكيميائ يتبع صيغ خاصة للحل معادلاته و المعماري يتبع قوانين صارمة للتشيد بناؤه , كذلك الرياضي يتبع منهج مقيد لحل المعادلات .
و من هنا تنتج لنا طريقة التفكير , نسمع الناس تقول ذاك يملك تفكير رياضي , الآخر يملك تفكير فيزيائي .. الخ
و الكل يشترك في امر واحد
لدينا مشكلة تتطلب حلول
لايجاد الحلول نتبع الصيغ و نطبق قوانين ..
فمهمة المبرمج الاساسية هي حل مشاكله باتباع تفكير برمجي .
انت جوعان , و تريد الذهاب للثلاجة لتبحث عن اي شيئ يؤكل
اي شخص عادي سيقوم بفتح الثلاجة و ياخذ وجبة و ينتهي الامر
المبرمج لديه طريقة خاصة في تنفيد هذه الحركة
اولا سيعتبرها مشكل , و يجب ان يضع لها الحل المناسب الذي لا يقبل الخطئ
اولا يتفقد ان كانت هناك ثلاجة بالبيت
اذا لم تكن هناك ثلاجة سيرسل لنفسه رسالة خطئ تعلمها انه لا توجد ثلاجة بالبيت
اذا كانت هناك ثلاجة , يحدد مكانها , ثم يتقدم لها
افتح الثلاجة ,
ينشئ قائمة لكل محتويات الثلاجة , ثم يرسل هذه القائمة للمعدة
المعدة بدورها ستعيد ترتيب هذه القائمة ترتيبا تصاعديا حسب ما تشتهيه ثم تعيد القائمة مرة اخرى
يقوم المبرمج بقراءة القائمة و يذهب لاول اكلة اختارتها المعدة
يتفقد الاكلة , هل هي صالحة , اذا كانت كذلك يستخرجها و يغلق الثلاجة ثم يبعث رسالة تحمل اسم الاكلة المختارة .
- اذا حدث ام آخر يمر للاكلة الثانية بالقائمة و هكذا........
هذا ما يسمّى بالتحليل البرمجي او التفكير البرمجي (المنطقي) , و كل الخطواة السالف ذكرها تعتبر خوارزميات لحل مشكل .
لدينا فكرة , نعم فقط فكرة .
كمبرمج ستعتبر كيفية انجاز هذه الفكرة مشكلة , و كمبرمج ايضا يتوجب عليك وضع حل او مجموعة حلول لهذه المشكل .
عن طريق صيغة محددة تسمى لغة برمجة .
لماذا برمجة ؟؟
لانك ستاخذ مجموعة من المعطيات او البيانات , تقوم بتحليلها خطوة بخطورة , كل نتيجة تؤدي الى بيان ثم يعالج هذا البيان ليتحول الى نتيجة اخرى و هكذا حتى تتتحول كل هذه المعطيات الى نتائج .
اذا انت هنا تقوم ببرمجة معلومة مبدئية عبر عدة مراحل لتعطي نتيجة محددة .
تعمل هذا الامر مرة واحدة فقط (اثناء كتابة الكود) , ثم تصبح تلك الشيفرات المعقدة الى جسم متكامل يسمى برنامج يقوم هذا البرنامج باخذ معطيات و تحويلها الى نتائج تلقائيا (مبرمج) .
مهما اختلفت مستويات لغات البرمجة فكلها يؤدي نفس العمل .