Tag

لغات

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

By Uncategorized No Comments

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

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

كانت أوَّل رِمازات(شِفرات/أكواد) حاسوبيَّة مُتَخَصِّصَة بِتطبيقاتها. وَفي العُقود الأولى من القرن العشرين، اعتمدت الحِسابات الرقميَّة على الأعداد العُشْرِيَّة. أُدرِكَ أخيرًا أنَّه يمكن تمثيل المنطق بِالأرقام، وليس بالكلمات فحسب. كَمثال، كان ألونزو تشرتش قادرًا على التعبير عن المُعامِل لَمْدَا كَصيغةٍ. كانت آلة تورنغ خُلاصة عمليَّة آلة التعليم-بالنقر، كَمثال، كالمُستخدم في شركات الهاتف. أسَّسَت آلات تورنغ لِتخزين البرامج كَبيانات في هيكلة فون نيومان لِلحواسيب بِتمثيل الآلة عبر عدد محدود. وَبِعكس المُعامِل لمدا، فإنَّ رِماز تورنغ لا يخدم اللُّغات عالية المُستوى جيِّدًا—استخدامها الأساسيّ هو بِالتحليل الصارِم لِـنظرية التعقيد الحسابي.

مثل العديد من «البدايات» في التاريخ، يَصعُب تحديد أوَّل لغة برمجة مُعاصِرة. منذ البداية، عَرَّفت تقييدات العَتَاد اللُّغة. سمحت البطاقة المُثَقَّبَة بِـ 80 عامودًا، لكن كان من الصعب استخدام بعض الأعمدة لِترتيب رقم على كُلّ بطاقة. تضمَّنت فورتران بعض الكلمات المِفتاحيَّة الشبيهة بالكلمات الإنكليزيَّة، مثل «إذا» “IF”، «إذهب إلى» “GOTO” وهي جمعٌ للأحرف في عبارة (go to) وَ«اسْتَمِر» “CONTINUE”. إنَّ استخدام الطبلة المِغناطيسيَّة لِلذاكرة يعني أَنَّ برامج الحاسوب تحتاج أيضًا لِأن تكون مُدخلة مع دَوَران الطبلة. لِهذا كانت البرامج أكثر اعتماديَّة على العَتَاد.

لِبعض الأشخاص، إنَّ أوَّل لغة برمجة مُعاصِرة تعتمد على مَقروئيَّتها بِالنسبة لِلإنسان وَكميَّة الطاقة اللَّازمة قبل إتاحة الحالة المُسمَّاة «لغة برمجة». كان لِـمحرك الاختلاف(محرك التباعد) لِجاكوارد لومز وَكارلس بابّاج لغات بسيطة وَمحدودة للغاية من أجل وصف الأفعال الَّتي يجب أن تقوم بها تلك الآلات. يُمكن لِلشخص اعتبار ثُقَب الحُفَر على طُومار(دَرج) عازِف البيانو كَـلغة محدَّدة النِطاق، وَلو لم تكن مُصَمَّمَة لِلإستهلاك(الاستفادة) البشريّ.

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

صُمِّمَت أوَّل لغات البرمجة لِإيصال التعليمات إلى الحاسِب في الخمسينيَّات 1950. صُمِّمَت أقدم لغة برمجة عالية المُستوى لِلحاسِب بين عامي 1943 وَ 1945، دُعيت بلان كال كيل، طَوَّرها كونراد زوس من أجل زد3. لكنَّها لم تُنَفَّذ حتَّى 1998 وَ 2000.

عُرضت لغة البرمجة رِمازٌ(شِفرةٌ) قصيرٌ في عام 1949 من قِبَل جون ماكلي، كانت مِن أوائل مَن اللُّغات عالية المُستوى الَّتي طُوِّرت لِلحاسِب الإلكترونيّ. بعكس لغة الآلة، تُمَثَّل تعابير إفادات statements لغة رِمازٌ قصير الرِّياضيَّاتيَّة بِصيغةٍ مفهومة. لكن، يجب أن يُترجم البرنامج إلى لغة الآلة في كُلِّ مرَّةٍ يُشَغَّل، مِمَّا يجعل العمليَّة أبطأ من تشغيل رِماز(شِفرة) الآلة المكافئة للبرنامج.

