لغة برمجة MAD

MAD ( مفكك خوارزمية ميشيغان ) هي لغة برمجة ومترجم برمجي لأجهزة IBM 704 ، ولاحقًا IBM 709 ، وIBM 7090 ، و IBM 7040 ، و UNIVAC 1107 ، و UNIVAC 1108 ، و Philco 210-211، وأخيرًا IBM System/370 . طُوّرت MAD عام 1959 في جامعة ميشيغان على يد برنارد غالر ، وبروس أردن ، وروبرت إم. غراهام ، وهي نسخة معدلة من لغة ALGOL . استُخدمت على نطاق واسع لتدريس البرمجة في الكليات والجامعات خلال ستينيات القرن العشرين، ولعبت دورًا ثانويًا في تطوير أنظمة تشغيل الحاسوب مثل نظام المشاركة الزمنية المتوافق (CTSS)، و Multics ، ونظام ميشيغان الطرفي . [ 1 ] كُتبت النسخة الأصلية من برنامج الدردشة الآلي ELIZA بلغة MAD-SLIP . [ 2 ]

تحتوي محفوظات مكتبة بنتلي التاريخية بجامعة ميشيغان على مواد مرجعية حول تطوير برنامجي MAD وMAD/I، بما في ذلك ثلاثة أقدام خطية من المطبوعات مع ملاحظات مكتوبة بخط اليد وكتيبات مطبوعة أصلية. [ 3 ] [ 4 ] [ 5 ] [ 6 ]

ماد، ماد/أنا، وجوم

توجد ثلاثة برامج تجميع MAD:

  1. برنامج MAD الأصلي ، وهو برنامج تجميعي طُوِّر عام 1959 في جامعة ميشيغان لأجهزة IBM 704 ، ولاحقًا لأجهزة IBM 709 و IBM 7090 المركزية التي تعمل بنظامي التشغيل UMES و CTSS . [ 7 ] [ 8 ] في منتصف الستينيات، نُقل برنامج MAD في جامعة ميريلاند إلى جهاز UNIVAC 1108. [ 9 ] كما توفرت نسخ من برنامج MAD لأجهزة Philco 210-211 و UNIVAC 1107. [ 9 ]
  2. MAD/I ، نسخة "موسعة" من MAD لأجهزة الكمبيوتر من سلسلة IBM System/360 التي تعمل بنظام Michigan Terminal System (MTS). بدأ العمل على المترجم الجديد عام 1965 كجزء من مشروع CONCOMP الذي ترعاه وكالة مشاريع الأبحاث المتقدمة (ARPA) في جامعة ميشيغان. ومع تقدم العمل، اتضح تدريجيًا أن MAD/I لغة جديدة مستقلة عن النسخة الأصلية 7090 من MAD. [ 10 ]
  3. GOM (Good Old MAD)، هو إعادة تنفيذ لبرنامج 7090 MAD الأصلي لأجهزة IBM System/370 المركزية التي تعمل بنظام Michigan Terminal System (MTS). تم إنشاء GOM في أوائل الثمانينيات من القرن الماضي بواسطة دون بوتنر في مركز الحوسبة بجامعة ميشيغان. [ 11 ] [ 12 ]

تاريخ

على الرغم من أن برنامج MAD كان مستوحى من برنامج ALGOL 58 ، إلا أنه لا يشبهه بأي شكل من الأشكال. [ 13 ] [ 14 ]

تضمنت البرامج المكتوبة بلغة MAD برنامج MAIL، [ 15 ] وبرنامج RUNOFF ، [ 16 ] وأحد أوائل أنظمة معالجة النصوص، بالإضافة إلى العديد من الأدوات المساعدة الأخرى، وكلها تعمل ضمن نظام المشاركة الزمنية المتوافق (CTSS). [ 17 ] وقد تم العمل على تصميم مُصرّف MAD لنظام Multics ، لكنه لم يُنفّذ قط. [ 18 ]

