ألغول 68 سي

**ألغول 68 سي** هي لغة برمجة حاسوبية إجرائية وهي لهجة من الغول 68 طُوِّرت بواسطة ستيفن ر. بورن ومايكل جاي لبرمجة نظام كامبريدج للجبر (كَامِل). كُتِبَ المُترجم الأولي بلغة مُترجم برينستون النحوي (ساي-كو من قِبَل إدغار ت. آيرونز ) الذي نفّذه جيه إتش ماثيومان في كامبريدج.

استخدم ألغول 68 سي لاحقًا لنظام التشغيل كاي-أُس الخاص بجهاز الكمبيوتر كاب ذي الأمان القائم على القدرات في جامعة كامبريدج في عام 1971. ومن بين المساهمين الأوائل الآخرين أندرو د. بيريل وإيان ووكر.

أُجريت أعمال لاحقة على المُترجم بعد أن غادر بورن جامعة كامبريدج عام 1975. أُضيفت خاصية جمع البيانات المهملة ولا تزال قاعدة التعليمات البرمجية قيد التشغيل. على نظام تشغيل/أم في تي محاكى باستخدام هَر-كْيُو-ليز.

كان مُترجم لغة ألغول 68 سي يُنتج مخرجات بلغة زي-كود وهي لغة وسيطة تعتمد على المسجلات والتي يُمكن تفسيرها أو ترجمتها إلى ملف تنفيذي أصلي. وقد شجعت هذه القدرة على تفسير أو ترجمة زي-كود على نقل ألغول 68 سي إلى العديد من منصات الحوسبة المختلفة. فإلى جانب حاسوب كاب نُقل المُترجم إلى أنظمة أخرى بما في ذلك نظام مراقبة المحادثات (سي-إم-إس) وتوبس 10 وزاي-لوغ زي 80.

## ملحقات لغة ألغول 68 سي إلى لغة ألغول 68
فيما يلي عينة من بعض التوسعات البارزة:

* يتم تعيين قيمة *op* := تلقائيًا لأي عامل على سبيل المثال `*:=` و `+:=`
* `UPTO` و `DOWNTO` و `UNTIL` في عبارات التكرار؛
* عامل الإزاحة ( `:=:=` )
* *العناصر التركيبية* `ANDF` و `ORF` و `THEF` .
* تجميع منفصل - عبارة `ENVIRON` وعبارة `USING`
* لم يتم تحديد النطاقات
* الحدود في المُعلنات الرسمية
* `CODE` ... بند `EDOC` - لتضمين زيكود

### بنود <code>ENVIRON</code> و <code>USING</code>
يتم التجميع المنفصل في لغة لغة ألغول 68 سي باستخدام عبارتي `ENVIRON` و `USING` . تحفظ عبارة `ENVIRON` بيئة التشغيل بالكامل عند ظهورها. أما الوحدة النمطية المنفصلة المكتوبة بدءًا بعبارة `USING` فتُدرج فعليًا في الوحدة النمطية الأولى عند ظهور عبارة `ENVIRON`.

تعتبر `ENVIRON` و `USING` مفيدة لأسلوب البرمجة *من أعلى إلى أسفل* على عكس أسلوب البرمجة *من أسفل إلى أعلى* الذي تنطوي عليه آليات المكتبة التقليدية.

تُعدّ هذه البنود بمثابة *عكسٍ* لـ #إدراج في لغة البرمجة سي أو **استيراد**في لغة بايثون . يكمن الغرض من آلية `ENVIRON` في السماح بتقسيم مصدر البرنامج إلى أجزاءٍ يسهل التعامل معها. يكفي تحليل ملف المصدر المشترك مرةً واحدةً فقط على عكس **#إدراج** في لغة البرمجة سي حيث يجب تحليل ملف التضمين لكل ملف مصدر يتضمنه.

#### مثال على بند <code>ENVIRON</code>
ملف باسم *mylib.a68* :
```
BEGIN
  INT dim = 3; # a constant #
  INT a number := 120; # a variable #
  ENVIRON EXAMPLE1;
  MODE MATRIX = [dim, dim]REAL; # a type definition #
  MATRIX m1;
  a number := ENVIRON EXAMPLE2;
  print((a number))
END
```


