تاريخ البرمجة

القصة المذهلة لنشأة أول لغة برمجة في التاريخ

بماذا ولماذا وكيف كتبوا أول لغة برمجة في العالم .. ؟

هناك أول شيء في كل شيء .. 

في بداية شغفي بها لم أكن أحسب أنني سأتورط معها في علاقة عاطفية طويلة الأمد ستقلب حياتي بالكامل ، لقد كنتُ طفلاً فضولياً وهي كانت تملك الكثير من الأجوبة . 

هذه كانت حكايتي مع البرمجة – تلك العجوز ..

بدأت أول خيوط الحكاية قبل سنوات حين اكتشفت صدفة  أن هناك برنامجاً يمكن من خلاله صناعة البرامج ! وهذا البرنامج يُدعى visual basic ، ولسذاجتي آنذاك كنت أتخيل أن الفرق بيني وبين “بيل جيتس” هو إتقان هذا البرنامج فقط . حرفياً كنت أخطط للسيطرة على العالم !

كل هذه الأحلام سرعان ما تحطمت على واجهة الـ VB القبيحة ، ومن أول كود وأول debug بدأتُ أدرك فِعلاً أن علاقتي بالبرمجة لم تبدأ بشكل صحيح ، قطعاً لا يجب أن تحب شيءً –أوشخصاً- ما قبل أن تتعرف عليه جيداً . وقبل أن تتورط في علاقة غرامية من هذا القبيل يجب أن تعرف أصل المحظوظة وفصلها !

نعم – هكذا بدأت في طرح المزيد من الأسئلة الوجودية حول عشيقتي العجوز، وأكثر هذه الأسئلة إثارةً هو :

  • بما أننا نعرف البرامج التي يصنعون بها البرامج ، تباً كيف صنعوا هذه البرامج التي يصنعون بها البرامج أصلاً !؟ و كيف كتبوا أول لغة برمجة في العالم ؟!!

هذا هو السؤال الكبير الذي يراود كل المبرمجين في أيامهم الأولى ،وفي بداية علاقتهم بعلوم الحاسب . هنا ينتهي الجزء الهزلي من المقال ويبدأ الجزء العلمي .

” كيف صنعوا هذه البرامج التي يصنعون بها البرامج ؟ “
هذا السؤال رغم ركاكته هو أعمق مما تتخيل ، ولن يستطيع أحدٌ الإجابة عنه بشكل علمي حاسم إلا عن طريق قراءة التاريخ ومعرفة كيف صنعوا أول كمبيوتر وأول لغة برمجة وأول برنامج ..

أول حاسوب في التاريخ :

المحرك التحليلي للعالم تشارلز بابيدج (1834)

في القرن التاسع عشر وقبل اختراع الحاسبات هل تتخيل كيف كان حل المعادلات الرياضية والعمليات الحسابية أمراً مثيراً للإحباط  ؟ فالعمليات التي تحلها آلة حاسبة بسيطة اليوم في أقل من ثانية كان حلها آنذاك يأخذ ساعاتٍ طويلة بل أياماً ! هذا ما دفع المهندس والرياضي تشارلز بابيدج ( Charles Babbage ) إلى التفكير في ابتكار ما أسماه ” المحرك التحليلي ” لأغراض تتعلق بحل بعض المعادلات الرياضية .

أول كمبيوتر في العالم

يعتبر ” المحرك التحليلي ” أول كمبيوتر في التاريخ حيث أنه لم يكن مجرد آلة للعد والحساب ، بل ماكينة متعددة الإستخدامات شبيهة بالحاسب الآلى الحديث من حيث المفهوم والوظائف ، آلة تقبل المدخلات والأوامر ، وتمتلك ذاكرة لحفظ النتائج . ويمكن التحكم فيها عبر البطاقات المثقبة ( punched cards ) .

ما هي البطاقات المثقبة ؟

البطاقات المثقبة هي أول لغة برمجة
المصدر : IBM

