البرمجة، ذلك الوحش !


أرهقوك بالمصطلحات الغامضة، ضَغَطْتَ على أعصابك فوق وُسْعِكَ لتظفر منهم ولو بشظية أمل..
لكنهم خذلوك…
صَوَّرُوهَا لك كالوحش الضاري ذي الأنياب الذَّرِبَة..
فَخِفْتَ إن أنتَ دَنَوْتَ منه أن ينهش ما بقي لديك من صبر، وجئت هنا كمحاولة أخيرة لتقول لهؤلاء القوم: هذه آخر فرصة لديكم لتقنعوني أن البرمجة ليست وحشا كما تصورت !
أُبَشِّرُكْ، قد وضعت قدميك في المكان الصحيح، في هذه المقالة سترى البرمجة ـ ذلك الوحش الضاري ـ أرنبا ورديا لطيفا، لكن مقابل ذلك أعرني تركيزك لدقائق يسيرة، وأعدك بإرجاع الثقة إليك بعون الله تبارك وتعالى.
خليلي...
سأفترض مسبقا أن علاقتك بالبرمجة كعلاقة الفلاَّح بموسيقى الروك...
ليس من باب تقليص ظلك، وإنما من باب التبسيط، فلا تُلْقِ علي العتب إن أنا أفرطت في التسهيل، لأن وراء الأكمة ما وراءها، وما تراه أنت تافها، كان السبب المباشر لغيرك في رؤية البرمجة وحشا كاسرا..
جاهز؟ فَلْنَمْضِ على بركةٍ من الله إذن...
مبدئيا، لنتفق أن البرمجة لا تعدو أن تكون طريقة للتواصل مع جهاز الحاسوب، نقول له مثلا: قم بتعديل الصورة التالية، أو شغل الملف الصوتي التالي، أو قم بترجمة الكلمات التي سأكتبها لك إلى لغة أجنبية ما...
هذه الأوامر بيننا نحن البشر عادية جدا، سأفهمك إذا خاطبتني بهذه اللغة، وَسَأُنَفِّذُ لك طلباتك إذا كنتُ قادرا عليها، لكن تخيل معي أن هذا الحاسوب لا يفهم لغاتنا البشرية، هذا الكلام لو رددناه له إلى الصبح لن يفقه منه شيئا، لأن للحاسوب لغته الخاصة، التي علينا الإلمام بها إذا أردنا أن نتواصل معه.
أ تدري ما اسم تلك اللغة يا خليلي؟ اسمها لغة الآلة Machine Language، لأن آلة الحاسوب تفهمها..
بعض الناس يسمونها اللغة الثنائية Binary Language، وقد تنظر إلي الآن بنظرات شزراوات وتسألني: وما معنى اللغة الثنائية؟
هدىء من روعك يا خليلي فالمسألة أبسط بكثير مما تتصوره..
السر وراء هذه التسمية، هو أن لغة الحاسوب قائمة بالأساس على وحدتين اثنتين، هما صفر و واحد، ومنهما جاءت هذه التسمية: اللغة الثنائية...
ستبستم حتما، لكنك سرعان ما ستستعيد تجهمك وتسألني من جديد: ما معنى أن لغة الحاسوب قائمة على الصفر و الواحد؟
سأقول لك بكل بساطة: الحاسوب جهاز الكتروني، مكون من أجهزة فرعية متصلة به، بعضها خاص بالإدخال وبعضها خاص بالإخراج، والبعض الآخر يقوم بمعالجة البيانات المدخلة ويقوم بإخراجها.
البيانات التي تدخل إلى الحاسوب ليعالجها (بمعنى أوضح ليتعرف عليها ويقوم بتنفيذها) تدخل على شكل بيانات ثنائية، على شكل سلاسل من الأصفار والآحاد، حينما تدخل تخزن في ذاكرة الحاسوب، فيقوم المعالج Processor بأخذ هذه البيانات وقراءتها وتنفيذها ومن ثم إرسالها إلى أجهزة الإخراج المعدة لها.
سأزيد المسألة تبسيطا وتفكيكا، عبر الصور التالية: التي أتمنى أن تتأملها بحب:
عملية معالجة البيانات من الإدخال إلى الإخراج