فيما يلي اقتباس مثير للاهتمام من مقابلة مع برايان كيرنيغان [ 19 ] عندما سُئل "ما الذي جذبك إلى البرمجة؟":

أعتقد أن أكثر أوقات البرمجة متعةً كانت خلال عملي الصيفي في مشروع ماك بمعهد ماساتشوستس للتكنولوجيا صيف عام ١٩٦٦، حيث عملت على برنامج يُنشئ شريط عمل لجهاز GE 645 الجديد كليًا في بدايات تقنية Multics. كنت أكتب بلغة MAD، التي كانت أسهل وأكثر متعةً بكثير من لغتي FORTRAN وCOBOL اللتين كتبتهما سابقًا، وكنت أستخدم نظام CTSS، أول نظام لتقاسم الوقت، والذي كان أسهل وأكثر متعةً بكثير من البطاقات المثقبة.

كان برنامج MAD سريعًا جدًا مقارنةً ببعض برامج الترجمة الأخرى في عصره. ولأن عددًا من الأشخاص كانوا مهتمين باستخدام لغة FORTRAN، ومع ذلك أرادوا الحصول على سرعة برنامج MAD، فقد تم تطوير نظام يُسمى MADTRAN (مكتوب بلغة MAD). كان MADTRAN ببساطة مترجمًا من FORTRAN إلى MAD، والذي بدوره يُنتج رمز الآلة. تم توزيع MADTRAN عبر SHARE . [ 13 ]

تتمتع لغة MAD/I ببنية نحوية مشابهة للغة ALGOL 60 ، بالإضافة إلى ميزات مهمة من لغة MAD الأصلية ولغة PL/I . [ 10 ] صُممت MAD/I كلغة قابلة للتوسيع. كانت متاحة للاستخدام ضمن نظام MTS، وقدمت العديد من الأفكار الجديدة التي شقت طريقها إلى لغات أخرى، إلا أن عمليات تجميع MAD/I كانت بطيئة، ولم تنتشر MAD/I على نطاق واسع مقارنةً بلغة MAD الأصلية 7090. [ 12 ]

لغة GOM هي في الأساس لغة MAD 7090 مُعدّلة ومُوسّعة لتناسب بنية 360/370 مع بعض التعديلات الدقيقة لتلائم ممارسات البرمجة الحالية ومشاكلها. [ 12 ] كُتب نظام رسائل MTS بلغة GOM .

مجلة ماد، وألفريد إي. نيومان

مخرجات طابعة الخطوط بعد خطأ في مُجمِّع MAD على جهاز كمبيوتر IBM 704 في جامعة ميشيغان، حوالي عام 1960

في نسخة تجريبية من برنامج MAD الأصلي، وإشارةً إلى مجلة Mad التي سُمّي البرنامج تيمّنًا بها ، كان المُصرّف يطبع صورةً كاملةً لألفريد إي. نيومان باستخدام فن ASCII عندما يحتوي البرنامج على عدد كبير جدًا من أخطاء وقت الترجمة . وكان التعليق المصاحب للصورة يقول: "اسأل هذا الرجل عن برنامجك، فقد يرغب في نشره. هو لا يقلق أبدًا، ولكن من مظهر برنامجك، عليك أن تفعل ذلك." [ 9 ] لم تُضَمَّن هذه الميزة في النسخة الرسمية النهائية. [ 20 ] ومع ذلك، فقد أُضِعَت في نسخة الإنتاج لجهاز IBM 7040.

ويتذكر بيرني غالر:

عندما صممنا اللغة التي اعتقدنا أنها تستحق التطوير والتي يمكننا تصميم مترجم لها، لم يعد بإمكاننا تسميتها "ألغول"؛ فقد كانت مختلفة تمامًا. حينها اعتمدنا اسم "ماد" (MAD)، اختصارًا لـ"مفكك خوارزمية ميشيغان". وقد مررنا بموقف طريف مع فريق مجلة "ماد" عندما طلبنا الإذن باستخدام اسم "ماد". في رسالة طريفة للغاية، هددونا بمقاضاتنا، لكنهم أنهوا تهديدهم بملاحظة في أسفل الرسالة: "حسنًا، تفضلوا". للأسف، فُقدت تلك الرسالة. [ 21 ]

