ألاس أوتوكود
لغة أطلس أوتوكود ( AA ) [ 1 ] [ 2 ] هي لغة برمجة طُوِّرت حوالي عام 1963 في جامعة مانشستر . وهي نسخة معدلة من لغة ALGOL ، وقد طوّرها توني بروكر وديريك موريس لحاسوب أطلس . كُتِبَت المترجمات الأولية للغة AA وAB بواسطة جيف رول وتوني بروكر باستخدام مُترجم بروكر-موريس ، مع تطبيق لاحق مكتوب يدويًا بدون استخدام مُترجم بروكر-موريس (ABC) من قِبَل جيف رول. [ 3 ]
كانت كلمة Autocode في الأساس مصطلحًا مبكرًا للغة البرمجة . وقد تختلف أكواد Autocode المختلفة اختلافًا كبيرًا.
سمات
كانت لغة AA لغةً ذات بنية كتلية تتميز بمتغيرات وإجراءات فرعية ووظائف محددة النوع بشكل صريح. وقد أغفلت بعض ميزات ALGOL مثل تمرير المعاملات بالاسم ، والذي يعني في ALGOL 60 تمرير عنوان الذاكرة لإجراء فرعي قصير ( thunk ) لإعادة حساب المعامل في كل مرة يُذكر فيها.
كان بإمكان مترجم AA إنشاء فحص النطاق للوصول إلى المصفوفة ، وسمح للمصفوفة بأن يكون لها أبعاد يتم تحديدها في وقت التشغيل ، أي أنه يمكن تعريف المصفوفة على أنها ، حيث و هي قيم محسوبة.integerarray Thing (i:j)ij
قد تتضمن إجراءات AA عالية المستوى شفرة الآلة ، إما لجعل حلقة داخلية أكثر كفاءة أو لتنفيذ عملية لا يمكن القيام بها بسهولة بطريقة أخرى. [ 1 ]
تضمنت لغة AA complexنوع بيانات [ 1 ] لتمثيل الأعداد المركبة ، ويعود ذلك جزئيًا إلى ضغط من قسم الهندسة الكهربائية ، حيث تُستخدم الأعداد المركبة لتمثيل سلوك التيار المتردد . وقد مُثِّل الجذر التربيعيi التخيلي للعدد -1 بالرمز ، والذي عُومِلَ كثابت مركب ثابت = i .
تم إسقاط نوع البيانات complexعندما تطورت لغة Atlas Autocode لاحقًا إلى لغة Edinburgh IMP . كانت IMP امتدادًا للغة AA، وقد استُخدمت لكتابة نظام التشغيل Edinburgh Multiple Access System (EMAS) .
إضافةً إلى كونها رائدةً في تطوير IMP وEMAS، تتميز AA باحتوائها على العديد من خصائص مُترجم Compiler الأصلي . وقد تضمنت إحدى نسخ مُترجم AA دعمًا أثناء التشغيل لمحلل نحوي تنازلي متكرر . وظل نمط المحلل النحوي المستخدم في Compiler Compiler مُستخدمًا بشكل متواصل في إدنبرة منذ الستينيات وحتى عام 2000 تقريبًا.
تم تطوير برامج Autocodes أخرى لجهاز الكمبيوتر Titan ، ونموذج Atlas 2 الأولي في كامبريدج، وجهاز Ferranti Mercury.
بناء الجملة
كانت بنية لغة أطلس أوتوكود مشابهة إلى حد كبير للغة ALGOL، مع تأثرها بجهاز الإخراج المتاح للمؤلف، وهو جهاز فريدن فليكسو رايتر . وبالتالي ، سمحت اللغة باستخدام رموز½ مثل .5و ...2↑|*
ومن بين الأحرف الأخرى التي تم العثور على استخدام لها في لغة AA ما يلي: αفي الأرقام ذات الفاصلة العائمة، على سبيل المثال ، 3.56α-7للحديثة 3.56e-7 ؛ βلتعني النصف الثاني من كلمة ذاكرة أطلس 48 بت ؛ πللثابت الرياضي باي .
عندما تم نقل لغة AA إلى حاسوب English Electric KDF9 ، تم تغيير مجموعة الأحرف إلى معيار المنظمة الدولية للتوحيد القياسي (ISO). وقد استعاد مشروع تاريخ الحاسوب في إدنبرة هذا المترجم من شريط ورقي قديم، وهو متاح عبر الإنترنت، وكذلك نسخة ممسوحة ضوئيًا عالية الجودة من النسخة الأصلية لدليل Atlas Autocode الصادرة في إدنبرة. [ 2 ]
كانت الكلمات المفتاحية في لغة AA قابلة للتمييز عن النصوص الأخرى من خلال التسطير، والذي تم تنفيذه عبر الكتابة فوق النص في برنامج Flexowriter (قارن بالخط العريض في لغة ALGOL). كما وُجد نظامان لتمرير الكلمات المفتاحية . أولًا، كان هناك وضع "محددات الأحرف الكبيرة" حيث تُعامل جميع الأحرف الكبيرة (خارج السلاسل النصية) كأحرف صغيرة مسطرة. ثانيًا، في بعض الإصدارات (ولكن ليس في إصدار Atlas الأصلي)، كان من الممكن تمرير الكلمات المفتاحية بوضع %علامة " " أمامها، على سبيل المثال، endofprogrammeيمكن كتابة الكلمة المفتاحية كـ %end %of %programmeأو %endofprogramme. قلل هذا بشكل كبير من وقت الكتابة، نظرًا للحاجة إلى حرف واحد فقط، بدلًا من الكتابة فوق الكلمة المفتاحية بأكملها. كما هو الحال في لغة ALGOL، لم تكن هناك كلمات محجوزة في اللغة، حيث تم تحديد الكلمات المفتاحية عن طريق التسطير (أو تمرير الكلمات المفتاحية)، وليس عن طريق التعرف على تسلسلات الأحرف المحجوزة. في العبارة ، توجد كلمة مفتاحية ومتغير باسم .if token=if thenresult = tokenifif
كما هو الحال في لغة ALGOL، سمحت لغة AA بوجود مسافات في أسماء المتغيرات، مثل integer previous value`. لم تكن المسافات ذات أهمية، وتمت إزالتها قبل التحليل في مرحلة تحليل معجمي أولي بسيطة تُسمى " إعادة بناء السطر ". ما سيراه المترجم في المثال أعلاه هو ` ``. كان وجود المسافات ممكنًا جزئيًا بسبب تمييز الكلمات المفتاحية بطرق أخرى، وجزئيًا لأن المصدر تمت معالجته بواسطة تحليل بدون ماسح ضوئي ، دون مرحلة تحليل معجمي منفصلة، مما سمح بأن يكون بناء الجملة المعجمي حساسًا للسياق.iftoken=ifthenresult=token
تسمح صيغة التعبيرات بحذف عامل الضرب، على سبيل المثال، 3aتم التعامل مع كـ 3*a، a(i+j)وتم التعامل مع كما a*(i+j)لو aلم يكن مصفوفة. في الاستخدامات المبهمة، تم اختيار أطول اسم ممكن ( أقصى مضغ )، على سبيل المثال، abلم يتم التعامل مع كـ ، سواء تم تعريف و a*bأم لا .ab
مراجع
- 1 2 3 4 بروكر، آر إيه؛ روهل، جيه إس (1965). "دليل مرجعي لبرنامج أطلس أوتوكود" (ملف PDF) . قسم علوم الحاسوب، جامعة مانشستر.( تمت أرشفة النسخ الأصلية بتاريخ 16 يناير 2019 في موقع Wayback Machine )
- 1 2 شوفولد، بي دي؛ أوزبورن، إم آر (1965). "البرمجة بلغة أطلس أوتوكود، تقرير وحدة الحاسوب رقم 1" (ملف PDF) . جامعة إدنبرة. مؤرشف من الأصل (ملف PDF) بتاريخ 15 مايو 2020. تم الاطلاع عليه بتاريخ 12 أبريل 2006 .( تمت أرشفة النسخ الأصلية بتاريخ 21-07-2011 في موقع Wayback Machine )
- ↑ "توني بروكر ومترجم أطلس" (ملف PDF) . فبراير 2014. تاريخ الاسترجاع: 16 فبراير 2024 .
روابط خارجية
- الميزات الرئيسية لبرنامج أطلس أوتوكود ، من تأليف آر إيه بروكر، وجيه إس روهل، وإس آر كلارك
- دليل أطلس أوتوكود المصغر من تأليف دبليو إف لونون وجي رايدنج (يوليو 1965)
- دليل مرجعي لبرنامج أطلس أوتوكود من تأليف آر إيه بروكر وجيه إس روهل (مارس 1965)
- ميركوري أوتوكود، أطلس أوتوكود وبعض الأمور المرتبطة بها. بقلم فيك فورينغتون (يناير 2014)
- مخططات انسيابية لمترجم Atlas Autocode على KDF9.
- فيرانتي
- تاريخ الحوسبة في المملكة المتحدة
- لغات البرمجة الهيكلية
