ألغول
دليل عام 1965 لـ ALGOL-20 | |
| نموذج | إجرائي ، أمري ، منظم |
|---|---|
| عائلة | ألغول |
| صمم بواسطة | باور ، بوتنبروخ ، روتيسهاوزر ، ساملسون ، باكوس ، كاتز ، بيرليس ، فيجستين ، نور ، فوكوا ، فان فيجنجاردن ، وودجر ، جرين، مكارثي |
| ظهرت لأول مرة | 1958 |
| الانضباط في الطباعة | ثابت وقوي |
| نِطَاق | معجمي |
| متأثر | |
| معظم اللغات الآمرة اللاحقة (بما في ذلك ما يسمى باللغات المشابهة لـ ALGOL ) مثل PL/I و Simula و Pascal و C و Scheme | |
ALGOL ( / ˈælɡɒl , -ɡɔːl / ؛ اختصار لـ " اللغة الخوارزمية ") [ 1] هي عائلة من لغات البرمجة الحاسوبية الإلزامية التي تم تطويرها في الأصل عام 1958. أثرت ALGOL بشكل كبير على العديد من اللغات الأخرى وكانت الطريقة القياسية لوصف الخوارزمية المستخدمة من قبل جمعية آلات الحوسبة (ACM) في الكتب المدرسية والمصادر الأكاديمية لأكثر من ثلاثين عامًا. [2]
بالمعنى الذي يشبه بناء جملة معظم اللغات الحديثة "Algol"، [3] يمكن القول إنها كانت أكثر تأثيرًا من ثلاث لغات برمجة عالية المستوى أخرى كانت معاصرة لها تقريبًا: FORTRAN و Lisp و COBOL . [4] تم تصميمها لتجنب بعض المشكلات الملحوظة مع FORTRAN وأدت في النهاية إلى ظهور العديد من لغات البرمجة الأخرى، بما في ذلك PL /I و Simula و BCPL و B و Pascal و Ada و C.
قدمت ALGOL كتل التعليمات البرمجية والأزواج begin... endلتحديدها. كانت أيضًا أول لغة تنفذ تعريفات الوظائف المتداخلة بنطاق معجمي . علاوة على ذلك، كانت أول لغة برمجة تولي اهتمامًا تفصيليًا لتعريف اللغة الرسمية ومن خلال تقرير Algol 60 قدمت نموذج Backus-Naur ، وهو تدوين نحوي رسمي أساسي لتصميم اللغة.
كانت هناك ثلاث مواصفات رئيسية، تم تسميتها وفقًا للسنوات التي نشرت فيها لأول مرة:
- ALGOL 58 - تم اقتراح تسميته في الأصل بـ IAL ، وهي اختصار لـ International Algebraic Language .
- ALGOL 60 – تم تنفيذه لأول مرة باسم X1 ALGOL 60 في عام 1961. وتمت مراجعته في عام 1963. [5] [6] [7]
- ALGOL 68 – قدم عناصر جديدة بما في ذلك المصفوفات المرنة والشرائح والتوازي وتحديد المشغل. تمت مراجعته عام 1973. [8]
يختلف ALGOL 68 بشكل كبير عن ALGOL 60 ولم يتم استقباله بشكل جيد، [ وفقًا لمن؟ ] لذا فإن الإشارة إلى "Algol" يُفهم عمومًا على أنها تعني ALGOL 60 ولهجاتها. [ بحاجة لمصدر ]
تاريخ
تم تطوير ALGOL بشكل مشترك من قبل لجنة من علماء الكمبيوتر الأوروبيين والأمريكيين في اجتماع عقد عام 1958 في المعهد الفيدرالي السويسري للتكنولوجيا في زيورخ (راجع ALGOL 58 ). [9] وقد حدد ثلاثة بناء جملة مختلف: بناء جملة مرجعي، وبناء جملة للنشر، وبناء جملة تنفيذي، وهي بناء جملة سمحت له باستخدام أسماء كلمات رئيسية مختلفة واتفاقيات للنقاط العشرية (الفواصل مقابل النقاط) للغات مختلفة. [5]
تم استخدام ALGOL في الغالب من قبل علماء الكمبيوتر الباحثين في الولايات المتحدة وأوروبا؛ وقد أعاقت التطبيقات التجارية غياب مرافق الإدخال/الإخراج القياسية في وصفها، ونقص الاهتمام باللغة من قبل بائعي الكمبيوتر الكبار (بخلاف شركة بوروز ). [10] ومع ذلك، أصبح ALGOL 60 هو المعيار لنشر الخوارزميات وكان له تأثير عميق على تطوير اللغة في المستقبل. [10]

