ALGOL 60
لغة ALGOL 60 ( اختصارًا لـ Algorithmic Language 1960 ) هي إحدى لغات برمجة الحاسوب من عائلة ALGOL . وقد جاءت بعد ALGOL 58 التي قدمت كتل التعليمات البرمجية وأزواج ` <code> < ...beginend
استند نيكلاوس ويرث في تطوير لغة البرمجة ALGOL W الخاصة به إلى لغة ALGOL 60 قبل أن ينتقل إلى تطوير لغة باسكال . كان من المفترض أن تكون ALGOL W الجيل التالي من ALGOL، لكن لجنة ALGOL 68 فضّلت تصميمًا أكثر تعقيدًا وتطورًا بدلًا من نسخة مبسطة من ALGOL 60. تُسمى إصدارات ALGOL الرسمية نسبةً إلى سنة نشرها الأولى. تختلف ALGOL 68 اختلافًا جوهريًا عن ALGOL 60، وقد وُجهت إليها بعض الانتقادات لهذا الاختلاف، ولذلك يُشير مصطلح "ALGOL" عمومًا إلى لهجات ALGOL 60.
التقييس
كانت لغة ALGOL 60 - إلى جانب لغة COBOL - أول اللغات التي سعت إلى التوحيد القياسي.
- ISO 1538:1984 لغات البرمجة - ALGOL 60 (مستقرة)
- ISO/TR 1672:1977 تمثيل الأجهزة للرموز الأساسية في لغة ALGOL ... (تم سحبها الآن)
تاريخ
استُخدمت لغة ALGOL 60 بشكل رئيسي من قِبل علماء الحاسوب الباحثين في الولايات المتحدة وأوروبا. إلا أن استخدامها في التطبيقات التجارية واجه صعوباتٍ بسبب غياب معايير الإدخال والإخراج في وصفها، وقلة اهتمام كبرى شركات تصنيع الحواسيب بها. ومع ذلك، أصبحت ALGOL 60 معيارًا لنشر الخوارزميات، وكان لها أثرٌ بالغٌ على تطوير لغات البرمجة لاحقًا.
قام جون باكوس بتطوير طريقة باكوس للشكل الطبيعي لوصف لغات البرمجة خصيصًا للغة ALGOL 58. وقد تم تنقيحها وتوسيعها بواسطة بيتر نور للغة ALGOL 60، وبناءً على اقتراح دونالد كنوث ، أعيد تسميتها إلى شكل باكوس-نور . [ 1 ]
بيتر نور: "بصفتي محررًا لنشرة ALGOL، انخرطت في المناقشات الدولية حول اللغة، وتم اختياري لأكون عضوًا في المجموعة الأوروبية لتصميم اللغة في نوفمبر 1959. وبهذه الصفة، كنت محررًا لتقرير ALGOL 60، الذي صدر نتيجة لاجتماع ALGOL 60 في باريس في يناير 1960." [ 2 ]
حضر الأشخاص التالي ذكرهم الاجتماع في باريس (من 11 إلى 16 يناير):
- فريدريش لودفيج باور ، بيتر ناور ، هاينز روتيسهاوزر ، كلاوس ساملسون ، برنارد فوكوا ، أدريان فان فيجنجاردن ، ومايكل وودجر (من أوروبا)
- جون وارنر باكوس ، جوليان جرين ، تشارلز كاتز ، جون مكارثي ، آلان جاي بيرليس ، وجوزيف هنري ويجستين (من الولايات المتحدة الأمريكية).
قدّم آلان بيرليس وصفًا حيًا للاجتماع: "كانت الاجتماعات مُرهِقة، لا تنتهي، ومُبهجة. كان المرء يشعر بالضيق عندما تُرفض أفكاره الجيدة مع الأفكار السيئة للآخرين. ومع ذلك، استمرّ الاجتهاد طوال الفترة. كان التناغم بين الثلاثة عشر شخصًا ممتازًا."
لم تكن اللغة في الأصل تتضمن خاصية الاستدعاء الذاتي . وقد أُضيفت إلى المواصفات في اللحظة الأخيرة، رغماً عن رغبة بعض أعضاء اللجنة. [ 3 ]
اجتمع العديد من مؤلفي التقرير الأصلي في أبريل 1962 لحل المشكلات التي نشأت. وأسفر عملهم عن نشر "التقرير المنقح حول لغة الخوارزميات ALGOL 60". [ 4 ]
وقد تم تقديم المزيد من التوضيحات وإدراج إجراءات الإدخال/الإخراج من قبل المجموعة العاملة 2.1 التابعة للجنة الفنية 2 في الاتحاد الدولي لمعالجة المعلومات. وقد نُشرت هذه الجهود تحت عنوان "التقرير المعدل عن لغة الخوارزميات ALGOL 60" في عام 1975. [ 5 ]
ألهمت لغة ALGOL 60 العديد من اللغات التي تلتها. وقد علّق توني هوار قائلاً: "هذه لغة متقدمة جدًا على عصرها، لدرجة أنها لم تكن مجرد تحسين للغات السابقة فحسب، بل كانت أيضًا أفضل من جميع اللغات التي تلتها تقريبًا." [ 6 ] [ 7 ]
الجدول الزمني لتطبيقات ALGOL 60
حتى الآن، كان هناك ما لا يقل عن 70 إضافة وتوسيع واشتقاق ولغات فرعية من ALGOL 60. [ 8 ]
| اسم | سنة | مؤلف | ولاية | وصف | وحدة المعالجة المركزية المستهدفة |
|---|---|---|---|---|---|
| X1 ALGOL 60 | أغسطس 1960 [ 9 ] | إدسجر دبليو ديكسترا وجاب أ. زونفيلد | أول تطبيق للغة ALGOL 60 [ 10 ] | إلكترولوجيكا إكس 1 | |
| الغول | 1960 [ 11 ] | إدغار تي. آيرونز | ALGOL 60 | مركز السيطرة على الأمراض 1604 | |
| بوروز ألغول (عدة أنواع) | 1961 | شركة بوروز (بمشاركة هوار ، وديجكسترا ، وآخرين) | أساس أجهزة الكمبيوتر من نوع Burroughs (والآن أجهزة الكمبيوتر القائمة على Unisys MCP ) | أنظمة بوروز الكبيرة وأنظمة متوسطة المدى | |
| قضية ALGOL | 1961 | تم التعاقد على Simula في الأصل كامتداد للمحاكاة لبرنامج Case ALGOL | يونيفاك 1107 | ||
| غوغول | 1961 | ويليام م. ماكيمان | لنظام المشاركة الزمنية ODIN | PDP-1 | |
| DASK ALGOL | 1961 | بيتر ناور ، يورن ينسن | ALGOL 60 | DASK في Regnecentralen | |
| فطر سميل | 1962 | تورجيل إيكمان ، كارل إريك فروبيرج | ALGOL 60 | معهد سميل للتعلم الآلي في جامعة لوند | |
| جير ألغول | 1962 | بيتر ناور ، يورن ينسن | ALGOL 60 | GIER at Regnecentralen | |
| دارتموث ALGOL 30 [ 12 ] | 1962 | توماس يوجين كورتز ، ستيفن جيه جارلاند ، روبرت إف هارجريفز، أنتوني دبليو كناب ، خورخي لاسير | ALGOL 60 | LGP-30 | |
| ألكور ماينز 2002 | 1962 | أورسولا هيل-ساميلسون، هانز لانغماك | سيمنز 2002 | ||
| ألكور-إلينوي 7090 | 1962 [ 13 ] [ 14 ] | مانفريد بول ، وهانز روديجر ويهل، وديفيد جريس ، ورودولف باير | تم تطبيق برنامج ALGOL 60 في جامعة إلينوي وجامعة ميونخ التقنية ، 1962-1964 | آي بي إم 7090 | |
| يو إس إس 90 ألغول | 1962 | ل. بيترون | |||
| إليوت ألغول | 1962 | كار هوار | تمت مناقشة ذلك في محاضرته التي ألقاها بمناسبة حصوله على جائزة تورينج عام 1980 | إليوت 803 وإليوت 503 | |
| ALGOL 60 | 1962 | رولاند ستروبل [ 15 ] | تم تنفيذه بواسطة معهد الرياضيات التطبيقية التابع للأكاديمية الألمانية للعلوم في برلين | زايس-ريشين أوتومات ZRA 1 | |
| ALGOL 60 | 1962 | برنارد فوكوا , لويس بوليت [ 16 ] | معهد المعلوماتية والرياضيات التطبيقية في غرونوبل (IMAG) وشركة الآلات الثور | بول جاما 60 | |
| مترجم ألغول | 1962 | جي فان دير ماي و دبليو إل فان دير بويل | Staatsbedrijf der Posterijen، Telegrafie و Telefonie | حمار وحشي | |
| كيدزغروف ألغول | 1963 | إف جي دنكان | شركة إنجلش إلكتريك KDF9 | ||
| فروة الرأس [ 17 ] | 1963 | ستيفن ج. جارلاند ، أنتوني و. كناب ، توماس يوجين كورتز | معالج ALgol مستقل لمجموعة فرعية من ALGOL 60 | LGP-30 | |
| فالغول | 1963 | فال شور | اختبار لمترجم META II | ||
| FP6000 Algol | 1963 | روجر مور | كُتب لصالح شركة ساسكاتشوان للطاقة | FP6000 | |
| حجر الشحذ | 1964 | برايان راندل ولوفورد جون راسل | قسم الطاقة الذرية في شركة إنجلش إلكتريك. مقدمة لمشاريع فيرانتي بيغاسوس ، ومختبرات الفيزياء الوطنية ACE ، وإنجلش إلكتريك DEUCE | شركة إنجلش إلكتريك KDF9 | |
| ALGOL 60 | 1964 | جان كلود بوسارد [ 18 ] | معهد المعلوماتية والرياضيات التطبيقية في غرونوبل | آي بي إم 7090 | |
| عبقري الخوارزميات | 1964 | بوريه لانجفورس | تمت إضافة سجلات البيانات ووحدات الإدخال/الإخراج المستوحاة من لغة كوبول | داتاساب دي-21 | |
| ALGOL 60 | 1965 | كلود بير [ 19 ] | مركز الحساب لكلية العلوم بنانسي | آي بي إم 1620 | |
| دارتموث ALGOL | 1965 | ستيفن ج. جارلاند ، سار بلومسون، رون مارتن | ALGOL 60 | نظام دارتموث لتقاسم الوقت لمحرك GE 235 | |
| نو ألغول | 1965 | يونيفاك | |||
| ALGOL 60 | 1965 [ 20 ] | إف إي جيه كروسمان أريتز | مُجمِّع MC لجهاز EL-X8 | إلكترولوجيكا X8 | |
| ALGEK | 1965 | مينسك-22 | ALGЭК، المبني على دعم ALGOL 60 و COBOL ، للمهام الاقتصادية | ||
| مالغول | 1966 | عام. أ. فييل، م. كوتلي، م. راخندي، | مينسك-22 | ||
| الطحالب | 1967 | مجموعة GAMS (GAMS، مجموعة أتمتة البرمجة للآلات ذات الفئة المتوسطة)، بالتعاون مع أكاديميات كوميكون للعلوم | كوميكون | مينسك-22 ، لاحقاً ES EVM ، BESM | |
| ALGOL/ZAM | 1967 | حاسوب ZAM البولندي | |||
| ألغول الصيني | 1972 | الأحرف الصينية، معبر عنها عبر نظام الرموز | |||
| DG/L | 1972 | عائلة حواسيب DG Eclipse | |||
| NASE | 1990 | إريك شونفيلدر | مترجم | لينكس وويندوز | |
| مارست | 2000 | أندرو ماخورين | مترجم ALGOL 60 إلى C | جميع وحدات المعالجة المركزية التي تدعمها مجموعة مترجمات GNU؛ MARST جزء من مشروع GNU |
ملكيات
لم تكن لغة ALGOL 60، وفقًا لتعريفها الرسمي، تحتوي على أي وظائف إدخال/إخراج؛ إذ كانت التطبيقات تُعرّف وظائفها الخاصة بطرقٍ نادراً ما كانت متوافقة مع بعضها البعض. في المقابل، قدّمت لغة ALGOL 68 مكتبةً واسعةً من وظائف النقل (مصطلح ALGOL 68 للإدخال/الإخراج).
وفرت لغة ALGOL 60 استراتيجيتين لتقييم تمرير المعاملات : الاستدعاء بالقيمة ، والاستدعاء بالاسم . يحدد تعريف الإجراء، لكل معامل رسمي، القيمة المراد استخدامها: القيمة المحددة للاستدعاء بالقيمة، والقيمة المحذوفة للاستدعاء بالاسم. يعيد الاستدعاء بالاسم حساب كل معامل عند استخدامه في تعبير، مما يؤثر على بعض جوانبه مقارنةً بالاستدعاء بالمرجع . على سبيل المثال، بدون تحديد المعاملات كقيمة أو مرجع ، يستحيل إنشاء إجراء لتبديل قيم معاملين إذا كان المعاملان الفعليان المُمرران هما متغير عددي ومصفوفة مُفهرسة بنفس المتغير. [ 21 ] تخيل تمرير مؤشر إلى swap(i, A[i]) إلى دالة. الآن، في كل مرة يُشار فيها إلى swap، يُعاد تقييمها. لنفترض أن i := 1 و A[i] := 2، ففي كل مرة يتم فيها استدعاء دالة التبديل، ستُعيد المجموعة الأخرى من القيم ([1,2]، [2,1]، [1,2] وهكذا). يحدث وضع مشابه مع دالة عشوائية يتم تمريرها كوسيط فعلي.
يُعرف أسلوب الاستدعاء بالاسم لدى العديد من مصممي المترجمات البرمجية بفضل " الدوال الضمنية " المميزة المستخدمة في تنفيذه. وقد ابتكر دونالد كنوث " اختبار الرجل أو الصبي " لتمييز المترجمات التي تُنفذ " الاستدعاء الذاتي والمراجع غير المحلية" بشكل صحيح. ويتضمن هذا الاختبار مثالاً على الاستدعاء بالاسم.
مستويات اللغة
تُقرّ تقارير ALGOL 60 بثلاثة مستويات لغوية مختلفة، وهي: لغة مرجعية، ولغة نشر، وعدة تمثيلات للأجهزة. لا تحتوي اللغتان المرجعية والنشر على كلمات محجوزة، إلا أن التقارير توصي [ 22 ] بحجز بعض المعرّفات للوظائف القياسية. تحتوي اللغة المرجعية على أحرف صغيرة ورموز أخرى غير متوفرة في مجموعات الأحرف ذات 6 بتات الشائعة في عصر ALGOL 60. [ أ ]
تصف التقارير بإيجاز تمثيلات الأجهزة. وتختلف التطبيقات في تمثيلاتها للأجهزة للرموز الأساسية المستقلة المسطرة. [ 23 ]
- الكلمات المحجوزة
- الإيقاف
كما أنها تختلف في تمثيلها المادي للفواصل.
ALGOL 60 الكلمات المحجوزة والمعرفات المقيدة
يحتوي التقرير المُعدَّل على 24 رمزًا أساسيًا مكتوبة بخط غامق. مع أن هذه الكلمات غير محجوزة في لغات المرجع والنشر، إلا أن بعض تطبيقات الأجهزة قد تحجزها. يوجد 24 كلمة من هذا النوع في التقرير المُعدَّل:
ARRAYBEGINBOOLEANCOMMENTDOELSEENDFALSEFORGOTOIFINTEGERLABELOWNPROCEDUREREALSTEPSTRINGSWITCHTHENTRUEUNTILVALUEWHILE
يوجد 35 كلمة محجوزة من هذا القبيل في اللغة الفرعية القياسية لأنظمة بوروز الكبيرة :
ALPHAARRAYBEGINBOOLEANCOMMENTCONTINUEDIRECTDODOUBLEELSEENDEVENTFALSEFILEFORFORMATGOIFINTEGERLABELLISTLONGOWNPOINTERPROCEDUREREALSTEPSWITCHTASKTHENTRUEUNTILVALUEWHILEZIP
يوجد 71 معرفًا مقيدًا من هذا القبيل في اللغة الفرعية القياسية لأنظمة بوروز الكبيرة:
ACCEPTANDATTACHBYCALLCASECAUSECLOSEDEALLOCATEDEFINEDETACHDISABLEDISPLAYDIVDUMPENABLEEQLEQVEXCHANGEEXTERNALFILLFORWARDGEQGTRIMPININTERRUPTISLBLEQLIBERATELINELOCKLSSMERGEMODMONITORMUXNEQNONOTONOPENOROUTPICTUREPROCESSPROCUREPROGRAMDUMPRBREADRELEASEREPLACERESETRESIZEREWINDRUNSCANSEEKSETSKIPSORTSPACESWAPTHRUTIMESTOWAITWHENWITHWRITE
وكذلك أسماء جميع الدوال الجوهرية.
المشغلون القياسيون
| أولوية | المشغل | |
|---|---|---|
| الحساب الأول | أولاً | ↑ (القوة) |
| ثانية | ×، / (عدد حقيقي)، ÷ (عدد صحيح) | |
| ثالث | +، - | |
| ثانية | <، ≤، =، ≥، >، ≠ | |
| ثالث | ¬ (ليس) | |
| رابعًا | ∧ (و) | |
| الخامس | ∨ (أو) | |
| السادس | ⊃ (دلالة) | |
| السابع | ≡ (تكافؤ) | |
أمثلة ومشاكل قابلية النقل
مقارنات نماذج التعليمات البرمجية
ALGOL 60
الإجراء Absmax(a) الحجم: (n, m) النتيجة: (y) المؤشرات: (i, k)؛ القيمة n، m؛ المصفوفة a؛ عدد صحيح n، m، i، k؛ عدد حقيقي y؛ تعليق: أكبر عنصر مطلق في المصفوفة a، ذات الحجم n × m. يتم نسخها إلى y، ويتم نسخ الرموز السفلية لهذا العنصر إلى i و k؛ ابدأ عدد صحيح p، q؛ y := 0; i := k := 1; for p := 1 step 1 until n do for q := 1 step 1 until m do if abs(a[p, q]) > y then begin y := abs(a[p, q]); i := p; k := q نهاية نهاية Absmax؛
تختلف التطبيقات في كيفية كتابة النص المكتوب بخط غامق. على سبيل المثال، يجب استخدام كلمة "INTEGER" (بما في ذلك علامات الاقتباس) في بعض التطبيقات بدلاً من كلمة " integer " المذكورة أعلاه، مما يجعلها رمزًا خاصًا بلغة ALGOL.
يستخدم الإصدار التالي تمثيل الأجهزة الذي يدعمه مُصرّف ALCOR [ 24 ] لجهاز IBM 7090. تم حذف بعض رموز ALGOL. بالإضافة إلى ذلك، يستخدم هذا الإصدار رمز النقطتين الرأسيتين (:) ..لتمثيل رمز النقطتين، .=ورمز التعيين (:) (/ and )/بدلاً من الأقواس، ورمز .,الفاصلة المنقوطة (:) لتمثيل رمز الفاصلة المنقوطة (:). لم تكن الأحرف الصغيرة مدعومة، لذا تم استخدام الأحرف الكبيرة.
الإجراء: القيمة المطلقة القصوى (أ) الحجم (ن، م) النتيجة (ص) الرموز (ط، ك). 'VALUE' N, M., 'ARRAY' A., 'INTEGER' N, M, I, K., 'REAL' Y., «التعليق» هو العنصر الأعظم على الإطلاق في المصفوفة أ، بحجم ن × م. يتم نسخها إلى Y، ويتم نسخ رموز هذا العنصر إلى I و K. 'يبدأ' 'عدد صحيح' P، Q، Y = 0; I = K = 1., 'FOR' P .= 1 'STEP' 1 'UNTIL' N 'DO' 'FOR' Q .= 1 'STEP' 1 'UNTIL' M 'DO' إذا كانت القيمة المطلقة لـ A(/P, Q/)) أكبر من Y، فإن 'BEGIN' Y .= ABS(A(/P, Q/))., I = P; K = Q 'نهاية' نهاية ABSMAX.
فيما يلي مثال على كيفية إنشاء جدول باستخدام خوارزمية إليوت 803 : [ 25 ]
اختبار خوارزمية الفاصلة العائمة. ابدأ حقيقي أ، ب، ج، د اقرأ D' لـ A:= 0.0 الخطوة D حتى 6.3 كرر يبدأ طباعة ثقب (3) ،££L??' ب := جا(أ)' C := COS(A)' طباعة ثقب (3) ، خط متماثل ، محاذاة (1،6) ، أ، ب، ج نهاية' نهاية'
عائلة ALGOL 60
نظرًا لعدم احتواء لغة ALGOL 60 على وظائف إدخال/إخراج، فلا يوجد برنامج "مرحباً بالعالم" قابل للنقل مكتوب بلغة ALGOL. مع ذلك، يمكن (ولا يزال) تجميع البرنامج التالي وتشغيله على تطبيق ALGOL الخاص بأجهزة Unisys A-Series الرئيسية، وهو تبسيط مباشر لرمز مأخوذ من دليل اللغة [ 26 ] في صفحة "مرحباً بالعالم!" من قسم علوم الحاسوب والمعلومات بجامعة ميشيغان - ديربورن، ضمن قسم "برنامج مثال ALGOL". [ 27 ]
يبدأ ملف F(النوع=بعيد)؛ مصفوفة EBCDIC E[0:11]؛ استبدل الحرف E بعبارة "HELLO WORLD!"؛ اكتب(F, *, E)؛ نهاية.
حيث يمثل * إلخ مواصفات التنسيق المستخدمة في لغة فورتران، على سبيل المثال [ 28 ]
برنامج أبسط يستخدم تنسيقًا مضمنًا:
ابدأ الملف F ( النوع = عن بُعد )؛ اكتب ( F ، < "مرحباً بالعالم!" > )؛ انتهى .برنامج أبسط باستخدام عبارة العرض:
BEGIN DISPLAY ( "HELLO WORLD!" ) END .فيما يلي مثال بديل، باستخدام إدخال/إخراج إليوت ألغول. استخدم إليوت ألغول أحرفًا مختلفة لـ "علامة اقتباس السلسلة المفتوحة" و "علامة اقتباس السلسلة المغلقة"، ممثلة هنا بـ ' و ' .
برنامج HiFolks ؛ ابدأ بطباعة ' Hello world ' ؛ انتهى ؛هذه نسخة خاصة بجهاز إليوت 803 ألغول (A104). كان جهاز إليوت 803 القياسي يستخدم شريطًا ورقيًا بخمسة ثقوب، ولذلك كان يدعم الأحرف الكبيرة فقط. لم يكن الرمز يحتوي على علامات اقتباس، لذا استُخدم رمز الجنيه الإسترليني ( £ ) للاقتباس المفتوح وعلامة الاستفهام ( ؟ ) للاقتباس المغلق. وُضعت التسلسلات الخاصة بين علامتي اقتباس مزدوجتين (على سبيل المثال، £., L?? تُنتج سطرًا جديدًا على جهاز الطباعة عن بُعد).
أهل المدينة يبدأ اطبع "مرحباً بالعالم" نهاية'
سمحت نسخة الإدخال/الإخراج من سلسلة ICT 1900 Algol بإدخال البيانات من شريط ورقي أو بطاقة مثقبة. وكان وضع "الشريط الورقي الكامل" يسمح باستخدام الأحرف الصغيرة. وكانت المخرجات تُرسل إلى طابعة خطية. لاحظ استخدام الأقواس ()، والرموز ()، وعلامة النسبة المئوية ( %). [ 29 ]
برنامج (مرحباً) 'يبدأ' يُستخدم الرمز '(' لفتح الاقتباس، والرمز ')' لإغلاقه، ويجب أن تكون المساحة القابلة للطباعة يُكتب على شكل % لأن المسافات يتم تجاهلها؛ اكتب النص('('HELLO%WORLD')'); 'نهاية' 'ينهي'يستخدم هذا المثال outstringالإجراء كما هو محدد في التقرير المعدل:
يبدأ يستخدم التعليق عمليات الإدخال/الإخراج من التقرير المعدل. يتم تجميعه وتشغيله باستخدام مترجم gnu marst؛ outstring (1, "hello world!\n") نهاية
خطوة
LEAP هي امتداد للغة البرمجة ALGOL 60، توفر ذاكرة ترابطية للثلاثيات. تشير العناصر الثلاثة في الثلاثية إلى العلاقة بين سمة كائن وقيمة محددة. ابتكر LEAP كل من جيروم فيلدمان (جامعة كاليفورنيا، بيركلي) وبول روفنر (مختبر لينكولن التابع لمعهد ماساتشوستس للتكنولوجيا) عام 1967. كما تم تطبيق LEAP في لغة SAIL.
انظر أيضاً
ملحوظات
- ↑ يدعم نظام يونيكود ، الذي ظهر بعد عقود، جميع
- U+003A : القولون
- U+003B ؛ فاصلة منقوطة
- U+005B [ قوس مربع أيسر
- U+005D ] قوس مربع أيمن
- U+00AC ¬ لا توقع
- U+00D7 × علامة الضرب
- U+00F7 ÷ علامة القسمة
- U+2191 ↑ سهم للأعلى
- U+2227 ∧ منطقي و
- U+2228 ∨ أو المنطقي
- U+2260 ≠ لا يساوي
- U+2261 ≡ مطابق لـ
- U+2264 ≤ أقل من أو يساوي
- U+2265 ≥ أكبر من أو يساوي
- U+2283 ⊃ مجموعة شاملة من
مراجع
- ↑ كنوت، دونالد إي. (ديسمبر 1964). "صيغة باكوس العادية مقابل صيغة باكوس العادية" . اتصالات رابطة آلات الحوسبة . 7 (12): 735-736 . doi : 10.1145/355588.365140 . S2CID 47537431 .
- ↑ بيان جائزة ACM / بيتر نور ، 2005
- ↑ فان إمدن، مارتن (2014). "كيف دخلت الاستدعاءات المتكررة إلى البرمجة: قصة مؤامرة وخيانة ودلالات لغات البرمجة المتقدمة" . مكان المبرمج .
- ^ باكوس، جيه دبليو؛ باور، فلوريدا؛ جرين، ج. كاتز، C .؛ مكارثي، J .؛ بيرليس، AJ؛ روتيسهاوزر، H .؛ ساملسون، ك. فوكوا، ب. ويجستين، JH. فان فيجنجاردن، أ؛ وودجر، م. (1963). "تقرير منقح عن اللغة الخوارزمية ALGOL 60" . اتصالات ACM . 6 : 1– 17. دوى : 10.1145/366193.366201 .
- ↑ "تقرير معدل عن لغة الخوارزميات ALGOL 60" (PDF) .
- ↑ هوار، مجلة أبحاث الحاسوب (ديسمبر 1973). "تلميحات حول تصميم لغات البرمجة" (ملف PDF) . ص 27. (يُنسب هذا البيان أحيانًا بشكل خاطئ إلى إدسكار دبليو ديكسترا ، الذي شارك أيضًا في تنفيذ أول مترجم للغة ALGOL 60. )
- ↑ أبيلسون، هال ؛ ديبفيج، آر كيه ؛ وآخرون . ريس، جوناثان؛ كلينجر، ويليام (محررون). "تقرير منقح (3) حول مخطط لغة الخوارزميات (مُهدى إلى ذكرى ALGOL 60)" . تم الاطلاع عليه بتاريخ 20 أكتوبر 2009 .
- ↑ موسوعة لغات الحاسوب، مؤرشفة في 27 سبتمبر 2011، على موقع Wayback Machine
- ↑ دايلايت، إي جي (2011). "نداء ديكسترا للتعميم: ظهور الإجراء التكراري، أواخر الخمسينيات - أوائل الستينيات" . مجلة الكمبيوتر . 54 (11): 1756-1772 . doi : 10.1093/comjnl/bxr002 .
- ↑ كروسمان أريتز، FEJ (30 يونيو 2003). "مترجم دايجسترا-زونيفيلد ALGOL 60 لجهاز Electrologica X1" (ملف PDF) . هندسة البرمجيات . تاريخ علوم الحاسوب. أمستردام: مركز الرياضيات والمعلوماتية. ISSN 1386-3711 . مؤرشف من الأصل (ملف PDF) بتاريخ 17 يناير 2004.
- ↑ آيرونز، إدغار تي ، مُترجم موجه نحو بناء الجملة للغة ALGOL 60، اتصالات ACM، المجلد 4، ص 51. (يناير 1961)
- ↑ كورتز 1978 .
- ↑ غريس، د.؛ بول، م.؛ ويهل، هـ. ر. (1965). "بعض التقنيات المستخدمة في جهاز ALCOR Illinois 7090" . مجلة اتصالات رابطة آلات الحوسبة . 8 (8): 496-500 . doi : 10.1145/365474.365511 . S2CID 18365024 .
- ↑ باير، ر.؛ غريس، د.؛ بول، م.؛ ويهل، هـ. ر. (1967). "تفريغ بيانات ما بعد الوفاة لطائرة ألكور إلينوي 7090/7094" . مجلة اتصالات رابطة آلات الحوسبة . 10 (12): 804-808 . doi : 10.1145/363848.363866 . S2CID 3783605 .
- ^ Rechenautomaten mit Trommelspeicher ، Förderverein der Technischen Sammlung Dresden
- ↑ مونيه-كون، بيير (2014). "ألغول في فرنسا: من مشروع عالمي إلى ثقافة مضمنة" . حوليات IEEE لتاريخ الحوسبة . 36 (4): 6-25 . Bibcode : 2014IAHC...36d...6M . doi : 10.1109/MAHC.2014.50 . ISSN 1058-6180 .
- ↑ كورتز 1978 ، ص 517.
- ^ بوسارد، جان كلود (يونيو 1964). دراسة وتحقيق مترجم Algol60 حول الحاسبة الإلكترونية من النوع IBM 7090/94 et 7040/44 [ تصميم وتنفيذ مترجم Algol60 على الآلة الحاسبة الإلكترونية IBM 7090/94 و 7040/44 ] (دكتوراه) (باللغة الفرنسية). جامعة جوزيف فورييه - غرونوبل الأولى.
- ^ كلود بير (27 أبريل 1965). وصف لمترجم ALGOL . المنطقة الأوروبية 1620 مجموعة المستخدمين . آي بي إم.
- ^ كروسمان أريتز، FEJ (1973). مترجم Algol 60 في Algol 60 . مسالك مركز الرياضيات. أمستردام: مركز الرياضيات.
- ↑ أهو، ألفريد ف .؛ سيثي، رافي ؛ أولمان، جيفري د. (1986). المترجمات: المبادئ والتقنيات والأدوات (الطبعة الأولى ). أديسون-ويسلي. ISBN 978-0-201-10194-2.القسم 7.5، والمراجع الواردة فيه
- ↑ نور وآخرون، 1963 ، 3.2.4. الدوال القياسية
- ↑ نور وآخرون، ١٩٦٣ ، ٢.١. الحروف : (١) تجدر الإشارة إلى أن التسطير في اللغة المرجعية يُستخدم [هنا يبدو كـ underlined؛ NL] لتعريف الرموز الأساسية المستقلة (انظر القسمين ٢.٢.٢ و٢.٣). ويُفهم من ذلك أنه لا علاقة لهذه الرموز بالحروف الفردية التي تتكون منها. ولن يُستخدم التسطير في هذا التقرير لأي غرض آخر.
- ↑ "دليل المستخدم لجهاز الترجمة ALCØR-ILLINØIS-7090 ALGØL-60"
- ↑ "803 ALGOL" ، دليل استخدام جهاز إليوت 803 ALGOL
- ↑ "لغة برمجة ALGOL" . www.engin.umd.umich.edu . مؤرشف من الأصل بتاريخ 10 فبراير 2010. تم الاطلاع عليه بتاريخ 11 يناير 2022 .
- ↑ "برنامج مثال: مرحباً بالعالم!" . www.engin.umd.umich.edu . مؤرشف من الأصل بتاريخ 4 فبراير 2010. تم الاطلاع عليه بتاريخ 11 يناير 2022 .
- ↑ مثال فورتران# "مرحباً بالعالم!"
- ↑ "سلسلة ICL 1900: لغة Algol" . منشور ICL التقني رقم 3340. 1965.
فهرس
- باكوس، جون دبليو . باور، فريدريش ل . جرين، ج. كاتز، C .؛ جيه مكارثي ؛ ب. نور ؛ ايه جي بيرليس ; هـ. روتيسهاوزر ؛ ك. سامويلسون؛ ب. فوكوا ؛ جيه إتش ويجستين ؛ أ. فان فيجنجاردن ؛ إم وودجر (يناير 1963). بيتر نور (محرر). "تقرير منقح عن اللغة الخوارزمية ألغول 60" . اتصالات ACM . 6 (1). جمعية آلات الحوسبة: 1– 17. دوى : 10.1145 / 366193.366201 . S2CID 7853511 .
- كورتز، توماس إي. (1978). "بيسك". تاريخ لغات البرمجة . ص 515-537 . doi : 10.1145/800025.1198404 . ISBN 0127450408.
للمزيد من القراءة
- ديجكسترا، إدسكار دبليو. (1961). "ترجمة ALGOL 60: مترجم ALGOL 60 لجهاز X1 وإنشاء مترجم لـ ALGOL 60 (ملف PDF) (تقرير فني). أمستردام: المركز الرياضي. 35.
- راندل، برايان ؛ راسل، لوفورد جون (1964). تطبيق ALGOL 60: ترجمة واستخدام برامج ALGOL 60 على الحاسوب . دار النشر الأكاديمية. OCLC 526731 . تصميم مُترجم ويتستون . أحد أوائل الأوصاف المنشورة لتنفيذ مُترجم. انظر الأوراق البحثية ذات الصلة: " إعادة النظر في ويتستون ألغول" و "مترجم ويتستون KDF9 ألغول" بقلم برايان راندل.
- جوس ، جيرهارد [بالألمانية] (2017/08/07). Geschichte der deutschsprachigen Informatik - Programmiersprachen und Übersetzerbau [ تاريخ المعلوماتية في البلدان الناطقة باللغة الألمانية - لغات البرمجة وتصميم المترجم ] (PDF) (باللغة الألمانية). كارلسروه، ألمانيا: Fakultät für Informatik، معهد كارلسروه للتكنولوجيا (KIT). مؤرشفة (PDF) من النسخة الأصلية بتاريخ 2022-05-19 . تم الاسترجاع بتاريخ 2022-11-14 .(11 صفحة)
روابط خارجية
- التقرير المنقح حول لغة الخوارزميات ALGOL 60 بقلم بيتر نور وآخرون. تعريف ALGOL
- ملخص بناء جملة BNF لـ ALGOL 60
- "ملابس الإمبراطور القديمة" – خطاب هوار عند استلامه جائزة تورينج من جمعية آلات الحوسبة عام 1980، والذي يناقش تاريخ ALGOL ومشاركته فيه
- تطبيق ALGOL 60 لـ FP6000 مؤرشف بتاريخ 2020-07-25 في Wayback Machine مناقشة بعض مشكلات التنفيذ.
- نور، بيتر (أغسطس 1978). "الجانب الأوروبي من المرحلة الأخيرة لتطوير لغة ALGOL 60" . مجلة ACM SIGPLAN Notices . 13 (8): 15-44 . doi : 10.1145/960118.808370 . S2CID 15552479 .
- قامت جامعة إدنبرة بتطوير مُجمِّعات للغة Algol60 (تم تحديثها لاحقًا للغة Algol60M) استنادًا إلى مُجمِّعات Atlas Autocode الخاصة بها، والتي تم تطويرها في البداية من Atlas إلى KDF-9. أنتجت مُجمِّعات إدنبرة شفرة برمجية لمعالجات ICL1900 وICL4/75 (وهو مُحاكي لمعالج IBM360) وICL2900. فيما يلي ملف BNF للغة Algol60 ( مؤرشف بتاريخ 15 مايو 2020 على Wayback Machine) ، ومصدر مُجمِّع ICL2900 ( مؤرشف بتاريخ 15 مايو 2020 على Wayback Machine) ، ووثائق المكتبة (مؤرشف بتاريخ 15 مايو 2020 على Wayback Machine) ، ومجموعة اختبارات شاملة ( مؤرشف بتاريخ 15 مايو 2020 على Wayback Machine) تتضمن اختبارات برايان ويشمان. تمت أرشفة هذا المحتوى بتاريخ 15-05-2020 في Wayback Machine. كما يوجد مترجم سطحي نوعًا ما من Algol60 إلى Atlas Autocode على مستوى المصدر. تمت أرشفة هذا المحتوى بتاريخ 15-05-2020 في Wayback Machine .
- متحف الحوسبة القديمة لإريك إس. ريموند ، من بين أمور أخرى، رابط إلى مترجم NASE ALGOL 60 المكتوب بلغة C.
- مترجم NASE
- قصص عن جهاز B5000 والأشخاص الذين كانوا هناك: حاسوب ALGOL مخصص،
- بوتنبروش، هيرمان (1961). بنية واستخدام برنامج ALGOL 60 (تقرير). doi : 10.2172/4020495 . OSTI 4020495 .
- NUMAL مكتبة الإجراءات العددية في ALGOL 60 تم تطويرها في Stichting Centrum Wiskunde & Informatica ( الخليفة القانوني لـ Stichting Mathematisch Centrum) المالك القانوني .
- موارد ALGOL 60: المترجمون، والوثائق، والبرامج
- يتضمن المضرب ALGOL 60
- ALGOL 60
- عائلة لغات البرمجة ألغول
- لغات البرمجة الأكاديمية
- لغات البرمجة المترجمة
- لغات البرمجة الإجرائية
- لغات البرمجة الهيكلية
- لغات برمجة الأنظمة
- لغات البرمجة التي تم ابتكارها عام 1960
- لغات البرمجة ذات معيار ISO