البطاقة المثقبة ( Punched card) هي قطعة ورقية تستخدم لتخزين المعلومات عن طريق وجود الثقوب أو غيابها في مواقع محددة منها . ويعود تاريخ ابتكارها إلى العصور الوسطى وصارت بعد ذلك تستخدم في الآلات الميكانيكية ، ثم استخدمت بعد ذلك في إدخال البيانات إلى الحواسيب الأولى .

أول مُبرمج في التاريخ وأول برنامج كمبيوتر :

“آدا لوفلايس” وخوارزمية بيرنولي (1841 – 1842)

بعد أن وضع “بابيدج” البنية الأساسية للكمبيوتر الأول ، جاءت تلميذته الكاتبة وعالمة الرياضيات آدا لوفلايس ( Ada Lovelace ) بفكرة ثورية مفادها أن قُدرات هذه الآلة وإمكانياتها تتجاوز العد والحساب إلى حل المشاكل وتنفيذ الخوارزميات .

سنة 1841 طلب “بابيدج” من “آدا” بحكم نبوغها في الرياضيات واللغة ترجمة مقالٍ علمي عن محركه التحليلي ،للمهندس الإيطالي “لويجي مينابريا” . في الترجمة أضافت “آدا” مجموعة من الملاحظات التفصيلية التي عرضت فيها أول خوارزمية مصمَّمة ليتم تنفيذها بواسطة الآلة ، والتي تعتبر أول برنامج حاسوب في التاريخ حيث كان الغرض منها حِساب أعداد برنولي.

Ada Lovelace

آدا لوفلايس لا تعتبر أول مبرمجة حاسوب في التاريخ لأنها كتبت أول برنامج (software) ، بل لأنها كانت الوحيدة التي آمنت في القرن التاسع عشر بأن الآلات يمكنها أن تنفذ أوامر مفصلة و وضعت مجموعةً من الأسُس والمباديء لذلك .

أول حاسوب آلي قابل للبرمجة (1941)

بعد قرن من آلة “بابيدج” تمكن المهندس الألماني كونراد زوسه ( Konrad Zuse ) من تحقيق أكبر طفرة تكنولوجية في القرن العشرين ، عبر ابتكاره أول حاسب آلي بالكامل سنة 1941 وتقديمه للحكومة الألمانية باسم حاسوب Z3 ، وكان يزن أكثر من ألف كيلوغرام ويشغل مساحة نصف غرفة .

كونراد زوس
كونراد زوس و حاسوب z3 – المصدر

حاسوب z3 في الأساس تجسيدٌ لمبدإ ” المحرك التحليلي ” لبابيدج ،مع دمج أفكار “آدا لوفليس” عن الآلة القابلة للبرمجة ، ولكن في جهاز رقمي تطبيقي يمكن كتابة برامجه في البطاقات المثقبة .

إلى غاية 1941 بقيت برمجة الحاسب تتم بشكل بدائي عبر البطاقات المثقبة، ولكن انتقال البرمجة من الحاسب الميكانيكي إلى الحاسب الآلي سيمنحها تطورا غير محدود فيما بعد .

بعد انتهائه من 3z سيبدأ “كونراد زوسه” في تطوير أول لغة برمجة عالية المستوى لجهازه z3 وسيسميها “بلان كال كيل” ، ولكن الحرب العالمية الثانية ستؤدي فيما بعد إلى تدمير حاسوبه بالكامل وتوقف تطوير هذه اللغة .

لغات البرمجة عالية المستوى هي اللغات القريبة من اللغات البشرية مثل السي وبايثون ، بخلاف اللغات المنخفضة المستوى مثل لغة الآلة ولغة التجميع .

لغات الجيل الأول و الثاني من لغات البرمجة :

النظام الثنائي ولغة التجميع (1947)