طور جون باكوس طريقة صيغة باكوس الطبيعية لوصف لغات البرمجة خصيصًا لـ ALGOL 58. وقد تمت مراجعتها وتوسيعها بواسطة بيتر ناور لـ ALGOL 60، وبناءً على اقتراح دونالد كنوث تمت إعادة تسميتها بصيغة باكوس-ناور . [11]
بيتر نور: "بصفتي محررًا لنشرة ALGOL، انجذبت إلى المناقشات الدولية حول اللغة وتم اختياري لأكون عضوًا في مجموعة تصميم اللغة الأوروبية في نوفمبر 1959. وبهذه الصفة كنت محرر تقرير ALGOL 60، والذي تم إنتاجه نتيجة لاجتماع ALGOL 60 في باريس في يناير 1960." [12]
وقد حضر الاجتماع في باريس (من 11 إلى 16 يناير/كانون الثاني) الأشخاص التاليون: [5]
- فريدريش لودفيج باور ، بيتر ناور ، هاينز روتيسهاوزر ، كلاوس ساملسون ، برنارد فوكوا ، أدريان فان فيجنجاردن ، ومايكل وودجر (من أوروبا)
- جون وارنر باكوس ، جوليان جرين، تشارلز كاتز ، جون مكارثي ، آلان جاي بيرليس ، وجوزيف هنري ويجستين (من الولايات المتحدة).
وقد قدم آلان بيرليس وصفًا حيًا للاجتماع: "كانت الاجتماعات مرهقة، لا تنتهي، ومبهجة. وكان المرء يشعر بالانزعاج عندما يتم التخلص من أفكاره الجيدة جنبًا إلى جنب مع الأفكار السيئة للآخرين. ومع ذلك، استمر الاجتهاد طوال الفترة. وكان التوافق بين الثلاثة عشر ممتازًا". [13]
ألهمت لغة ALGOL 60 العديد من اللغات التي تلتها. وقد أشار توني هوار إلى ذلك بقوله: "هذه لغة متقدمة جدًا عن عصرها لدرجة أنها لم تكن مجرد تحسين على أسلافها فحسب، بل وأيضًا على جميع خلفائها تقريبًا". [14] كما تبنت لغة البرمجة Scheme ، وهي أحد أشكال لغة Lisp التي تبنت بنية الكتل والنطاق المعجمي للغة ALGOL، صياغة "تقرير منقح عن مخطط اللغة الخوارزمية" لوثائق معاييرها تكريمًا للغة ALGOL. [15]
البحث في لغة البرمجة ALGOL
تمت كتابة هذا القسم على هيئة تأمل شخصي أو مقال شخصي أو مقال جدلي يوضح المشاعر الشخصية لمحرر ويكيبيديا أو يقدم حجة أصلية حول موضوع ما. ( يناير 2024 ) |
كما لاحظ بيتر لاندين ، [ بحاجة لمصدر ] كانت لغة ALGOL أول لغة تجمع بسلاسة بين التأثيرات الآمرة وحساب لامدا ( استدعاء بالاسم ) . [ بحاجة لمصدر ] ربما كانت الصيغة الأكثر أناقة للغة ترجع إلى جون سي رينولدز ، وهي تُظهر بشكل أفضل نقائها النحوي والدلالي. [ وفقًا لمن؟ ] قدمت لغة ALGOL المثالية لرينولدز أيضًا حجة منهجية مقنعة فيما يتعلق بملاءمة التأثيرات المحلية في سياق لغات الاستدعاء بالاسم، على النقيض من التأثيرات العالمية المستخدمة في لغات الاستدعاء بالقيمة مثل التعلم الآلي . [ بحاجة لمصدر ] جعلت السلامة المفاهيمية للغة منها أحد الأهداف الرئيسية للبحث الدلالي، جنبًا إلى جنب مع وظائف البرمجة القابلة للحساب (PCF) والتعلم الآلي. [ بحاجة لمصدر ]
الجدول الزمني لتنفيذات IAL
حتى الآن كان هناك ما لا يقل عن 70 زيادة وتوسعة واشتقاق ولغات فرعية لـ Algol 60. [16]
| اسم | سنة | مؤلف | دولة | وصف | وحدة المعالجة المركزية المستهدفة |
|---|---|---|---|---|---|
| تنفيذ ZMMD | 1958 | فريدريش إل. باور ، هاينز روتيسهاوزر، كلاوس ساملسون، هيرمان بوتنبروخ | تنفيذ ALGOL 58 | Z22 (لاحقًا تم تسليم Z23 من Zuse مع مُجمِّع Algol 60) [17] | |
| X1 ألجول 60 | 1960 أغسطس [18] | إدسجر دبليو ديكسترا وجاب أ. زونفيلد | أول تنفيذ لـ ALGOL 60 [19] | إليكترولوجيكا X1 | |
| إليوت ألجول | ستينيات القرن العشرين | سيارة هواري | موضوع محاضرة جائزة تورينج لعام 1980 [20] | سلسلة إليوت 803 ، إليوت 503، إليوت 4100 | |
| جوفيال | 1960 | جولز شوارتز | وزارة الدفاع الأمريكية قبل آدا | متنوعة (انظر المقال) | |
| بوروز ألغول (عدة متغيرات) |
1961 | شركة بوروز (بمشاركة هواري، ديكسترا ، وآخرين) | أساس أجهزة الكمبيوتر Burroughs (والتي تعتمد الآن على Unisys MCP ) | أنظمة بوروز الكبيرة ومتوسطة المدى أيضًا. | |
| حالة ALGOL | 1961 | معهد كيس للتكنولوجيا [21] | تم التعاقد في الأصل على Simula باعتباره امتدادًا لمحاكاة Case ALGOL | يونيفاك 1107 | |
| جوجول | 1961 | وليام م. ماكيمان | لنظام تقاسم الوقت ODIN [22] | بي دي بي-1 | |
| مركزية النظام ALGOL | 1961 | بيتر نور ، يورن جينسن | تنفيذ Algol 60 بالكامل | DASK في Regnecentralen | |
| دارتموث ألغول 30 | 1962 | توماس يوجين كورتز وآخرون. | LGP-30 | ||
| يو إس إس 90 ألغول | 1962 | ل. بيتروني | |||
| ألغول 60 | 1962 | برنارد فوكوا ، لويس بوليت [23] | معهد المعلوماتية والرياضيات التطبيقية في غرونوبل (IMAG) وشركة الآلات الثور | بول جاما 60 | |
| مترجم الغول | 1962 | جي فان دير ماي و دبليو إل فان دير بويل | Staatsbedrijf der Posterijen، Telegrafie و Telefonie | حمار الوحش | |
| كيدزجروف الغول | 1963 | اف جي دنكان | شركة الكهرباء الانجليزية KDF9 | ||
| فالجول | 1963 | فال شوري | اختبار لمترجم META II | ||
| حجر الشحذ | 1964 | بريان رانديل و إل جيه راسل | قسم الطاقة الذرية لشركة إنجليش إلكتريك. رائد في تنفيذ مشروع Ferranti Pegasus ، ومشروع National Physical Laboratories ACE، ومشروع English Electric DEUCE . | شركة الكهرباء الانجليزية KDF9 | |
| نو الغول | 1965 | يونيفاك | |||
| ألجيك | 1965 | АLЛГЭК، استنادًا إلى دعم ALGOL-60 و COBOL ، للمهام الاقتصادية | مينسك-22 | ||
| ألغول دبليو | 1966 | نيكلاوس ويرث | خليفة مقترح لـ ALGOL 60 | نظام آي بي إم/360 | |
| مالغول | 1966 | عام. أ. فييل، م. كوتلي، م. راخندي، | مينسك-22 | ||
| الحشوات | 1967 | مجموعة GAMS (GAMS، مجموعة أتمتة البرمجة للآلات ذات الفئة المتوسطة)، بالتعاون مع أكاديميات كوميكون للعلوم | كوميكون | مينسك-22 ، لاحقًا ES EVM ، BESM | |
| ألغول/زام | 1967 | كمبيوتر ZAM البولندي | |||
| سيمولا 67 | 1967 | أولي يوهان دال وكريستين نيجارد | الجول 60 مع الفصول | يونيفاك 1107 | |
| تريبلكس-ألغول كارلسروه | 1967/1968 | كارلسروه ، ألمانيا |
ALGOL 60 (1963) مع أرقام ثلاثية لحساب الفواصل | [24] | |
| الغول الصيني | 1972 | الحروف الصينية، يتم التعبير عنها من خلال نظام الرموز | |||
| المديرية العامة للطرق/ل | 1972 | عائلة أجهزة الكمبيوتر DG Eclipse | |||
| س-الغول | 1979 | رون موريسون | إضافة أنواع البيانات المتعامدة بغرض استخدامها كلغة تعليمية | PDP-11 مع التنفيذ اللاحق على Java VM |
تضمنت لهجات بوروز لهجات خاصة بـ Bootstrapping مثل ESPOL و NEOP . ولا تزال الأخيرة مستخدمة في برنامج نظام Unisys MCP.
ملكيات
This section needs additional citations for verification. (February 2024) |
لم يكن لدى ALGOL 60، كما تم تعريفه رسميًا، مرافق إدخال/إخراج ؛ حيث قامت التطبيقات بتعريف مرافقها الخاصة بطرق نادرًا ما كانت متوافقة مع بعضها البعض. وعلى النقيض من ذلك، قدمت ALGOL 68 مكتبة واسعة من مرافق الإدخال /الإخراج.
سمح ALGOL 60 باستراتيجيتين للتقييم لتمرير المعلمات : الاستدعاء المشترك بالقيمة ، والاستدعاء بالاسم . الاستدعاء بالاسم له تأثيرات معينة على النقيض من الاستدعاء بالمرجع . على سبيل المثال، بدون تحديد المعلمات كقيمة أو مرجع ، من المستحيل تطوير إجراء سيبدل قيم معاملين إذا كانت المعلمات الفعلية التي يتم تمريرها عبارة عن متغير عدد صحيح ومصفوفة مفهرسة بواسطة نفس المتغير الصحيح. [25] فكر في تمرير مؤشر إلى swap(i, A[i]) إلى دالة. الآن بعد أن تتم الإشارة إلى swap في كل مرة، يتم إعادة تقييمه. قل i := 1 و A[i] := 2، لذلك في كل مرة تتم الإشارة إلى swap، ستعيد المجموعة الأخرى من القيم ([1,2]، [2,1]، [1,2] وما إلى ذلك). يحدث موقف مماثل مع دالة عشوائية تم تمريرها كحجة فعلية.
يعرف العديد من مصممي المترجمين خاصية "الاتصال بالاسم" بسبب " الثانكس " المثيرة للاهتمام التي تستخدم لتنفيذها. ابتكر دونالد كنوث " اختبار الرجل أو الصبي " لفصل المترجمين الذين قاموا بتنفيذ " التكرار والمراجع غير المحلية" بشكل صحيح. يحتوي هذا الاختبار على مثال للاستدعاء بالاسم.
تم تعريف ALGOL 68 باستخدام صيغة نحوية ثنائية المستوى اخترعها أدريان فان وينجاردن والتي تحمل اسمه. تستخدم صيغ فان وينجاردن النحوية الخالية من السياق لتوليد مجموعة لا نهائية من المنتجات التي ستتعرف على برنامج ALGOL 68 معين؛ ومن الجدير بالذكر أنها قادرة على التعبير عن نوع المتطلبات التي يتم تصنيفها في العديد من معايير لغات البرمجة الأخرى على أنها "دلالات" ويجب التعبير عنها بنثر لغة طبيعية عرضة للغموض، ثم يتم تنفيذها في المترجمات ككود مخصص مرفق بمحلل اللغة الرسمي.
أمثلة وقابلية النقل
This section needs expansion with: further annotation indicating sources of code samples, as Wikipedia disallows presentation of individual editor creations or other original research. You can help by adding to it. (February 2024) |
مقارنات عينات التعليمات البرمجية
ألغول 60
(تعتمد الطريقة التي يجب كتابة النص الغامق بها على التنفيذ، على سبيل المثال "INTEGER" - بما في ذلك علامات الاقتباس - للعدد الصحيح. يُعرف هذا باسم stropping .)
الإجراء Absmax(a) الحجم:(n, m) النتيجة:(y) الفهارس:(i, k)؛
القيمة n, m؛ المصفوفة a؛ العدد الصحيح n, m, i, k؛ العدد الحقيقي y؛
التعليق أعظم عنصر مطلق في المصفوفة a، بحجم n × m،
يتم نسخها إلى y، والفهرس السفلي لهذا العنصر إلى i وk؛
بداية
عدد صحيح p، q؛
ي := 0؛ ي := ك := 1؛
بالنسبة لـ p := 1 الخطوة 1 حتى n افعل
بالنسبة لـ q := 1 الخطوة 1 حتى m افعل
إذا كانت abs(a[p, q]) > y فابدأ y
:= abs(a[p, q]);
i := p; k := q
نهاية
نهاية Absmax
فيما يلي مثال لكيفية إنتاج جدول باستخدام Elliott 803 ALGOL. [26]
اختبار النقطة العائمة ابدأ بـ A، B، C، D' الحقيقي اقرأ د بالنسبة إلى A:= 0.0 الخطوة D حتى 6.3 افعل يبدأ ثقب الطباعة (3) ،££L ؟؟ ب := SIN(أ)' ج := جأ(أ) طباعة الثقب (3)، نفس الخط ، محاذاة (1،6) ، أ، ب، ج نهاية نهاية'
ألغول 68
تعتبر عينات التعليمات البرمجية التالية إصدارات ALGOL 68 من عينات التعليمات البرمجية ALGOL 60 المذكورة أعلاه.
استخدمت تطبيقات ALGOL 68 أساليب ALGOL 60 في الشطب . في حالة ALGOL 68، تكون الرموز ذات الخط الغامق كلمات محجوزة أو أنواع (أوضاع) أو مشغلات.
proc abs max = ([,] real a, ref real y, ref int i, k) real :
التعليق أعظم عنصر مطلق في المصفوفة a، بحجم ⌈a × 2⌈a
يتم نقلها إلى y، ومؤشرات هذا العنصر إلى i وk؛ التعليق
يبدأ
حقيقي y := 0؛ i := ⌊a؛ k := 2⌊a؛
بالنسبة إلى p من ⌊a إلى ⌈a افعل
بالنسبة إلى q من 2⌊a إلى 2⌈a افعل
إذا كان abs a[p, q] > y فإن
y := abs a[p, q]؛
i := p; k := q
في
أود
أود ؛
ي
النهاية # الحد الأقصى للعضلات #
ملاحظة: الحدود السفلية (⌊) والعلوية (⌈) للمصفوفة، وتقطيع المصفوفة، متاحة بشكل مباشر للمبرمج.
اختبار النقطة العائمة algol68:
(
حقيقي أ،ب،ج،د؛
# printf – يرسل الإخراج إلى الملف stand out . #
# printf($p$); – تحديد صفحة جديدة #
printf(($pg$,"أدخل d:"));
قراءة(د)؛
للخطوة من 0 بينما a:=step*d؛ a <= 2*pi قم بطباعة ( $
l$)؛ # $l$ - تحديد سطر جديد . #
ب := sin(أ)؛
ج := جيب التمام(أ)؛
printf(($zd.6d$,a,b,c)) # تنسيق الإخراج برقم واحد قبل و6 أرقام بعد النقطة العشرية. #
أود
)
الجدول الزمني: مرحبا بالعالم
يمكن إثبات الاختلافات وعدم القدرة على نقل البرامج من تطبيق إلى آخر بسهولة من خلال برنامج hello world الكلاسيكي . [ بحاجة لمصدر ]
ألغول 58 (IAL)
لم يكن لدى ALGOL 58 أي مرافق إدخال/إخراج.
عائلة ALGOL 60
نظرًا لعدم وجود مرافق إدخال/إخراج في ALGOL 60، فلا يوجد برنامج hello world محمول في ALGOL. الأمثلة الثلاثة التالية موجودة في Burroughs Extended Algol. يقوم المثالان الأولان بإخراج مباشر إلى المحطة الطرفية التفاعلية التي يتم تشغيلهما عليها. يستخدم المثال الأول مصفوفة أحرف، مشابهة للغة C. تسمح اللغة باستخدام معرف المصفوفة كمؤشر للمصفوفة، وبالتالي في عبارة REPLACE.
ابدأ
الملف F ( النوع = بعيد )؛
مجموعة EBCDIC E [ 0:11 ]؛ استبدل E بـ " HELLO WORLD!" ؛ اكتب ( F ، * ، E ) ؛ النهاية .
برنامج أبسط يستخدم تنسيقًا مضمنًا:
ابدأ
الملف F ( النوع = بعيد )؛
اكتب ( F ، < "مرحبا بالعالم!" > )؛
النهاية .
برنامج أبسط يستخدم عبارة العرض. لاحظ أن مخرجاته ستصل إلى وحدة التحكم في النظام ('SPO'):
بدء العرض ( "مرحبا بالعالم!" ) النهاية .
مثال بديل، باستخدام Elliott Algol I/O هو كما يلي. استخدم Elliott Algol أحرفًا مختلفة لـ "open-string-quote" و"close-string-quote"، ممثلة هنا بـ ' و ' .
برنامج HiFolks ؛ البداية طباعة ' مرحبا بالعالم ' النهاية ؛
فيما يلي نسخة من Elliott 803 Algol (A104). استخدم Elliott 803 القياسي شريطًا ورقيًا بخمسة ثقوب وبالتالي كان يحتوي فقط على أحرف كبيرة. كان الكود يفتقر إلى أي أحرف اقتباس، لذا تم استخدام £ (علامة الجنيه الإسترليني البريطاني) لاقتباس مفتوح و ? (علامة الاستفهام) لاقتباس مغلق. تم وضع تسلسلات خاصة بين علامتي اقتباس مزدوجتين (على سبيل المثال، أنتجت ££L?? سطرًا جديدًا على الطابعة عن بعد).
هيفولكس
يبدأ
اطبع مرحبًا بالعالم
نهاية'
سمحت نسخة I/O من سلسلة ICT 1900 Algol بإدخال البيانات من شريط ورقي أو بطاقة مثقبة. يسمح وضع "الكامل" لشريط الورق بالأحرف الصغيرة. يتم الإخراج إلى طابعة خطية. تم تمثيل أحرف الاقتباس المفتوحة والمغلقة باستخدام '(' و')' والمسافات بنسبة٪. [27]
'يبدأ'
اكتب نصًا('('مرحبا بالعالم')');
'نهاية'
ألغول 68
تم نشر كود ALGOL 68 مع الكلمات المحجوزة عادةً بأحرف صغيرة، ولكن بخط غامق أو مسطر.
يبدأ printf(($gl$,"مرحبا بالعالم!")) نهاية
في لغة "تقرير Algol 68"، تم تسمية مرافق الإدخال/الإخراج بشكل جماعي باسم "Transput".
الجدول الزمني للأحرف الخاصة في لغة ALGOL
تم تصميم ALGOLs في وقت كانت فيه مجموعات الأحرف متنوعة ومتطورة بسرعة؛ كما تم تعريف ALGOLs بحيث تكون الأحرف الكبيرة فقط مطلوبة.
1960: IFIP – تضمنت لغة Algol 60 والتقرير العديد من الرموز الرياضية المتوفرة على أجهزة الكمبيوتر وأنظمة التشغيل الحديثة، ولكن لسوء الحظ، لم تكن مدعومة على معظم أنظمة الحوسبة في ذلك الوقت. على سبيل المثال: ×، ÷، ≤، ≥، ≠، ¬، ∨، ∧، ⊂، ≡، ␣ و⏨.
سبتمبر 1961: ASCII - مجموعة أحرف ASCII ، التي كانت في مرحلة مبكرة من التطوير، تمت إضافة حرف \ (الشرطة المائلة للخلف) إليها من أجل دعم مشغلي ALGOL المنطقيين /\ و \/ . [28]
1962: ALCOR – تضمنت مجموعة الأحرف هذه حرف الصليب الروني غير المعتاد "᛭" [29] للضرب ورمز الأس العشري "⏨" [30] للترميز العشري. [31] [32] [33]
1964: GOST - سمح المعيار السوفييتي لعام 1964 GOST 10859 بترميز أحرف 4 بت و5 بت و6 بت و7 بت في ALGOL. [34]
1968: "تقرير ألجول 68" - استخدم أحرف ألجول الموجودة، واعتمد كذلك الأحرف → و↓ و↑ و□ و⌊ و⌈ و⎩ و⎧ و○ و⊥ و¢ التي يمكن العثور عليها على لوحة مفاتيح IBM 2741 مع رؤوس الطباعة Typeball (أو كرة الجولف ) المُدرجة (مثل كرة الجولف APL ). أصبحت هذه الأحرف متاحة في منتصف الستينيات أثناء صياغة ألجول 68. تُرجم التقرير إلى الروسية والألمانية والفرنسية والبلغارية، وسمح بالبرمجة بلغات ذات مجموعات أحرف أكبر، مثل الأبجدية السيريلية لنظام BESM -4 السوفييتي . جميع أحرف ألجول هي أيضًا جزء من معيار يونيكود ومعظمها متاح في العديد من الخطوط الشائعة .
أكتوبر 2009: Unicode – ⏨تمت إضافة (رمز الأس العشري) لتدوين النقطة العائمة إلى Unicode 5.2 لتحقيق التوافق مع برنامج Buran التاريخي ALGOL. [35]
إرث
كانت المساهمة المهمة لتقرير ALGOL 58 هي توفير مصطلحات قياسية لمفاهيم البرمجة: العبارة، والإعلان، والنوع، والعلامة، والأساسي، والكتلة، وغيرها. [10]
انظر أيضا
مراجع
- ^ اسم هذه العائلة اللغوية يُذكر أحيانًا بأحرف مختلطة (Algol 60 Archived 25 June 2007 at the Wayback Machine )، وأحيانًا بأحرف كبيرة بالكامل (ALGOL68 Archived 13 September 2014 at the Wayback Machine ). من أجل التبسيط، تستخدم هذه المقالة ALGOL .
- ^ مجموعة خوارزميات ACM أرشيف 17 أكتوبر 2011 على ويكي ويكس أرشيفات مضغوطة للخوارزميات. ACM .
- ^ O'Hearn, PW; Tennent, RD (September 1996). "اللغات الشبيهة بالألغول، مقدمة". مؤرشف من الأصل في 14 نوفمبر 2011.
- ^ "لغة برمجة ALGOL" أرشيف 6 أكتوبر 2016 على موقع Wayback Machine ، جامعة ميشيغان-ديربورن
- ^ abc Backus, John Warner ; Bauer, Friedrich Ludwig ; Green, Julien ; Katz, Charles ; McCarthy, John ; Naur, Peter ; Perlis, Alan Jay ; Rutishauser, Heinz ; Samelson, Klaus ; Vauquois, Bernard ; Wegstein, Joseph Henry ; van Wijngaarden, Adriaan ; Woodger, Michael (مايو 1960). Naur, Peter (محرر). "تقرير عن لغة الخوارزمية ALGOL 60". اتصالات جمعية الحوسبة الآلية . 3 (5). كوبنهاجن، الدنمارك: 299-314. doi : 10.1145/367236.367262 . ISSN 0001-0782. S2CID 278290.
- ^ "تقرير منقح عن لغة الخوارزمية Algol 60". 1963. مؤرشف من الأصل في 25 يونيو 2007. تم استرجاعه في 8 يونيو 2007 .
- ^ "مترجم ALGOL 60 لـ X1" (PDF) . 1961. أرشفة (PDF) من النسخة الأصلية في 9 أكتوبر 2022 . تم الاسترجاع في 7 يناير 2021 .
- ^ "تقرير منقح عن لغة الخوارزمية ALGOL 68" (PDF) . 1973. مؤرشف من الأصل (PDF) في 13 سبتمبر 2014. تم الاسترجاع في 13 سبتمبر 2014 .
- ^ "تاريخ ALGOL — Software Preservation Group". www.softwarepreservation.org . تم الاسترجاع في 14 مارس 2024 .
- ^ abc Bemer, Bob. "A Politico-Social History of Algol" (PDF) . متحف تاريخ الكمبيوتر . تم الاسترجاع في 9 أغسطس 2024 .
- ^ Knuth, Donald E. (1964). "Backus Normal Form vs Backus Naur Form". Communications of the ACM . 7 (12): 735–736. doi : 10.1145/355588.365140 . S2CID 47537431.
- ^ اقتباس من جائزة ACM: بيتر نور محفوظ في 2 أبريل 2012 في Archive-It ، 2005
- ^ بيرليس، آلان جيه (1978). "الجانب الأمريكي من تطوير لغة ألغول". تاريخ لغات البرمجة. ص 75-91. doi :10.1145/800025.1198352. ISBN 0-12-745040-8- عبر dl.acm.org.
- ^ "تلميحات حول تصميم لغة البرمجة" محفوظ في 15 سبتمبر 2009 على موقع واي باك مشين ، CAR Hoare، ديسمبر 1973. صفحة 27. (يُنسب هذا البيان أحيانًا بشكل خاطئ إلى Edsger W. Dijkstra ، الذي شارك أيضًا في تنفيذ أول مُجمِّع ALGOL 60. )
- ^ Dybvig, RK; et al. Rees, Jonathan; Clinger, William; Abelson, Hal (eds.). "تقرير منقح (3) عن مخطط اللغة الخوارزمية، (مخصص لذكرى ALGOL 60)". مؤرشف من الأصل في 14 يناير 2010. تم الاسترجاع في 20 أكتوبر 2009 .
- ^ "موسوعة لغات الحاسوب". مؤرشف من الأصل في 27 سبتمبر 2011. اطلع عليه بتاريخ 20 يناير 2012 .
- ^ تاريخ متحف الكمبيوتر محفوظ في 20 أغسطس 2010 على موقع Wayback Machine ، جهاز الكمبيوتر Zuse-Computer Z23 التاريخي، تم ترميمه بواسطة مدرسة Konrad Zuse في Hünfeld، لمركز تاريخ متحف الكمبيوتر في ماونتن فيو (كاليفورنيا) الولايات المتحدة
- ^ Daylight, EG (2011). "صرخة ديكسترا الحاشدة للتعميم: ظهور الإجراء المتكرر، أواخر الخمسينيات – أوائل الستينيات". مجلة الكمبيوتر . 54 (11): 1756–1772. CiteSeerX 10.1.1.366.3916 . doi :10.1093/comjnl/bxr002. مؤرشف من الأصل في 12 مارس 2013.
- ^ Kruseman Aretz, FEJ (30 يونيو 2003). "مترجم Dijkstra-Zonneveld ALGOL 60 لجهاز Electrologica X1". هندسة البرمجيات (PDF) . تاريخ علوم الكمبيوتر. أمستردام: مركز العلوم والمعلوماتية. مؤرشف من الأصل (PDF) في 4 مارس 2016.
- ^ هواري، أنتوني (1980). "ملابس الإمبراطور القديمة". اتصالات رابطة الحوسبة الآلية . 24 (2): 75-83. doi : 10.1145/358549.358561 .
- ^ كوفمان، إليوت. "كل ما أحتاج حقًا إلى معرفته تعلمته في CS1" (PDF) . مؤرشف من الأصل (PDF) في 12 أكتوبر 2012. تم الاسترجاع 20 مايو 2012 .
- ^ "GOGOL – PDP-1 Algol 60 (Computer Language)". الموسوعة التاريخية للغات البرمجة على الإنترنت. مؤرشف من الأصل في 2 فبراير 2018. تم الاسترجاع 1 فبراير 2018 .
- ^ مونيير-كوهن، بيير (2014). "الألغول في فرنسا: من المشروع العالمي إلى الثقافة المضمنة". حوليات معهد مهندسي الكهرباء والإلكترونيات لتاريخ الحوسبة . 36 (4): 6-25. doi :10.1109/MAHC.2014.50. ISSN 1058-6180. S2CID 16684090.
- ^ ويبرمان، هانز ويلم (1968) [15/06/1967، 1966]. “تعريف von Schrankenzahlen في Triplex-ALGOL”. الحوسبة (باللغة الألمانية). 3 (2). كارلسروه، ألمانيا: سبرينغر: 99-109. دوى :10.1007/BF02277452. ISSN 0010-485X. S2CID 36685400.
- ^ Aho, Alfred V .; Sethi, Ravi ; Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools (الطبعة الأولى). Addison-Wesley. ISBN 0-201-10194-7.، القسم 7.5، والمراجع الواردة فيه
- ^ "803 ALGOL" محفوظ في 29 مايو 2010 على موقع Wayback Machine ، الدليل الخاص بـ Elliott 803 ALGOL
- ^ "سلسلة ICL 1900: لغة Algol". منشور ICL الفني رقم 3340. 1965.
- ^ كيف حصل ASCII على Backslash محفوظ في 11 يوليو 2014 على موقع Wayback Machine ، بوب بيمر
- ^ صليب حديدي/روني
- ^ رمز الأس العشري
- ^ باومان ، ر. (أكتوبر 1961). "دليل ALGOL لمجموعة ALCOR، الجزء الأول" [دليل ALGOL لمجموعة ALCOR]. Elektronische Rechenanlagen (بالألمانية): 206-212.
- ^ باومان ، ر. (ديسمبر 1961). "دليل ALGOL لمجموعة ALCOR، الجزء 2" [دليل ALGOL لمجموعة ALCOR]. Elektronische Rechenanlagen (باللغة الألمانية). 6 : 259-265.
- ^ باومان، ر. (أبريل 1962). "دليل ALGOL لمجموعة ALCOR، الجزء 3" [دليل ALGOL لمجموعة ALCOR]. Elektronische Rechenanlagen (بالألمانية). 2 .
- ^ "GOST 10859 standard". مؤرشف من الأصل في 16 يونيو 2007. استرجاع 5 يونيو 2007 .
- ^ Broukhis, Leonid (22 January 2008). "Revised proposal to encoding the decimal exponent symbol" (PDF) . www.unicode.org . ISO/IEC JTC 1/SC 2/WG 2. مؤرشف من الأصل (PDF) في 31 يوليو 2015 . تم الاسترجاع في 24 يناير 2016 .
وهذا يعني أن الحاجة إلى تحويل ترميز البرامج والوثائق القائمة على GOST قد تنشأ: لا يمكن إعادة تجميع الخوارزميات الرقمية القديمة (التي قد يكون بعضها موضع اهتمام، على سبيل المثال للهبوط التلقائي لمكوك بوران ...) المُحسَّنة لتمثيل النقطة العائمة غير IEEE لـ BESM-6 ببساطة ومن المتوقع أن تعمل بشكل موثوق، وقد يكون بعض التدخل البشري ضروريًا.
قراءة إضافية
- O'Hearn, Peter; Tennent, Robert D., eds. (1997). Algol-like Languages . المجلد 1. كامبريدج، ماساتشوستس: بيركهاوزر. doi :10.1007/978-1-4612-4118-8. ISBN 9780817638801. S2CID 6273486.المجلد الأول من مجموعة مكونة من مجلدين، يتضمن مقدمة من بيتر دبليو أوهيرن وروبرت د. تيننت، وتقرير عن Algol 60 من بيتر ناور وزملائه، وأربعة فصول من جون سي رينولدز ، وفصول أخرى من كريستوفر ستراتشي ، وماتياس فيليسن ، وستيفن ويكس ، وألبرت ر. ماير ، وكورت سيبر، وفيبين سواروب، وأوداي س. ريدي، وإيفان أيرلاند.
- باومان، ريتشارد [بالألمانية] ؛ فيليسيانو، مانويل؛ باور، فريدريش لودفيج ؛ ساميلسون، كلاوس (1964). مقدمة إلى لغة الخوارزمية - تمهيد لغير المتخصصين، مع التركيز على الاستخدامات العملية للغة الخوارزمية. الحوسبة الآلية. إنجلوود كليفس، نيوجيرسي: برنتيس هول، إنك . رقم ISBN 0134778286. LCCN 64-10740. ark:/13960/t6qz35p37 . تم الاسترجاع في 23 أكتوبر 2022 .
- رانديل، برايان و إل جيه راسل (1964). تنفيذ ألجول 60: ترجمة واستخدام برامج ألجول 60 على الكمبيوتر. أكاديميك بريس. CiteSeerX 10.1.1.737.475 .حول تصميم مُجمِّع Whetstone، وأحد الأوصاف المنشورة المبكرة لتنفيذ مُجمِّع. للاطلاع على ورقة بحثية ذات صلة، راجع مقال Brian Randell 's Whetstone Algol Revisited Archived 27 February 2008 at the Wayback Machine ، وThe Whetstone KDF9 Algol Translator.
- Dijkstra, E. W (1961)، ترجمة ALGOL 60: مترجم ALGOL 60 لـ X1 وعمل مترجم لـ ALGOL 60 (PDF) ، تقرير MR 35/61، أمستردام: Mathematisch Centrum، أرشفة (PDF) من النسخة الأصلية بتاريخ 9 أكتوبر 2022
- كروسمان أريتز، فرانس إي جيه، مترجم Dijkstra – Zonneveld ALGOL 60 لـ Electrologica X1 (PDF) ، مذكرة تاريخية SEN، 2، أمستردام: Centrum voor Wiskunde en Informatica، أرشفة (PDF) من الأصلي في 9 أكتوبر 2022
- جوس، جيرهارد [بالألمانية] (7 أغسطس 2017). Geschichte der Deutschsprachigen Informatik – Programmiersprachen und Übersetzerbau [ تاريخ المعلوماتية في البلدان الناطقة باللغة الألمانية – لغات البرمجة وتصميم المترجمات ] (PDF) (باللغة الألمانية). كارلسروه، ألمانيا: Fakultät für Informatik، معهد كارلسروه للتكنولوجيا . أرشفة (PDF) من النسخة الأصلية في 19 مايو 2022 . تم الاسترجاع في 14 نوفمبر 2022 .
روابط خارجية
- تقرير منقح عن لغة الخوارزمية Algol 60 بقلم بيتر نور وآخرين.
- الجانب الأوروبي من المرحلة الأخيرة من تطوير ALGOL 60، بقلم بيتر ناور
- تاريخ ALGOL من متحف تاريخ الكمبيوتر
- مُجمِّع ALGOL-F مُمكَّن عبر الويب يسمح بإجراء تجارب صغيرة [ رابط ميت دائم ]
- مُجمِّع ALGOL عبر الإنترنت
- مترجم ALGOL60 لجان فان كاتفيك (GitHub)