سنعطي مثالا للعملية التي توضحها الصورة أعلاه:
وأنت تنوي الدخول إلى حاسوبك الشخصي، ستطالعك واجهة إدخال كلمة السر (ليس في كل الحالات، لكن أنا متأكد أنك تعرف تلك الواجهة)
هل استحضرت صورتها في ذهنك الآن؟
ممتاز، لنواصل إذن..
هذه الواجهة تنتظر منك أن تدخل كلمة السر، أول خطوة ستقوم بها هي الضغط على حروف لوحة المفاتيح لكتابة كلمة السر..
هذه هي عملية إدخال البيانات، لوحة المفاتيح هي جهاز الإدخال، و كلمة السر التي ستكتبها هي البيانات المدخلة..
هذه البيانات حينما تدخل إلى جهاز الحاسوب يتم تخزينها في الذاكرة، والذاكرة يا خليلي مكونة من خانات لاستقبال البيانات الثنائية، هذه الخانات لها عناوين لكي يتعرف المعالج على عنوان كل قيمة مخزنة...
بعد أن يتم تخزين هذه البيانات في الذاكرة، يأتي دور وحدة المعالجة أو المعالج لقراءتها، ومقارنتها بكلمة السر الخاصة بالحاسوب، إن حصل تطابق، يتم فتح الحاسوب، وإلا فإنه يعرض لك رسالة خطأ مفادها أن كلمة السر المدخلة غير صحيحة، وفي الحالتين معا النتيجة المرجعة يتم إخراجها إليك عبر الشاشة، إذن فالشاشة جهاز إخراج، والرسالة المرجعة هي بيانات مخرجة..
اتضحت الصورة الآن يا خليلي؟
إن كان كذلك، فعد إلى الصورة من جديد، وتخيل أحد السيناريوهات التي تقوم بها عادةً، وارسم على ورقة مختلف المراحل التي تقطعها لإنجازه مرورا بالإدخال وانتهاء بالإخراج..
بعد أن تقوم بذلك، وستقوم به بعون الله...أنا أعرفك جيدا، وأقرأُ رسائل النصر في عينيك !
بعد ذلك تعال معي لنتفقد أنفسنا أين نحن..
تعرفنا على جهاز الحاسوب وعلى اللغة التي يفهمها، وعلى الأجهزة الفرعية المتدخلة في عمليات إدخال ومعالجة وإخراج البيانات.
لنا عودة مع لغة الآلة يا خليلي...فأعرني انتباهك يرحمك الله !
ستقرأ عن هذه اللغة في كتاب سأهديه إليك، وسترى أنها لغة سهلة التعلم، لكن لو طلبت منك كتابة برنامج بها، قد لا تتمالك أعصابك وستبحث عن أقرب شيء منك، لتتلقفه في غياب وعي وترسله على رأسي لتشجني، لكنني سأزيغ برأسي وأعود لأقول لك:
خليلي...
لستَ مطالبا بكتابة البرامج بلغة الآلة، فقد وُجِدَتْ بدائل رائعة جدا تسهل عليك ذلك، أ تدري ما اسمها؟
اسمها لغات البرمجة Programming Languages..
إنها لغات وسيطة، قريبة من لغاتنا البشرية، ومن السهل على الحاسوب تحويلها إلى لغته الثنائية.
هذه اللغات سهلت عليك المهمة بشكل رهيب، لكنها كثيرة جدا يا خليلي، فكيف تختار لغتك؟
لن أخذلك يا صديقي وأتركك هنا...
سأدلك على كتاب مختصر، يمكنك قراءته في أسبوع واحد، وبعد مطالعة الكتاب وتطبيق ما جاء فيه، سأدلك على مقطع فيديو يريك كيف تختار لغتك ومن أين تبدأ.
في هذا الكتاب، ستتعلم ماهي اللغة الثنائية، وماهي أنظمة تمثيل البيانات الأخرى المتوفرة، وستتعلم كيف تكتب البرامج على شكل خوارزميات.
الجميل في هذا الكتاب، أنه يأخذ بيدك من الصفر..
والأجمل من ذلك أنه يعلمك البرمجة باللغة العربية، وبل ويترجم لك الخوارزميات باللغة الانجليزية حتى لا تجد صعوبة في تحويلها إلى برامج حقيقية بعد ذلك..
لا أشكر لك الكتاب يا خليلي لأنه من تأليفي، معاذ الله ! وإنما أصف لك ما فيه حقا، وسترى صدق ما أقول بعد أن تختمه..


