ALGOL W

ALGOL W هي لغة برمجة . وهي مبنية على اقتراح ALGOL X من نيكلاوس ويرث وتوني هوار كخليفة لـ ALGOL 60. تُعد ALGOL W ترقية بسيطة نسبيًا لـ ALGOL 60 الأصلية، حيث أضافت أنواع بيانات string و bitstring و complex number و reference to record وتمرير المعاملات بالنتيجة ، وقدمت عبارة ` return`، واستبدلت عبارة `return` بعبارة `return`، وحسّنت اللغة بشكل عام.whileswitchcase

اعتُبرت إضافة ويرث غير كافية مقارنةً بـ ALGOL 60، وتم اختيار إضافة أدريان فان وينغاردن الأكثر تعقيدًا ، والتي أصبحت فيما بعد ALGOL 68، في اجتماعٍ حافلٍ بالجدل. نشر ويرث لاحقًا نسخته بعنوان " مساهمة في تطوير ALGOL" . [ 1 ] وبعد إضافة بعض التعديلات الطفيفة، أصبحت هذه النسخة في النهاية ALGOL W.

أشرف ويرث على تطبيق عالي الجودة لنظام IBM System/360 في جامعة ستانفورد ، والذي تم توزيعه على نطاق واسع. [ 2 ] [ 3 ] كُتب التطبيق بلغة PL360 ، وهي لغة تجميع شبيهة بلغة ALGOL صممها ويرث. يتضمن التطبيق إمكانيات فعّالة لتصحيح الأخطاء وتحليل الأداء .

شكلت لغة ALGOL W الأساس للغة باسكال ، وسيكون تركيبها النحوي مألوفًا فورًا لأي شخص لديه خبرة في باسكال. وتتمثل الاختلافات الرئيسية في تحسينات معالجة السجلات في باسكال، ومن الغريب، فقدان ALGOL W لقدرتها على تحديد طول المصفوفة أثناء التشغيل، وهي إحدى أكثر ميزات باسكال الأصلية التي لاقت استياءً واسعًا.

بناء الجملة والدلالات

تعتمد بنية لغة ALGOL W على مجموعة فرعية من ترميز الأحرف EBCDIC . في لغة ALGOL 60 ، تُعتبر الكلمات المحجوزة عناصر معجمية مستقلة، بينما في ALGOL W، هي مجرد سلاسل من الأحرف، ولا تحتاج إلى حذف . تُفصل الكلمات المحجوزة والمعرفات بمسافات. [ 2 ] وبهذه الطرق، تُشبه بنية لغة ALGOL W بنية لغة باسكال واللغات اللاحقة.

يُعرّف وصف لغة ALGOL W [ 4 ] لغة ALGOL W بقواعد نحوية للزوائد تُشبه صيغة باكوس-ناور (BNF). وكانت هذه القواعد النحوية الرسمية بمثابة مقدمة لقواعد فان وينغاردن . [ 1 ] [ 5 ]

يتم تعريف جزء كبير من دلالات ALGOL W نحويًا: [ 4 ]

  • يتم تمييز المعرفات من خلال تعريفها ضمن النطاق الحالي . على سبيل المثال، a ⟨procedure identifier⟩هو معرف تم تعريفه بواسطة إعلان إجراء، و a ⟨label identifier⟩هو معرف يتم استخدامه كعلامة انتقال .
  • تُمثل أنواع المتغيرات والتعبيرات بواسطة اللواحق. على سبيل المثال، هو الكيان النحوي لدالة تُرجع قيمة من النوع ، إذا تم تعريف مُعرّف كدالة عددية صحيحة في النطاق الحالي ، فسيتم توسيعه إلى .⟨τ function identifier⟩τ⟨integer function identifier⟩
  • أخطاء النوع هي أخطاء نحوية. على سبيل المثال، ⟨integer expression⟩ / ⟨integer expression⟩و ⟨real expression⟩ / ⟨real expression⟩كيانان نحويان صحيحان ومختلفان يمثلان تعبيرات، لكن ⟨real expression⟩ DIV ⟨integer expression⟩(أي، قسمة عدد صحيح على قيمة عددية عشرية) كيان نحوي غير صحيح.

مثال

يوضح هذا إمكانية استخدام نوع السجل في لغة ALGOL W ، بما في ذلك استخدام المرجع الفارغ . [ 2 ]

سجل الشخص ( سلسلة ( 20 ) الاسم ؛ عدد صحيح العمر ؛ ذكر منطقي ؛ مرجع ( شخص ) الأب ، الأم ، أصغر الأبناء ، الأخ الأكبر ) ؛إجراء مرجعي ( شخص ) لأصغر عم ( مرجع ( شخص ) R ) ؛ ابدأ مرجع ( شخص ) P ، M ؛ P := أصغر نسل ( أب ( أب ( R ))) ؛ طالما ( P ¬ = NULL ) و ( ¬ ذكر ( P )) أو ( P = أب ( R )) نفّذ P := الأخ الأكبر ( P ) ؛ M := أصغر نسل ( أم ( أم ( R ))) ؛ طالما ( M ¬ = NULL ) و ( ¬ ذكر ( M )) نفّذ M := الأخ الأكبر ( M ) ؛ إذا كان P = NULL، فإن وإلا إذا كان M = NULL ، فإن وإلا إذا كان عمر ( P ) < عمر ( M ) ، فإن وإلا M. نهاية

مراجع

  1. 1 2 ويرث، نيكلاوس ؛ هوار، سي. أ. ر. (يونيو 1966). "مساهمة في تطوير لغة ALGOL" . مجلة اتصالات رابطة آلات الحوسبة . 9 (6): 413-432 . doi : 10.1145/365696.365702 . S2CID 11901135. تم الاطلاع عليه في 7 أكتوبر 2020 - عبر رابطة آلات الحوسبة . 
  2. 1 2 3 باور، هنري ر.؛ بيكر، شيلدون آي.؛ غراهام، سوزان إل.؛ فورسايث، جورج إي.؛ ساتيرثويت، إدوين إتش. (مارس 1968). رقم التقرير الفني: CS-TR-68-89 . قسم علوم الحاسوب (تقرير). جامعة ستانفورد.(وثائق متنوعة لتطبيق ستانفورد لعام 1972 لـ ALGOL W؛ يتضمن هذا التقرير وصف لغة ALGOL W) .
  3. سايتس، ريتشارد. "دليل مرجعي لـ ALGOL W" (ملف PDF) . i.stanford.edu . جامعة ستانفورد . تم الاطلاع عليه بتاريخ 24 يوليو 2022 .
  4. 1 2 باور، هنري ر.؛ بيكر، شيلدون آي.؛ غراهام، سوزان ل.؛ ساتيرثويت، إدوين هـ.؛ سايتس، ريتشارد ل. (يونيو 1972). وصف لغة ALGOL W (ملف PDF) (تقرير).
  5. فان وينغاردن، أدريان (22 أكتوبر 1965). التصميم المتعامد ووصف لغة رسمية: MR76 (ملف PDF) (تقرير). أمستردام ، هولندا: المركز الرياضي. مؤرشف من الأصل (ملف PDF) في 29 أكتوبر 2019. تم الاطلاع عليه في 7 أكتوبر 2020 عبر جامعة إرنست آبي يينا للعلوم التطبيقية، ألمانيا.