#### مثال على جملة <code>USING</code>
ملف باسم *usemylib.a68* :
```
USING EXAMPLE2 FROM "mylib"
BEGIN
 MATRIX m2; # example only #
 print((a number)); # declared in mylib.a68 #
 print((2 UPB m1)); # also declared in mylib.a68 #
 ENVIRON EXAMPLE3; # ENVIRONs can be nested #
 666
END
```


## القيود المفروضة على اللغة من معيار ALGOL 68

* لا يدعم أَل-غول 68 فلكس والمصفوفات ذات الأطوال المتغيرة
* تم تنفيذ `MODE STRING` بدون مرونة
* لم يتم تنفيذ بند التوازي بار
* نقل غير قياسي
* آحرون...

كان هناك مترجم ومجمع للغة أَلغول 68 سي متاحًا لأجهزة بي دي بي 10و '''آي-بي-إم سيستم 360''' والعديد من أجهزة الكمبيوتر الأخرى.

## الثقافة الشعبية
استخدم جاي وبورن سلفًا مبكرًا جدًا لهذا المترجم لكتابة أول برامج لعبة الحياة على جهاز بي دي بي 7 المزود بشاشة دي إي سي 340.

تُفصّل أعدادٌ مختلفة *من مجلة "ليفربول سوفتوير غازيت"* تفاصيل تطبيق زي80. كان المُصرّف يتطلب حوالي 120 كيلوبايت من الذاكرة للتشغيل لذا فإن ذاكرة زي80 البالغة 64 كيلوبايت صغيرة جدًا لتشغيل المُصرّف. لذلك كان لا بد من ترجمة برامج أَلغول 68 سي الخاصة بـ Z80 ترجمةً متقاطعة من حاسوب كاب الأكبر أو حاسوب '''آي-بي-إم سيستم 360''' المركزي.

## أَلغول 68 سي و يونيكس
أعاد ستيفن بورن لاحقًا استخدام عبارات `<u>'''if'''</u> ~ <u>then</u> ~ <u>else</u> ~ <u>'''fi'''</u>` و `<u>'''case'''</u> ~ <u>in</u> ~ <u>out</u> ~ <u>'''esac'''</u>` و `<u>for</u> ~ <u>while</u> ~ <u>'''do'''</u> ~ <u>'''od'''</u>` في واجهة أوامر Unix Bourne الشائعة، ولكن مع تغيير صيغة `<u>in</u>` وإزالة `<u>out</u>` واستبدال `<u>od</u>` بـ `<u>done</u>` (لتجنب التعارض مع أداة od ).

بعد كامبريدج أمضى بورن تسع سنوات في مختبرات بيل مع فريق يونكس الإصدار السابع. بالإضافة إلى تطوير واجهة بورن قام بنقل لغة أَلغول 68 سي إلى يونكس على جهاز دي إي سي بي دي بي-11-45 وأضاف خيارًا خاصًا إلى مصحح أخطاء يونكس الخاص به *أدفانسد ديباجر* (إيه دي بي) للحصول على تتبع مسار الاستدعاء للبرامج المكتوبة بلغة أَلغول 68 سي. إليكم مقتطفًا من صفحات دليل يونكس الإصدار السابع:
 اسم
    أداة تصحيح الأخطاء adb
 ملخص
    بنك التنمية الآسيوي [-w] [ objfil [ كورفيل ] ]
 [...]
 الأوامر
 [...]
     المُعدِّل
        أوامر متنوعة. المُعدِّلات المتاحة
        نكون:
        [...]
        تتبع مكدس ALGOL 68. إذا كان العنوان هو
           وبناءً على ذلك، يُعتبر هذا العنوان هو عنوان
           الإطار الحالي (بدلاً من r4). إذا كان العد
           إذا تم إعطاء عدد الإطارات الأول فقط
           تتم طباعتها.

## المراجع




## الروابط الخارجية

* 
* Cambridge ALGOL 68: on the historical roster of computer languages – includes 10+ publication references.
* A Transportation of ALGOL 68C – PJ Gardner, University of Essex – March 1977 (From 370 to DECsystem-10)
* Running ALGOL 68C on MVS - how to install ALGOL 68C on an emulated MVS system

تصنيف:برمجيات محاكاة افتراضية
تصنيف:صفحات بترجمات غير مراجعة