بعد الكتاب شاهد المقطع المصور التالي:

ففيه ستعرف ماهي لغة البرمجة التي تناسبك...
بعد أن تقوم باختيارها، اشتغل عليها بجد واجتهاد، وحينما تبرمج أول برنامج لك بها...
افتح باب غرفتك، ونادي أمك بهدوء وخضوع..
أو أقول لك: من الأفضل أن تذهب أنت إليها..
بل اذهب أنت إليها..
ثم قبل رأسها ثلاثا وقل لها:
لقد طلب مني ذلك خالد من المغرب الأقصى !

هناك 20 تعليقًا:

  1. رائع يا خالد و الاروع طريقة شرحك التي من خلالها سيفهم الكل معنى البرمجة لدي سؤال حول ماهية البرمجة الاكثر طلبا
    الويب ام الاندرويد
    وفقك الله

    ردحذف
  2. حفظكم الله أينما كنتم
    كلمة حق أقولها
    فصيح اللسان عذب الكلام غزير البيان
    تفتح الطريق لكل متعلم استصعب العلوم

    ردحذف
  3. حفظكم الله أينما كنتم
    كلمة حق أقولها
    فصيح اللسان عذب الكلام غزير البيان
    تفتح الطريق لكل متعلم استصعب العلوم

    ردحذف
  4. جزاك الله كل خير أستاذي ،،،، ربنا يفتح عليك

    ردحذف
  5. بارك الله فيك اخ خالد

    ردحذف
  6. بارك الله فيك ... شيء يفوق الوصف

    ردحذف
  7. استاذي حليت بعض التمارين الي موجودين في الكتاب .. لكن لست متأكد

    ردحذف
  8. لا نملك الا الدعاء لك في ظهر الغيب سائلين المولى عز وعلا ان يمن عليك وعلى عائلتك الكريمة بالصحة والعافية والستر في الدنيا والاخرة يا استاذ خالد الرائع

    ردحذف
  9. بورك فيك با اخ خالد

    ردحذف
    الردود
    1. انا عندي مشكلة Additional information: Conversion failed when converting the varchar value '%' to data type int.
      الايرور دا عبارة عن ايه
      ارجوك ساعندي

      حذف
  10. مشكلة اول مره تصادفني في حياتي
    السلام عليكم ورحمه الله وبركاته
    لدي مشروع محاسبة ومستودعات اعمل عليه منذ فتره
    صادفتني مشكلة اليوم في الفيجول ستديو عند اجراء التغيرات على الكود او النوافذ وعمل حفط وتنفيذ التغيرات لا تضهر في التنفيذ كنما لم يحث شي من تغيير

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

      حذف
  11. يــاليت فيـه من الأستاذ خالد السعداني كثير

    وفقك الله

    ردحذف
  12. مقال متقن أستاذنا.

    ردحذف
  13. بارك الله فيك وزادك الله من فضله

    ردحذف
  14. ليس هناك اي تعليق انما اريد استفسار..
    كلما نزلت نسخة sql server لااستطيع تثبيتها
    اريد اعرف كم الحجم للسرفرلتكد اذا من الخلل؟

    ردحذف
  15. شكرا أخي خالد لقد سهلت علبا الكثير من الامور يمكنني ان ادرس البرمجه في نفس الوقت مع دراستي للطب بفضل الله عز و جل ثم لفضلك جزاك الله عني كل خير و بارك لك في علمك

    ردحذف
  16. جزاك الله كل خير اخى
    ولاكن ماذا بعد اختيار اللغه المراد تعلمها

    ردحذف
  17. ايها الخائن لقوميتك واصولك الامازيغية عوض ان تقدم هده المعارف للاشقائك في الدم الامازيغ انت تقدمها لمن لاعلاقة لك بهم لقد غسلو دماغك نحن لانحتاج الى معارفك بخر بها انت وعروبتك المزعومة

    ردحذف