ماد (لغة برمجة)  MAD (اختصارًا لِـمفسِّر خوارزميَّة ميشيغان) (Michigan Algorithm Decoder), هي لغة برمجة ومترجم مطور في جامعة ميشيغان بواسطة برنار غالير وبروس أردن بروس وروبرت جراهام University of Michigan by Bernard Galler, Bruce Arden، Robert M. Graham.  هناك ثلاثة تراجم لـ MAD : 1. MAD الأصلي المترجم كشف عنه في عام 1959 في جامعة ميشيغان لكمبيوتر آي بي إم 704 IBM 704و في وقت لاحق آي بي إم 709 IBM 709 وأجهزة الكمبيوتر المركزية وآي بي إم 7090 IBM 7090 mainframe من النظام التنفيذي لجامعة ميتشيغان (UMES) وأنظمة تشغيل النظام المناسب لتقسيم الوقت (CTSS).. وفي منتصف الستينات 1960.لغة MAD استدارت في جامعة ميريلاند University of Maryland ليونيفاك 1108UNIVAC 1108. إصدارات MAD كانت متوفرة أيضا لفيلكو 210-211 Philco ويونيفاك 1107 UNIVAC 1107.  2. MAD/I، هو إصدار مطول من MAD لسلسلة S/360 آي بي إم IBM S/360 من أجهزة الكمبيوتر التي تعمل في منظومة محطة ميشيغان Michigan Terminal System (MTS). بدأ العمل في المترجم الجديد في عام 1965 كجزء من وكالة مشاريع البحوث المتقدمة ARPA برعاية مشروع CONCOMP في جامعة ميشيغان. عندما أحرز العمل تقدما أصبح تدريجيا واضحا أنI /MAD كانت لغة جديدة مستقلة عن الإصدار الأصلي من 7090 MAD.  3. جوم GOM(ماد القديم الجيد) (Good Old MAD)، وإعادة تطبيق لـ 7090 MAD الأصلي لسلسلة آي بي إم S/370 IBM S/370 series لأجهزة الكمبيوتر المركزية لتشغيل نظام محطة ميتشيغان Michigan Terminal System (MTS). تم إنشاء جوم GOM في أوائل الثمانينات 1980 بواسطة دون بوتنر Don Boettner في مركز الحاسب الآلي بجامعة ميشيغان.  MAD هي بديل للغة الدولية الخوارزمية (اللوغرتمية) International algorithmic language (IAL). IAL هو الاسم الأصلي لماذا أصبحت في نهاية المطاف ALGOL 58. في حين MAD كانت بدافع من ALGOL 58، إلى انها لا تشبه ALGOL 58 بأي شكل من الأشكال كبيرة.  البرامج المكتوبة بلغة MAD بما فيها MAIL RUNOFF، واحدة من النظم الأولى لمعالجة النصوص، والعديد من أدوات المساعدة الأخرى كلها تحت النظام المناسب لتقسيم الوقت Compatible Time-Sharing System (CTSS). جرى العمل على التصميم لمترجم MAD لمالتيكس Multics، ولكن لم ينفذ.  وفيما يلي اقتباس من مقابلة مثيرة للاهتمام مع بريان كيرنيغان عندما سئل: «ما سبب تعلقك بالبرمجة؟»: أجاب: أعتقد أن الأكثر متعة أني كنت اعمل بالبرمجة كوظيفة صيفية في مشروع ماك MAC في ميت MIT في صيف عام 1966، حيث عملت على إنشاء برنامج لشريط عمل لجي إي645 الجديد GE 645 في الأيام الأولى من مالتيكس Multics. كنت أكتب بلغة MAD، والتي كانت أسهل بكثير وأكثر متعة من فورتران FORTRAN وكوبول COBOL التي كنت كتبتها في وقت سابق، وكنت أستخدم CTSS، أول نظام اقتسام الوقت، والتي كان من الأسهل بلا حدود وأكثر متعة من البطاقات المثقبة punch cards.  MAD كانت سريعة جدا مقارنة ببعض برامج المترجم الأخرى في وقته. وبسبب أن كثير من الناس كانت مهتمة باستخدام لغة فورتران FORTRAN وأرادت الحصول على سرعة مترجم MAD، تم استحداث نظام مادتران MADTRAN (كتب بلغة MAD). وكان MADTRAN مجرد مترجم من فورتران FORTRAN إلى ماد MAD، والتي أنتجت وقتها شفرات ألية. ووزعت MADTRAN من خلال SHARE.  MAD/I لديها بنية لغوية مماثلة لـ ALGOL 60 مع مميزات مهمة من MAD الأصلي ومن PL/I. MAD/I مصمم كلغة موسعة. وكانت متوفرة للاستخدام في MTS، وقدمت العديد من الأفكار الجديدة التي شقت طريقها إلى لغات أخرى، ولكن مصنفات MAD/I كانت بطيئة وMAD/I لم تمدد نفسها إلى استخدام واسع النطاق بالمقارنة مع 7090 MAD الأصلي.  جوم GOM هي أساسا لغة MAD 7090 والتي مددت وتعدلت لبناء الحاسب 360/370 مع بعض الحياكة بحكمة لتتناسب مع أفضل ممارسات البرمجة والمشاكل الراهنة. ونظام رسائل MTS كان مكتوباً بجوم.  خط طابعة المخرجات يتبع خطأ مترجم MAD على جهاز كمبيوتر آي بي إم 704 في جامعة ميشيغان، C. 1960 في إصدار ما قبل MAD الأصلي، وإشارة إلى أنها تحمل الاسم نفسه MAD، مجلة MAD MAD magazine، عندما كان البرنامج به أخطاء وقت الترجمة كثيرة المترجم كان يطبع الصورة على ورقة كاملة لألفريد E. نومان Alfred E. Neuman باستخدام فنASCII art. العنوان للقراءة، «انظر هذا الرجل حول البرنامج الخاص بك -- قد يرغب في نشرها –لا يخاف أبدا -- ولكن من ينظر إلى البرنامج الخاص بك، يجب عليك» هذه الميزة لم تكن مدرجة في النسخة الرسمية النهائية  ويتذكر بيرني غلر Bernie Galler : «في الوقت الذي قمنا فيه بتصميم اللغة التي اعتقدنا انها سوف تستحق القيام بها والتي تمكننا من عمل مترجم، لم نستطيع ان نسميها ALGOL، كانj حقا مختلفة. وذلك عندما اعتمدنا الاسم MAD، لجهاز فك الشفرة الخوارزمية ميشيغان. كان لدينا بعض ردود الفعل المضحكة مع مجلة ماد للناس، وعندما طلبنا للحصول على إذن لاستخدام اسم MAD. في رسالة مضحكة جدا، وقالوا لنا أنهم سوف يأخذونا للمحكمة وكل شيء آخر، ولكن انتهى التهديد مع ملاحظة في أسفل --» بالتأكيد، أمضوا قدما. «للأسف، فقدت تلك الرسالة».  في «مرحبا العالم»"hello, world" البرنامج يطبع سلسلة «مرحبا بالعالم» "hello, world" إلى النهاية الطرفية لشاشة العرض.  يتم التعامل مع الحرف الأول من السطر ك حرف التحكم المنطقي، في هذا المثال حرف الصفر الذي يؤدي إلى طباعة خط مزدوج متباعد. أو، في حالة ادخال كل الكلمات الرئيسية في المثقبة بلوحة المفاتيح الخاص بك هو عمل كثير، يمكنك استخدام تقلصات والمترجم يقوم بتوسيعها في العرض:  وتتألف MAD وجوم GOM، ولكن ليس MAD/I، من العناصر التالية:  برامج MAD هي سلسلة من بيانات مكتوبة على بطاقات مثقبة، في الغالب عبارة واحد للبطاقة الواحدة، رغم أنه يمكن ان تستكمل العبارة في بطاقات متعددة.  البطاقة الأولى للعبارة فارغة أو ليس لها ثقب في البطاقة في العمود 11 وبطاقات الاستمرار تحتوي على الأرقام 0 إلى 9 في العمود 11. يتم وضع علامة على التعليقات أو الملاحظات باستخدام حرف "R" في العمود 11.  مجموعة الأحرف المعتمد عليها تتضمن الأحرف الكبيرة من Aالى Z، والأرقام من 0الى9، والعلامات، (فاصلة)، + (زائد) -- (ناقص)، '(الفاصلة العليا)، =، *، /، (،)،&، وفارغة أو مسافة. ولكن لا يدعم الاحرف الصغيرة و"(اقتباس مزدوج).  المساحات ليست مهمة في أي مكان بخلاف ما ضمن ثوابت الحرف.  كلمات رئيسية قليلة في اللغة محجوزة لأن معظم الكلمات أطول من ستة أحرف أو محاطة بفترات. هناك معيار مجموعة من الاختصارات التي يمكن استخدامها لتحل محل الكلمات الطويلة. وتتألف هذه المجموعة من الأحرف الأولى والأخيرة من الكلمات الرئيسية مع الفاصلة العليا بينهما، مثل لW'R لكلمة WHENEVER و D'Nلكلمة DIMENSION.  بالنسبة إلى جوم GOM : رسم خط تحت (_) وعلامة الاقتباس المزدوجة (") يتم إضافتها قد يشمل الإدخال الحروف الكبيرة والصغيرة، ولكن الصغيرة يتم تجاهلا إلا في ثوابت الحرف.  MAD يستخدم مصطلح "mode" لأنواع البيانات الخاصة به. ويدعم خمس طرق أساسية:  السلسلة التي تطول عن ستة أحرف قد تكون ممثلة باستخدام المصفوفات. النمط الثابت ويمكن إعادة تحديده بإضافة حرف M يليه رقم واحد في نهاية الثابت، حيث يشير 0 إلى نقطة عائمة، 1 صحيحا، 2 منطقياً، 3 اسم الوظيفة، 4 بيان (التسمية) العالمة.  قوائم المدخلات والمخرجات وعبارات القيم المتجهة VECTOR VALUES وبعض الوظائف الفرعية تسمح باستخدام كتل الرموز، والذي لها شكل A...,B أو A...B, وهو إشارة إلى المنطقة بأكملها من A إلى B، شاملة. حسب وجهة vector، فإن A(1)...A(N) يكون A(1), A(2), A(3)..., A(N). بالنسبة لجوم GOM :   بالنسبة لجوم GOM :   في جوم GOM مصفوفات الأحرف يمكن الرجوع إليها باستخدام الترميز التالي:  العوامل الحسابية A*. (وتمثل) V* (تمثل أو) مشغلي المؤشر (جوم فقط)  العوامل الترابطية العوامل المنطقية تمشغلين بت BIT (جوم فقط) التعبيرات  تعبيرات العدد الصحيح، النقطة العائمة، والتعبيرات المنطقية. متوفرة والعدد الصحيح ومتغيرات النقطة العائمة والثوابت يمكن أن تجمع في تعبير واحد مع النقطة العائمة كنتيجة (قد يتم تنفيذ أجزاء من هذا الحساب باستخدام عدد حسابى صحيح والنتيجة النهائية قد تختلف عن تلك التي تم الحساب ككل بالنقطة العائمة).  الجانبين الأيسر والأيمن من المهمة لابد أن يكونان من نفس النوع، عدا عبارات العدد الصحيح أو النقطة العائمة على اليمين سوف يتم تحويلها لعبارات نقطة عائمة أو عدد صحيح إالى اليسار إذا لزم الأمر.  عبارات التصريح  المتغيرات قد تكون مصرحة ضمنا أو صراحة.من المفترض أن المتغيرات المصرح بها ضمناً يفترض أن تكون نقطة عائمة. الوضع الطبيعي NORMAL MODE هو عبارة قد تستخدم لتغيير المفترض هذا.  عبارات قابلة للتنفيذ variable* متغير = التعبير (مهمة) WHENEVER* (أي مكان) عبارة منطقية، وتعبير قابل للتنفيذ (شرطى بسيط بسيطة) CONTINUE* (استمرار) (عبارة فعل لا شيء، عادة ما تستخدم لحمل تسمية البيان) SAVE DATA list* قائمة حفظ البيانات عبارات المدخلات والمخرجات  الوظائف  الوظائف الداخلية والخارجية معتمدة. يتم تصنيف الوظائف الداخلية كجزء من البرنامج الذي تستخدم فيه ويقتسموا الإعلان والمتغيرات مع البرنامج الرئيسي. الوظائف الخارجية يتم ترجمتها بشكل منفصل ولا تقتسم الإعلانات والمتغيرات. أسماء الوظائف تنتهي بنقطة. الوظائف ذات القيمة الواحدة تسمى عندما يتم الرجوع إليها باسم تسمى كجزء من مصطلح، بينما الوظائف الغير أحادية القيمة (إجراءات) تسمى باستخدام العبارة EXECUTE (تنفيذ).  الوظائف تمرر المتحولات بالقيمة. المتحولات يمكن ان تكون مصطلحات وعبارات العلامات والأسماء الوظائف.  يسمح لتعريف الوظيفة الداخلية باستخدام عبارة واحدة للتعريف.  الوظائف المتداخلة أو المتتالية مسموح بها، على الرغم من أن الوظيفة يجب أن تقوم بعمل الحفظ المطلوب ومعاودة العمل من تلقاء نفسها نفعل.  مشغل التعريف وإعادة التعريف  أحد السمات الأكثر إثارة للاهتمام في MAD هو القدرة على تمديد اللغة من خلال إعادة تعريف المشغلين القائمين، وتحديد مشغلين جدد، أو تحديد أنواع بيانات جديدة (أوضاع). التعريفات مصنوعة باستخدام عبارات إعلان MAD ولغة التجميع mnemonics (الاستذكار) تشمل اتباع الإعلان حتى النهاية END التعليمة - الزائفة التي تنفذ العملية.  حيث:  ثلاث باقات من التعاريف محددة مسبقا (ماتريكس MATRIX، الدقة المزدوجة DOUBLE PRECISION، ومعقدة COMPLEX) متاحة للإدراج في مصدر برامج MAD باستخدام عبارة الادراج INCLUDE.