مثال "مرحباً بالعالم"

يقوم برنامج المثال " hello, world " بطباعة السلسلة "Hello, world" إلى طرفية أو شاشة عرض.

مرحباً بتنسيق الطباعة قيم المتجه HELLOW=$13h0Hello, world*$ نهاية البرنامج

يتم التعامل مع الحرف الأول من السطر كعنصر تحكم منطقي في النقل ، وفي هذا المثال الحرف "0" الذي يتسبب في طباعة سطر بمسافة مزدوجة.

بدلاً من ذلك، يمكن استخدام الاختصارات، وسيقوم المترجم بتوسيعها في القائمة:

مرحباً يا بي تي V'S HELLOW=$13h0مرحبًا بالعالم*$ إي إم

عناصر اللغة

يتكون كل من MAD و GOM، وليس MAD/I، من العناصر التالية: [ 8 ] [ 12 ] [ 13 ]

تنسيق الإدخال

برامج MAD عبارة عن سلسلة من التعليمات المكتوبة على بطاقات مثقبة، عادةً ما تكون كل بطاقة تحتوي على تعليمة واحدة، مع إمكانية تمديد التعليمة الواحدة على عدة بطاقات. تحتوي الأعمدة من 1 إلى 10 على تسمية اختيارية للتعليمة، ويتم تمييز التعليقات أو الملاحظات باستخدام الحرف "R" في العمود 11، أما الأعمدة من 73 إلى 80 فهي غير مستخدمة ويمكن أن تحتوي على مُعرّف تسلسلي. لا تُعتبر المسافات ذات أهمية في أي مكان آخر غير الثوابت الحرفية. بالنسبة لـ GOM، يكون الإدخال حرًا بدون حقل تسلسلي، وقد يصل طول الأسطر إلى 255 حرفًا؛ الأسطر التي تبدأ بعلامة النجمة (*) هي تعليقات؛ والأسطر التي تبدأ بعلامة الجمع (+) هي أسطر استكمال.

الأسماء

تتخذ أسماء المتغيرات وأسماء الدوال وعلامات العبارات نفس الشكل، وهو حرف متبوع بصفر إلى خمسة أحرف أو أرقام. وتنتهي أسماء الدوال بنقطة. يمكن كتابة جميع الأسماء برموز سفلية (الاسم متبوعًا بأقواس، مع فصل الرموز السفلية المتعددة بفواصل). بالنسبة لـ GOM، قد يصل طول الأسماء إلى 24 حرفًا، وقد تتضمن رمز الشرطة السفلية (_).

قلة من الكلمات الرئيسية في اللغة تُعتبر كلمات محجوزة، إذ أن معظمها يزيد طوله عن ستة أحرف أو ينتهي بنقاط. توجد مجموعة قياسية من الاختصارات التي يمكن استخدامها لاستبدال الكلمات الطويلة. تتكون هذه الاختصارات من الحرف الأول والأخير من الكلمات الرئيسية مع وضع فاصلة عليا بينهما، مثل W'R لكلمة WHENEVER و D'N لكلمة DIMENSION.

أنواع البيانات