يُشَغِّل مانشستر مارك 1 برنامجًا مكتوبًا بِالـأوتوكود في عام 1952.
طُوِّرَت أوتوكود في جامعة مانشستر في أوائل الخمسينيَّات. هي لغة برمجة تستخدم مُجَمِّعًا لِتحويل اللُّغة آليًّا إلى لغة الآلة. طُوِّرَت أوَّل شِفرة(رِماز) وَمُجَمِّع في 1952 لِحاسوب مارك 1 في جامعة مانشستر وَتُعتَبَر أوَّل لغة برمجة مُجَمَّعَة عالية المُستوى.

طُوِّرَت ثانِ أوتوكود من أجل مارك 1 من قِبَل رالف أنتوني «طوني» بروكر في 1954 وَسُمِّيَت «أوتوكود مارك 1»(Mark 1 Autocode). وَأيضًا طَوَّرَ طوني بروكر أوتوكود من أجل فيرَّانتي ميركيوري في الخمسينيَّات 1950s بالتعاون مع جامعة مانشستر. ابتُكِرَ إصدارٌ من أجل الحاسِبة الآليَّة الإلكترونيَّة متأخِّرة التخزين 2 (EDSAC) من قِبَل دايفيد فيلدينغ هارتلي من مختبر الرِّياضيَّات في جامعة كامبردج في 1961. عُرفت بِاسم EDSAC 2 Autocode، كانت تطوُّرًا مُباشرًا من ميركيوري أوتوكود مُهيَّئةً لِظروفٍ خاصَّة، وَلوحظت بسبب تمثيل الشِّفرة الكائنيَّة وَتشخيصات اللُّغة المصدريَّة حيثُ كانت مُتَقَدِّمَة في وقتها. تطويرٌ مُعاصِرٌ موازٍ لكن مُنفصل، كانت أطلس أوتوكود تُطَوَّر من أجل آلة أطلس 1 لِجامعة مانشستر.

عام 1954، اخترع جون باكوس لغة الفورتران في آي بي إم؛ كانت أوَّل لغة عالية المُستوى واسعة الاستخدام تمتلك تنفيذات إجرائيَّة functional implementation، بِعَكسِ التَّصميم الورقيّ. ماتزال لُغَةً شعبيَّة لِلـحوسَبة عالية الأداء وَتُستَخدم لِلبرامج كمعيار وَترتيب لِـأسرع الحواسيب الفائقة العالميَّة.

لغة برمجة أخرى مبكِّرة ابتُكرت من قِبَل جريس هوبر في الولايات المتحدة، وَدعيت فلو ماتيك. لقد طُوِّرَت من أجل يونيفاك 1 في ريمنغتون راند خلال الفترة بين 1955 وَ 1959. وجدت هوبر أنَّ عُملاء معالجة بيانات العمل لم يكونوا مرتاحين للترقيم الرِّياضيَّاتيّ، وَفي بداية عام 1955 قامت هي وَفريقها بكتابة تخصيصات للغة برمجة إنكليزيَّة وَنفَّذوا نموذجًا بِدئيًّا. أصبح مجمِّع فلو ماتيك مُتاحًا للعامَّة في بداية عام 1958 وَاكتمل في عام 1959. كان لِـفلو ماتيك تأثير كبير على تصميم كوبول، وَقد انحصر استخدامها في ذلك الحين على إدارة معدات وتجهيزات القوات الجوية الأمريكية.

لغات أخرى ماتزال تستخدم ليومنا هذا مُتضمَّنةً ليسب (1958) الَّتي اخترعت من قِبَل جون مكارثي وَكوبول (1959) الَّتي أنشئت من قِبَل لجنة المجال القصير(Short Range Committee). مَعلَمٌ آخر في آواخر الخمسينيَّات(1950) هو نشر «لغة جديدة للخوارزميَّات» من قِبَل لجنة علماء الحاسوب الأمريكيَّة الأوروبيَّة؛ دعيت ALGOL 60 (أخذ الاسم من ALGOrithmic Language «لغة خوارزميَّاتيَّة»). هذا التَّقرير يُعَزِّز العديد من الأفكار الحائمة في وقتنا هذا وَيُبرِز ثلاثة إبداعات للغة مفتاحيَّة:

بنية طوب مُعَشِّشَة: يمكن لسلاسل الشفرات وَالإعلانات(التصريحات) أن تُجَمَّع ضمن طوب (برمجة) دون الحاجة لأن تُحَوَّل إلى إجراءات منفصلة وَمسمَّية بوضوح؛
الحيِّز المُعجميّ: طوب له متغيراته وإجراءاته وَدوالُّه الخاصَّة وَمخفيّ عن الشِّفرات خارجه، وهذا ما يُدعى بإخفاء البيانات.
ابتكار جديد قريب من هذا، كان عن كيفيَّة وصف اللُّغة:

استُخدمت صيغة باكوس نور(ترقيم رياضيَّاتيّ مضبوط) لوصف نحويَّة اللُّغات. وتقريبًا، كل لُغات البرمجة اللّاحقة استَخدَمت العديد من صيغ باكوس نور لوصف قواعد حرية السياق في نحويَّاتِها.
كان للغة ألغول 60 تأثيرًا بائِنًا على تصاميم اللُّغات اللَّاحقة، وقد أصبح لبعضها شعبيَّة واسعة. وقد صُمِّمَ نظام بورّوفز الكبير ليكون امتدادًا فرعيًّا لِألغول.

استمرَّت أفكار ألغول المِفتاحيَّة مُنتجةً ألغول 58 :

أصبحت النَّحَويَّة وَالدلالات أكثر توافقيَّة، وَبِروتينٍ مجهولٍ بزغ نظام الكتابة التَعَاْوُدِيَّة recursive بدوالٍّ أعلى تنظيمًا.
لم يُعَرَّف فقط جزء «حريَّة السِّياق» بل أيضًا عُرِّفَت رسميًّا كل نَحَويَّة ودلالات اللُّغة بشروط قواعد فان ويجنجارد؛ وَهي شكليَّات صُمِّمَت خِصِّيصًا لِهذا الغرض.
إنَّ الاستخدام القليل لِميِّزات لغة ألغول 68 (كمثال، الكُتَل(الطوب) المُتلاقية وَالمُتوازِية) وَنظامها المُعَقَّد من اختصارات الدلالات وَتحديد الأنواع الإجباريّ آليًّا جعلتها لغةً غير شعبيَّة لدى المُستخدمين وَاكتسبت سُمعَةً بِكونها لُغَةً «صعبة». وَقد خرج نيكلاوس ويرث من اللَّجنة لِيُنشِئ لغةً أبسط هي باسكال.

بعض اللُّغات البارزة الَّتي طُوِّرت في هذه الحِقبة:

1951 – لغة التجميع الإقليمية
1952 – أوتوكود (لغة برمجة)
1954 – لغة معالجة المعلومات (مُمَهِّدَةَ لِـليسب)
1955 – فلو ماتيك (أوصلتنا للغة كوبول)
1957 – فورتران (أوَّل مُجَمِّع)
1957 – كومتران (طَليعة لِكوبول)
1958 – ليسب
1958 – ألغول 58
1959 – تقنية تجميع آلية كليا (مُمَهِّدَةَ لِـكوبول)
1959 – كوبول
1959 – آر بي جي
1962 – إيه بي إل(أخذت من: A Programming Language، اختصارًا: APL)
1962 – سيمولا
1962 – سنوبول
1963 – لغة برمجة متحدة (مُمَهِّدَةَ لِـسي)
1964 – حانة (بيئة حوسبية)
1964 – بيسيك
1964 – لغة البرمجة واحد
1966 – نظام متجر جونياك المفتوح
1967 – لغة البرمجة الأساسية المختلطة (مُمَهِّدَةَ لِـسي)