ظهرت لغات الجيل الأول مع ظهور الحواسيب الإلكترونية الأولى قُبيل الخمسينيات من القرن الماضي ،و تستخدم النظام الثنائي (Binary System) لتمثيل الأوامر حيث أن الكمبيوتر لا يفهم إلا حالتين فقط هما : مرور التيار الكهربائي( 1) أو عدم مروره (0) ،وتسمى هذه الأوامر المكتوبة بنظام العد الثنائي لغة الآلة ( machine language ) .

مجمع الأسمبلي

إلا أن هذا الجيل الأول من لغات البرمجة نظراً لصعوبتها ليست للإستخدام الآدمي ، ممّا دفع العلماء إلى ابتكار الجيل الثاني من لغات البرمجة وتدعى لغات التجميع ( assembly ) ، وهي لغات تهدف أساساً إلى إستبدال الرموز الرقمية في لغة الآلة بمجموعة من الحروف والكلمات المختصرة ، ثم استخدم مُجمع ( assembler ) لترجمة هذه الرموز في المراحل الأخيرة إلى لغة الآلة, واعتُبرت لغة الأسمبلي قفزة ثورية في لغات البرمجة .

الجيل الثالث والرابع من لغات البرمجة :

اللغات العالية المستوى واللغات الكائنية التوجه (1957)

رغم أن لغات التجميع كانت جذابة في مفهومها ولقيت انتشاراً عالمياً واسعاً إلّا أنها كانت تواجه مجموعة من العقبات منها صعوبة صيانة الكود والحاجة إلى إرفاق الكثير من التفاصيل المكررة ، ناهيك عن كون البرمجية المكتوبة بالأسمبلي تعتمد على الآلة التي يتم تنفيذها عليها ولا يمكن استخدامها على آلة أخرى ، إلا بعد إعادة كتابتها لتتواءم معها .
هذه المعضلات دفعت مهندسي الحاسب إلى ابتكار جيل جدبد من لغات البرمجة أكثر بساطةً وأقلّ تجريداً ، ففي عام 1957 قام العبقري جون باكوس بابتكار لغة الفورتران (fortran) في IBM وتعتبر أول لغة برمجة عالية المُستوى وواسعة الاستخدام وتتضمن تعليمات إجرائية (functional implementation) . ثم تلتها لغتي ليسب (lisp) و ألغول 58 (algol 58) سنة 1958 ، ثم لغة الكوبول (cobol)في السنة التي تلتها .

لغة فورتران ولغة السي
لغة فورتران ولغة السي – حلقات التكرار

في سنة 1960 قام العالمين النرويجين “أولي يوهان دال” و “كريستين نيغارد” بابتكار أول لغة برمجة كائنية التوجه (OOP) واسمها لغة سيمولا (Simula) ، ثم طُورت لغة السي C التي تعتبر واحدة من أعرق وأقوى لغات الجيل الثالث من قبل دينيس ريتشي و كين تومسون بين عامي 1969 و 1973 لتفتح المجال للجيل الرابع من لغات البرمجة التي استفادت من لغات الجيل السابق وطورتها ، منها :

1991 – بايثون
1991 – فيجوال بيسك
1993 – روبي
1993 – لوا
1993 – آر

1995 – جافا
1995 – جافا سكريبت
1995 – بي إتش بي
2000 – السي شارب
2003 – سكالا

2011 – Kotlin
2014 – Hack
2014 – Swift
2016 – Ring


إذن بأي لغة برمجة تمت برمجة البرنامج الذي تمت كتابة لغة البرمجة عليه ؟!

أولاً : يمكنك الإستنتاج مما سبق أنّ مفهوم لغات البرمجة أو ” الخوارزميات التي تفهمها الآلة ” ظهر بشكل مبكر وقبل ظهور الحواسيب الآلية حتى ! وكان محاولة منا للتحكم في الآلة الميكانيكية أو البخارية فاستخدمنا مثلاً البطاقات المثقبة (punched cards) لتزويد الآلة بالمدخلات .