يستخدم MAD مصطلح "النمط" لأنواع بياناته. ويدعم خمسة أنماط أساسية:

  • عدد صحيح مكتوب مع أو بدون عامل قياس ( 1، +1، -1، 1K10، 1K ) أو كثوابت ثمانية (حتى 777777777777K
  • كتابة الأعداد العشرية مع أو بدون أس ( 0., 1.5, -0.05, +100.4, -4., .05E-2, -.05E2, 5E02, 5.E2 );
  • منطقي ( 1B للصواب و 0B للخطأ)؛
  • بيان التسمية ، و
  • اسم الدالة مكتوبًا كاسم متبوع بنقطة ( SQRT. ).

يمكن إعادة تعريف نمط الثابت عن طريق إضافة الحرف M متبوعًا برقم واحد في نهاية الثابت، حيث يشير 0 إلى الفاصلة العائمة، و1 إلى العدد الصحيح، و2 إلى القيمة المنطقية، و3 إلى اسم الدالة، و4 إلى تسمية العبارة.

تمت إضافة ستة أوضاع إضافية لـ GOM: CHARACTER، SHORT INTEGER، BYTE INTEGER، LONG INTEGER، POINTER ، و DYNAMIC RECORD .

تُخزَّن الثوابت الأبجدية أو الحرفية كأعداد صحيحة وتُكتب باستخدام علامة الدولار كفاصل ( $ABCDEF$ )، مع استخدام علامتي دولار متتاليتين لإدخال علامة الدولار الحقيقية ( $$.56$ تعني 56 سنتًا). أما السلاسل النصية التي يزيد طولها عن ستة أحرف فتُمثَّل باستخدام المصفوفات.

المصفوفات والصفوف

  • لا يوجد حد لعدد الأبعاد.
  • يُسمح باستخدام الأرقام السالبة والصفرية بالإضافة إلى الأرقام ذات الفاصلة العائمة.
  • يتم تخزين المصفوفات في مواقع ذاكرة متتالية بالترتيب المحدد عن طريق تغيير الفهرس السفلي الأيمن أولاً.
  • يمكن الإشارة إلى المصفوفات باستخدام رمز سفلي لكل بُعد، NAME(s 1 ,s 2 ,s 3 )، أو باستخدام رمز سفلي واحد، NAME(s 1 ).
  • تسمح قوائم الإدخال والإخراج، وعبارات VECTOR VALUES، وبعض الإجراءات الفرعية باستخدام تدوين الكتل، الذي يأخذ الشكل A,...,B أو A...B، وهو إشارة إلى المنطقة بأكملها من A إلى B، شاملةً. وبالنسبة للمتجه، فإن A(1)...A(N) ستكون A(1)، A(2)، A(3)، ...، A(N).
  • توجد مرافق تسمح بتغيير الأبعاد في وقت التشغيل؛ مما يسمح للمبرمج بتغيير موقع العنصر الأولي في مصفوفة داخل الكتلة الكلية التي تم تخصيصها للمصفوفة؛ والسماح بتحديد تعيين تخزين تعسفي.
قائمة بالمعاملات والعبارات والوظائف

المشغلون

بيانات الإقرار

يمكن تعريف المتغيرات ضمنيًا أو صراحةً. افتراضيًا، تُعتبر جميع المتغيرات المُعرَّفة ضمنيًا من نوع الفاصلة العائمة. يمكن استخدام عبارة NORMAL MODE IS لتغيير هذا الإعداد الافتراضي.

عبارات قابلة للتنفيذ

عبارات الإدخال والإخراج

الوظائف

تنتهي أسماء الدوال بنقطة. يدعم البرنامج الدوال الداخلية والخارجية. تُجمَّع الدوال الداخلية كجزء من البرنامج الذي تُستخدم فيه، وتتشارك في التصريحات والمتغيرات مع البرنامج الرئيسي. أما الدوال الخارجية، فتُجمَّع بشكل منفصل، ولا تتشارك في التصريحات والمتغيرات. يُسمح بتعريف الدوال الداخلية في سطر واحد. يُسمح باستخدام الدوال التكرارية، مع ضرورة أن تقوم الدالة ببعض عمليات الحفظ والاستعادة المطلوبة بنفسها.

تعريف وإعادة تعريف المشغل

من أبرز ميزات لغة MAD إمكانية توسيعها من خلال إعادة تعريف المعاملات الموجودة، أو تعريف معاملات جديدة، أو تعريف أنواع بيانات جديدة (أوضاع). تُجرى هذه التعريفات باستخدام عبارات تعريف MAD ورموز لغة التجميع التي تلي التعريف وصولاً إلى تعليمة END الزائفة التي تُنفذ العملية.

  • تعريف عامل ثنائي defined-op ، رتبة الأسبقية existing-op، بنية الوضع mode-options
  • تعريف عامل أحادي defined-op ، رتبة الأسبقية existing-op، بنية الوضع mode-options
  • بنية الوضع mode-no = mode-no existing-op mode-no
  • بنية الوضع mode-no = mode-no existing-op mode-no نفس تسلسل mode-no existing-op mode-no

أين:

  • الرتبة هي إحدى القيم التالية: مساوية لـ، أو أقل من، أو أعلى من؛ و
  • خيارات الوضع هي الخيارات التي تظهر في عبارة MODE STRUCTURE.

تتوفر ثلاث حزم تعريفات محددة مسبقًا (MATRIX و DOUBLE PRECISION و COMPLEX) لإدراجها في برامج مصدر MAD باستخدام عبارة INCLUDE.

  • يشمل الحزمة

انظر أيضاً

ملحوظات

  1. آلت، فرانز (1967). التطورات في الحوسبة . دار النشر الأكاديمية . ص  143. ISBN 0-12-012104-2.
  2. شراغر، جيف. "إليزا الأصلية لجوزيف وايزنباوم" . مؤرشف من الأصل في 13 أغسطس 2021. تم الاطلاع عليه في 12 يناير 2023 .
  3. مذكرات فنية ، منشورات مركز الحوسبة بجامعة ميشيغان، 1965-1999
  4. التقارير الفنية ، منشورات مركز الحوسبة بجامعة ميشيغان، 1965-1999
  5. الملف الموضوعي 1960-1986 ، سجلات مركز الحوسبة بجامعة ميشيغان، 1952-1996
  6. MAD (برنامج فك تشفير خوارزمية ميشيغان) 1960-1979 ، سجلات مركز الحوسبة بجامعة ميشيغان، 1952-1996
  7. دليل المستخدم لجهاز فك تشفير خوارزمية ميشيغان (MAD) لجهاز IBM 7090 ، مختبر الحاسوب الرقمي، كلية الدراسات العليا، جامعة إلينوي، 1962، 221 صفحة
  8. 1 2 مُفكِّك خوارزمية ميشيغان (دليل MAD) ، بروس دبليو. أردن، الطبعة المنقحة 1966
  9. 1 2 3 جورج غراي (يونيو 2002). "يونيفاك وألغول" . نشرة يونيسيس التاريخية . 6 (2). مؤرشفة من الأصل في 29 يونيو 2017.
  10. 1 2 دليل MAD/I ، بولاس، سبرينغر، وسروداوا، التقرير الفني رقم 32 لشركة CONCOMP، 1970، جامعة ميشيغان، آن أربور، 194 صفحة
  11. المجلد الثاني من MTS: أوصاف الملفات العامة ، مركز الحوسبة بجامعة ميشيغان، 1990، ص 14
  12. 1 2 3 4 دليل GOM ، دون بوتنر، مركز الحوسبة بجامعة ميشيغان، آن أربور، يونيو 1989
  13. 1 2 3 لغات البرمجة - المبادئ والتاريخ
  14. في أغسطس 2010 ، عندما سُئل بروس أردن عن تصريح جان ساميت بأن "لغة MAD لا تشبه لغة ALGOL 58 بأي شكل من الأشكال"، كتب: "فيما يتعلق بجان ساميت، ربما تكون قد خلطت بين نسختي ALGOL 58 و 60 . على عكس النسخة الأحدث، لم تُشر النسخة 58 إلى الكلمات (أو اللغة) التي يجب استخدامها لتحديد عبارات الشرط والتحويل، مما أدى لأسباب تحليلية إلى استخدام كلمات مثل WHENEVER. كما احتوت لغة MAD على بعض الميزات الإضافية التي تجاوزت مواصفات النسخة 58."
  15. وثائق ومصادر البريد الإلكتروني والمراسلة المبكرة ، توم فان فليك
  16. "... قام دوغ ماكلروي وبوب موريس بكتابة برنامج Multics runoff بلغة BCPL استنادًا إلى نسخة MAD من برنامج RUNOFF الخاص بـ CTSS من جيري سالتزر."، "ميزات برنامج Multics: القسم 1.7.7" ، موقع Multics الإلكتروني. تم الاطلاع عليه بتاريخ 10 نوفمبر 2018.
  17. نظام المشاركة الزمنية المتوافق (1961-1973): نظرة عامة تذكارية بمناسبة الذكرى الخمسين ، ديفيد والدن وتوم فان فليك (محرران)، 2011، جمعية مهندسي الكهرباء والإلكترونيات. تم الاطلاع عليه بتاريخ 10 نوفمبر 2018.
  18. "مسرد اختصارات ومصطلحات Multics" ، توم فان فليك، موقع Multicans الإلكتروني.
  19. نورين، ألين (10 أبريل 2009). "مقابلة مع برايان كيرنيغان: نشأة اللغات الصغيرة" . مجتمع أورايلي . مؤرشف من الأصل في 30 يونيو 2017. تم الاطلاع عليه في 28 يوليو 2023 .
  20. شنايدرمان، بن؛ بلايزانت، كاثرين (7 مايو 2004). تصميم واجهة المستخدم ( الطبعة الرابعة). أديسون ويسلي . ISBN  978-0-321-19786-3.
  21. غالر، برنارد أ.؛ غالر، إينيد هـ. (يناير 2001). "مقابلة مهنية مع بيرني غالر". حوليات معهد مهندسي الكهرباء والإلكترونيات لتاريخ الحوسبة . 23 (1): 22-33 . doi : 10.1109/85.910847 . ISSN 1058-6180 . 

مراجع

  • وصف مختصر للغة المترجم MAD ، فرناندو ج. كورباتو ، جيروم هـ. سالتزر ، نيل بارتا، وتوماس ن. هاستينغز، مذكرة مركز الحوسبة MIT CC-213، يونيو 1963.
  • CLSYS، برنامج لتسهيل استخدام مترجم MAD للمجموعات الكبيرة (بحجم الفصل الدراسي) ، جيروم هـ. سالتزر، مذكرة مركز الحوسبة في معهد ماساتشوستس للتكنولوجيا CC-204. فبراير 1963.
  • كتاب تمهيدي في الحاسوب للغة المجنونة ، إليوت إيرفينغ أورجانيك ، 1961.
  • التنظيم الداخلي لمترجم MAD ، آردن، بي دبليو، جالر، بي إيه وغراهام، آر إم، الصفحات 28-31، CACM المجلد 4 العدد 1 (يناير 1961)
  • مقدمة في الأساليب الخوارزمية باستخدام لغة MAD ، آلان ب. ماركوفيتز وإيرل ج. شويبي، ماكميلان، 1966.
  • مقدمة في الحواسيب الرقمية ولغة MAD ، بريس كارناهان، جامعة ميشيغان.
  • لغة الحواسيب ، برنارد أ. جالر، جامعة ميشيغان، ماكجرو هيل، 1962.
  • MAD في ميشيغان: وظيفته وميزاته ، آردن، بي دبليو، غالر، بي إيه، وغراهام، آر إم، الصفحات 27-28، داتاماشن، المجلد 7 العدد 12 (ديسمبر 1961)
  • مخططات انسيابية لفك تشفير خوارزمية ميشيغان ، بقلم جي بي سميث، مكتبة البرامج العامة SHARE، رقم توزيع SHARE 1327 بنسلفانيا، 1961