كيف يفهمنا الكومبيوتر ؟!

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

أظن أنك توقفت قليلا عند أمر الحاسوب هذا. أليس كذلك؟! لا تقلق. ستفهم كل شيء قريبا.

 اليوم يا صديقي سنجيب على سؤال قد يكون جال بخاطرك يوما ما، وهو ببساطة. كيف يفهمنا الكمبيوتر؟

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

أظن أنه يجب علينا الآن التوقف عن سرد المقدمات والبداية في الإجابة على هذا السؤال.

في البداية يا صديقي، عليك أن تعلم أن الحواسيب لا ولم ولن تفهم أبدا إلا لغة واحدة، وهي لغة الآلة.  نعم يا صديقي، هي هذه اللغة المكونة من الرقمين 1 و0 ! بالتأكيد ستتعجب من الأمر يا صديقي وتسأل، ما دام الأمر هكذا، لم اخترعنا كل هذه اللغات البرمجية ما دام بإمكاننا البرمجة بلغة الآلة من البداية؟ 

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

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


كلام مهم فعلًا في موضوع مهم. أود أن أضيف أيضًا أننا نتجه الآن للمرحلة التي لا يحتاج فيها المستخدم العادي إلى استخدام الأكواد أصلًا ليفهمه الكمبيوتر أحيانًا فبعض المواقع مثلًا يمكنك منها بناء التطبيقات والمدونات دون الحاجة لكتابة سطر واحد من الكود.

بالنسبة لي لم أفهم حقًا ما تعنيه لغة الآلة إلا عندما تعلمت بنفسي كيف تتحول اللغة البرمجية اللي نكتبها إلى لغة يفهمها الحاسوب. وهذا يحدث عن طريق وسيط في المنتصف يسمى ال Compiler وهو يعني حرفيًا المترجم

حيث يقوم هذا المترجم بالمهمة الكبرى فيأخذ الأسطر التي كتبناها بأحد لغات البرمجة ويحولها لمجموعة من السطور البسيطة بلغة أقل فهمًا بالنسبة للإنسان وهي الAssembly

وبعدها يتم تحويل كل سطر من هذا اللغة إلى سطر مقابل لها في لغة الآلة عن طريق مجموعة من الجداول والإضافات التي أتفق عليها صانعوا الحواسيب فمثلًا لو وجدت كلمة Add ضع مكانها 0000 وهكذا. الأمر رائع من شدة تعقيده وبساطته في نفس الوقت ألا تتفق معي؟

أتفق معك كليا يا سيدة أمنية. فقد أضفتِ العديد من المعلومات المهمة التي لم أذكرها. عالم البرمجة والتقنية عالم ساحر فعلا، فهو يخلب لبَّك ويأسرك بتميزه واختلافه عن باقي المجالات. نحن الآن نسير نحو عالمٍ الأُمِّيُّ فيه هو غير القادر على فهم الكومبيوتر والتعامل معه. ولهذا، لا بد من تبسيط هذه المعلومات البرمجية والتقنية وفك تعقيدها ليكون بمقدور الجميع فهمها واستيعابها.