ثانياً : بعد اختراع الحاسوب الإلكتروني صار بالإمكان استخدام الكهرباء لتمرير التعليمات للحاسب وتنفيذها عبر النظام الثنائي (0.1) ، ومثلنا العمليات المنطقية باستخدام بالصفر والواحد الذي يمثلان مرور التيار الكهربائي أو عدمه .

  ثالثاً : إستخدمنا النظام الثنائي (الصفر والواحد) لبرمجة أول مُجمِّع لنتمكن بواسطته من كتابة العمليات الحسابية والمنطقية برموز وأحرف بسيطة فيقوم هو بترجمتها إلى ما يقابلها من الآحاد والأصفار ثم ندخلها للحاسب .

رابعا : قمنا بتطوير المجمّعات واستخدامها لكتابة برمجيات تترجم لنا التعليمات آلياً إلى لغة الآلة وسميناها مترجمات (compilers) ، وبدأنا باختراع لغات البرمجة المتنوعة عبر إنشاء مترجمات تحول تعليمات هذه اللغات إلى لغة التجميع التي تحولها بدورها الى اللغة الوحيدة التي يفهمها الحاسب ألا وهي الصفر والواحد ، ثم تطورت لغة التجميع بنفسها إلى لغات تترجم التعليمات بشكل مباشر إلى النظام الثنائي .

  خامساً : وأخيراً إستخدمنا بعض اللغات السابقة لكتابة لغات برمجة جديدة ، مثلاً تم استخدم لغة البرمجة المختلطة BCPL لكتابة لغة البرمجة بي B التي كُتبت لغة السي Cبواسطتها ، واليوم تم استخدام لغة السي لكتابة معظم لغات البرمجة الشهيرة الآن كالسي++ و بايثون والجافا والبي اتش بي والقائمة طويلة ..

 

كلمات أخيرة ..

تشارلز بابيدج أوقفت الحكومة البريطانية تمويل مشروعه وشككت في نزاهته ، ورغم أنه مات ولم يكمل بناء ما يطمح إليه إلا أن العِلم سيخلده كمبتكر أول حاسوب في التاريخ .

آدا لوفلايس دونت ملاحظاتها وأفكارها قبل أن يباغتها المرض والموت وهي في سن السادسة والثلاثين ، ماتت قبل أن يتم إنهاء آلة بابيدج ولم تبرمج أية آلة في حياتها ، ومع هذا خلدها التاريخ كأول مبرمجة في التاريخ .

كونراد زوسه عاش حياته تحت قهرالدكتاتورية النازية وحين قام بابتكار أول حاسوب آلي في التاريخ بعد سنوات متواصلة من العمل والسهر تم قصف مقر هاد الحاسب من طيران الحلفاء وتم تدميره بالكامل .

هذه عينة بسيطة فقط من أخبارهم ، ورسالة لمن يزعم أن كل قصص النجاح في الأرض تحدث لأن ظروف أصحابها كانت مناسبة ومهيئة ..

 

 

الوسوم

محمد هشوم

مبرمج عربي ، مهتم بالذكاء الصنعي وخبير بيانات .. ومدون !

‫10 تعليقات

  1. مرحبا ..مقال جميل دمتم مبدعين .
    لماذا تكتبون الذكاء الصنعي و ليس الصناعيّ – هل هو خطا مطبعي موجود في اعلى الموقع ارجو ان تصلحوه

    1. مرحبا تقوى ، يستغرب الكثير من القراء اختيارنا لهذا المصطلح ولكنك أول من يسأل لماذا “ذكاء صنعي” وليس “ذكاء اصطناعي” . الجواب أقتطفه من كتاب “منطق الضبابية والعلوم الإنسانية والاجتماعية (مقاربة نظرية – تطبيقية)
      ” للأستاذة شهيرة شرف :
      ذكاء صنعي

  2. موضوع جميل جدا
    – كيف برمجة اول لغة برمجية
    هه يجب ان يدرس هذا السؤال في مادة الفلسفة وتكتب كتب ومجلدات عليه

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
إغلاق