كيف برمجوا أول لغة برمجة؟
تم طرح السؤال على موقع Quora بالعربية والإجابة أخذت من بروفايل أحمد نصر
بشكل عام يجب أن نفهم أمراً: الحاسوب هو أكثر من ألف طبقة من التجريد!
ماذا نعني بالتجريد؟.. التجريد هي تلك العملية التي نحول فيها عمليات الحوسبة الرقمية وأوامر الآلة والعتاد، إلى صورة أقرب إلينا نحن البشر.
بالتالي، فلغات البرمجة تتطور عبر الزمن من الشكل التقني القديم، وصولاً إلى أشكال أقرب وأقرب من لغة الإنسان المحكية.
دعنا نروي القصة إذاً، أولى الحواسيب على الاطلاق كانت آلات حاسبة ميكانيكية، تستطيع حساب الارقام وإجراء عمليات الجمع والطرح بشكل ميكانيكي، لم تكن هذه الحواسيب إجمالاً قابلة للتخصيص والبرمجة على النحو الحالي، إنما كانت برمجتها مبنية فيها: شكل التروس والقطع الميكانيكية هو البرنامج.
لاحقاً، خلال الحرب العالمية الثانية، استخدم الألمان آلة شهيرة Enigma لتشفير رسائلهم، وكان لأجل كسر الشفرة مطلوباً إيجاد آلات قادرة على إجراء حسابات أسرع، وقابلة للتخصيص وتغيير البرمجة كل يوم بصورة من الصور، فكانت آلة ألان تيورنج سميت bombe.
كانت برمجة آلة آلان تيورنج تتم بتغيير بعض قطع، تغيير بعض التوصيلات الكهربية بين أجزائها، بالاضافة إلى كتابة برامج على أفلام التثقيب.
وأفلام التثقيب هي عبارة عن بطاقات تتم الكتابة عليها بواسطة الثقوب، بطريقة تشبه برايل، يصبح الثقب 1 وغيابه 0، تترجم في الآلة إلى تعليمات.. إلى هذه المرحلة كان الأمر بعد لا يسمى "برمجة".. إنما هو تشغيل، فالشخص الذي يقوم بكتابة البرامج وتشغيلها هو "مشغل للحاسوب".
استخدمت هذه الطريقة في برمجة الحواسيب بعدها لسنين، فيما تطورت بعدها الحواسيب ومكوناتها أيضاً، فبدلاً من المفاتيح الميكانيكية استخدمت الصمامات المفرغة ثم الترانزيستور وثورته في السبعينات، إلى أن بدأت في الظهور فكرة "نظم التشغيل"، لا حاجة لمشغل!
ليكن هناك نظاماً مبرمجاً بشكل مسبق ليدير عمل العتاد.
حسناً، إلى هذه اللحظة، كيف كان علماء الكمبيوتر يكتبون البرامج؟.. بلغة الآلة كما خمنت، نفس اللغة التي يتم حسبها ثقب البطاقات في آلة تيورينج.. لكن لجعلها مقروءة أكثر، ظهرت لغة التجميع.
تعتبر لغة التجميع هي الطبقة الأولى من التجريد، وكان ترجمتها من وإلى لغة الآلة يتم يدوياً، في تلك الفترة لم يكن ثم لغات برمجة أخرى، وكانت النظم الأولى مكتوبة بها في ذلك الوقت، لاحقاً، ظهرت الحاجة للغات برمجة عالية المستوى.. لماذا؟
لأن لغة التجميع، تخاطب الآلة بشكل مباشر، فالتعليمات الموجودة في لغة التجميع لا تعبر عن تعليمات لوظائف حاسوب، إنما هي تعليمات توجه للمعالج بشكل مباشر، ولو اختلف المعالج في أي وقت، فلن يعمل البرنامج!
فكيف يمكن للمبرمج توزيع برنامجه إذا كان مكتوباً لنوع بعينه من المعالجات؟
هنا ظهرت الحاجة للغات برمجة عالية المستوى، نحن سنصمم شكل معين من البيانات الكتابية syntax، ونبني برنامجاً يتعرف على هذا الشكل الكتابي compiler من ثم يقوم هذا البرنامج بترجمة هذا لملف الكتابي إلى ملف تشغيلي يحوي كل المطلوب بلغة الآلة.
وبعد محاولات عديدة، ظهرت C، وهي تعد علامة في تاريخ البرمجة، إذ لم يسبقها لغة بهذا الكمال..
وبذلك أصبح ممكناً للمبرمجين أن يكتبوا النظم والبرامج المختلفة بلغة سي، وتوزيع الكود وإعادة ترجمته إلى لغة الآلة على مختلف المعالجات، بل، وأن يقوموا من لغة سي ببناء لغات ذات مستوى أعلى، تحتوي على مكتبات جاهزة وأدوات تختصر على المبرمجين كثيراً من التفاصيل.
قطعت لغات البرمجة اليوم شوطاً طويلاً جداً في هذا الاتجاه، ولا تزال في تطور، والفكرة دائماً في التجريد، اختصار التفاصيل التقنية، إعادة استخدام الأكواد المكتوبة مسبقاً وتسهيل الكود.
تابعوا موقع Quora بالعربية على صفحات التواصل الاجتماعي: صفحة Quora بالعربية على فيس بوك وصفحة Quora بالعربية على تويتر