أطلس أوتوكود

أطلس اوتوكود (أأ) (AA) كان لغة برمجة استحدثت تقريبا في سنة 1965 في جامعة مانشستر للكمبيوتر أطلس. وقد استحدثت من قبل توني بروكر وديريك موريس كتحسين للغة البرمجة، وإزالة بعض من الميزات الأكثر فقرا في ALGOL مثل «تمرير المعالم حسب الاسم»)التي مع60 ALGOL لا تعنى معناها المعتاد ولكن يتم تمرير العنوان بروتين فرعى قصير. لإعادة حساب المعاملة في كل مرة يرد ذكرها).إذا ظهرت بوضوح كتابة المتغيرات والروتين الفرعى والوظائف. يقوم أطلس أوتوكود (أأ) (AA) البرمجى بإنشاء فحص للمدى لمصفوفة الوصول، ويسمح لمصفوفة ان يكون لها وأبعاد التي يتم تحديدها في وقت التشغيل (أي يمكن أن تعرّف مصفوفة كـ `<u>عدد صحيح</u> <u>مصفوفة</u> شيء (i:j)`، حيث تم حساب i:j على انهم قيم. حيث كان مسموح بألية الترميز المباشر.
 
أطلس اوتوكود يشمل نوع بيانات `<u>مركبة</u>` التي من شأنها دعم الأعداد المركبة (التي تشكل جزءا حقيقيا، وجزءا وهمي وهو اضعاف من الجذر التربيعي للعدد -1)، وذلك جزئيا بسبب ضغوط من قسم الهندسة الكهربائية، لان الأعداد المركبة تستخدم لتمثيل سلوك التيار المتردد. الجذر التربيعي ل-1 يتم تمثيله بـ `<u>i</u>`، الذي كان يعامل على أنه ثابت مركب = *i* 
نوع البيانات `<u>المركبة</u>` اسقطت عندما تحول أطلس اوتوكود لاحقاً إلى لغة البرمجة ادنبره IMP. (و IMP كانت امتدادا لAA وكانت بارزة لكونها تستخدم لكتابة نظام التشغيل EMAS)
وكانت الكلمات الرئيسية في AA تمييز عن غيرها من النصوص لكونها تحتها خط، وكان هناك أيضا نمط"uppercasedelimiters" المحددات ذات الاحرف الكبيرة حيث كافة الأحرف الكبيرة (خارج السلسلة) يتم علاجها كأحرف صغيرة تحتها خط. 
في بعض الإصدارات (ولكن ليس في إصدار أطلس الأصلي)، من أجل كتابة سهلة كان من الممكن شحذ الكلمات بوضع العلامة "`%`" أمامهم، على سبيل المثال الكلمة `<u>endofprogramme</u>` يمكن أن يتم كتابتها `%end %of %programme` أو `%endofprogramme`
لا توجد كلمات محجوزة في اللغة على أنها كلمات أساسية يتم تحديد بوضع خط تحتها، ولا من خلال الاعتراف بتسلسل أحرف محفوظة. في العبارة، `<u>if</u> token=if <u>then</u> <u>result</u> = token` هم الاثنين كلمات أساسية على حد سواء الكلمة `<u>if</u>` وإذا ومتغير اسمه `if`.

وبسبب شحذ الكلمات الأساسية، كان من الممكن ل AA ان تسمح بالمسافات في أسماء المتغيرات، مثل قيمة عددية سابقة. وكانت المسافات ليست كبيرة وأزيلت قبل التحليل في مرحلة ما قبل ليكسنج التافهة وتسمى «إعادة بناء الخط» ما سوف يراه المترجم في المثال أعلاه أن "iftoken=ifthenresult=token".

بناء الجملة للمصطلح سمح باهمال عامل المضاعفة، على سبيل المثال `3a` كانت تعامل كـ `3*a`، و`a(i+j)` كانت تعامل كـ `a*(i+j)` لو لم تكن `a` مصفوفة. في الاستخدامات المبهمة، واتخذت أطول اسم ممكن، على سبيل المثال `ab` لم يكن يعامل كـ `a*b`، سواء كانت ظهرت `a and b` أو لم تظهر.

أطلس اوتوكود كان متأثرا بجهاز الإخراج الذي اتاحه له مخترعه، فرايدن فليكسورايتر وبالتالي فإنه يسمح بالرموز مثل "½" يرمز إلى "5." الرمز العلوى مثلا 2 إلى «أس 2» فليكسوريتر دعمت الضرب فوق الرمز وبالتالي AA فعلت كذلك—حتى ثلاثة أحرف يمكن الضرب فوقها كرمز واحد. على سبيل المثال مجموعة أحرف ليس لديها "↑" رمز، وهكذا كانت علامة أسية ضربت فوق "|" و"*". (ويمكن أيضا وضع الخط للكلمات الرئيسية المذكورة أعلاه أن يتم ذلك باستخدام الضرب فوق الرمز) اللغة مشروحة بالتفصيل في الدليل المرجعي لاوتوكود أطلس.

أحرف فليكسورايتر الأخرى التي تم استخدامها في أطلس اوتوكود كانت: α في أرقام الفاصلة العائمة، على سبيل المثال `3.56α-7` للحديثة `3.56e-7` فإن β تعني «النصف الثاني من كلمة الذاكرة لأطلس»؛ π لعدد بأي الرياضي.

عندما استدارت ال AA إلى KDF9 الإنجليزية الكهربائية الحاسوبية، تم تعديل مجموعة الأحرف إلى أيزو وتعافى المترجم من شريط الورق القديم ادنبره مشروع تاريخ الكمبيوتر وأصبحت متاحة على شبكة الإنترنت، كما هي نسخة ذات جودة عالية من أطلس اوتوكود اليدوي الأصل.

وكان أطلس اوتوكود ثاني أكبر مطالب للشهرة (بعد أن كان سلفا لـ Imp وEMAS) لأن لديه الكثير من الميزات الموجودة في «مترجم التحويل البرمجى» "Compiler Compiler" الأصلي. وهو شكل مختلف من مترجم AA يشمل دعم وقت التنفيذ لمحلل الأصل التكرارى من أعلى إلى أسفل. وكان نوع المحلل في «مترجم التحويل البرمجى» "Compiler Compiler" يستخدم باستمرار في ادنبره في الستينات حتى بداية الألفية.

يوجد برامج ترميز تلقائي autocodes أخرى ل (الكمبيوتر تيتان) (النموذج الأولي أطلس 2) في جامعة كامبريدج وفيرانتى ميكورى.

## مراجع

## وصلات خارجية

* الدليل المرجعي لاوتوكود أطلس
* Programming In Atlas Autocode - Edinburgh University Computer Unit Report #1 (1965). (Original scan)

تصنيف:تاريخ الحوسبة في المملكة المتحدة
تصنيف:فيرانتي
تصنيف:لغات برمجة مهيكلة