ممبس
نظرة عامة

إن ممبس هي لغة عمدت إلى وصممت من أجل بناء تطبيقات قاعدة بيانات. وتضمنت مميزات اللغة الثانوية من أجل المساعدة المبرمجين في صنع التطبيقات باستخدام الموارد الحوسبية الدنيا. وكانت التطبيقات الأصلية مفسرة، بالرغم من أن التطبيقات الحديثة يمكن أن تكون مكتملة أو جزئية التنفيذ. إن «البرامج» المفردة تشغل في «تقسيمات» الذاكرة. وكانت تقسيمات الذاكرة المبكرة لممبس محدودة بقيمة 2048 بايت وكانت مختصرة للغاية ومساعدة للبرمجة المتعددة على المعدات المحدودة الموارد بشدة، ونظرا لأن أكثر من وظيفة لممبس يمكنها أن تناسب الذاكرات الصغيرة للغاية الموجودة في المعدات في ذلك الوقت. إن القدرة على تقديم نظم متعددة المستخدمين كانت تصميم لغوية آخر. إن البرمجة المتعددة في اختصار اسم اللغة. وحتى الآلات المبكرة التي كانت تشغل ممبس الداعمة لوظائف متعددة وتعمل في ذات الوقت. ومع التغيير من الكمبيوترات الصغيرة إلى الكمبيوترات الدقيقة بعد ذلك بسنوات، فإنه حتى «المستخدم المفرد لجهاز الكمبيوتر»، الذي لديه جهاز 8-بيت 8-bit بذاكرة 64 ك أو 64ك للذاكرة يمكنه أن يدعم المستخدمين المتعددين، وتشغيل الطرفيات الخرساء في وضع خط الأوامر (وبدون أي أثر لواجهة المستخدم الرسومية).
ونظرا لأن الذاكرة كانت محدودة بالأصل، فإن تصميم اللغة لممبس يقيم بكود مقتضب للغاية. وهكذا فإن كل أمر أو اسم وظيفة لممبس يمكن أن تختصر من حرف إلى ثلاثة أحرف في الطول على سبيل المثال. إغلاق (برنامج الخروج) مثل وظيفة Q $P== $Piece، وأمر R = Read، ووظيفة $TR == $Translate. إن الفراغات وعلامات نهاية السطور أمر كبير في ممبس لأن نطاق السطر يدعم نفس تصميم اللغة المقتضبة. ومن ثم فإن سطر إدخال كود البرنامج يمكن أن يعبر عن نفس الفكرة بعدد صغير من الحروف التي يمكن للغات البرمجية الأخرى أن تأخذ من 5 إلى 10 أضعاف من الحروف للتعبير عنها. إن الاختصار كان ميزة شائعة في اللغات المصممة في تلك الفترة (على سبيل المثال FOCAL-69، ولغات البيسك المبكرة مثل Tiny BASIC، الخ). وهناك لسوء الحظ أثر جانبي لهذه الازدواجية مع الحاجة المبكرة لكتابة كود في أقل سعة ممكنة وهو أن مبرمجي ممبس لا يقومون بالتعليق على الكود واستخدموا اختصارات موسعة، مما يعني أنه حتى خبير ممبس المبرمج لا يمكنه مجرد طوي صفحة الكود لرؤية وظيفته لكن عليه تحليله سطر وراء سطر.
إن تفاعل قاعدة البيانات مبنية بشفافية في لغة. وتقدم لغة ممبس قاعدة بيانات تراتبية مصنوعة من مصفوفات مستمرة، وتكون «مفتوحة» لكل تطبيق لممبس. إن كل الأسماء المتغيرة التي تسبق بحرف ذو قبعة ("^")تستخدم تخزينا دائما (بدلا من الرامات)، وسوف تبقي قيمها بعد تواجد التطبيق وسوف تكون مرئية لتطبيقات العاملة الأخرى. إن المتغيرات باستخدام هذا التخزين المشارك والدائم تسمي جلوبالز في ممبس بسبب أن تأطير هذه المتغيرات «متاح عالميا» لجميع الوظائف على النظام. إن الاستخدام الأكثر حداثة وشيوعا لاسم «المتغيرات العالمية» في اللغات الأخرى أكثر تحديدا في تأطير الأسماء، وتأتي من حقيقة أن المتغيرات غير المؤطرة متاحة «عالميا» لأي برامج تشغيل في نفس العملية، لكنها ليست متشاركة بين عمليات متعددة. إن وضع تخزين ممبس (على سبيل المثال فإن جلوبالز خزنت في مصفوفات دائمة)، وتطرح قاعدة ممبس سمات قاعدة البيانات القائمة على النصوص.
إن جميع الحروف المتغيرة التي لا تكون مسبوقة بحرف بقبعة ("^") تكون مؤقتة وخاصة. ومثل المتغيرات العالمية فإنها أيضا تكون لديها نموذج تخزين تراتبي، لكنها لا تكون «متاحة إلا محلية» فقط لوظيفة مفردة، لذلك فغنها تسمى «محليات» Locals. وكل من جلوبالز ولوكالز يمكن أن تكون لديهم عقدات صغيرة (تسمى منخفضات subscripts في مفردات ممبس). ولا تكون المنخفضات محدودة بالأرقام – أي حرف ASCII أو مجموعة من الحروف يمكن أن تكون محددا منخفضا. وبينما ذلك لا يكون شائعا للغات الحديثة مثل بيرل أو جافاسكربت، فإن هناك ميزة غير معتادة للغاية في أواخر السبعينيات. إن هذه القدرة لم تطبق على مستوى العالم في نظم ممبس قبل عام معايرة أنسي في عام 1984.) وهكذا فإن المتغير المسمى «كار» Car يمكن أن يكون لديه منخفضات مثل «باب»، «محرك» ويمكن أن تحتوي كل منهم على قيمة لديها مخفضات خاصة بها. إن المتغير ^Car("Door") يمكن أن يضع منخفضا متغيرا «للون» على سبيل المثال. وهكذا فإنه يمكنك أن تقول
SET ^Car("Door","Color")="BLUE"
ومن أجل تعديل العقدة الصغيرة المتوطنة لـ ^Car. وفي مصطلحات ممبس فإن «اللون» في المنخفض الثاني للمتغير ^Car (وكلاهما اسمين للعقد الصغيرة وتسمى العقد الصغيرة نفسها بالمسجلات). إن المتغيرات التراتبية مشابهة للكائنات التي بها خصائص في اللغات العديدة القائمة على الكائن. إضافة إلى ذلك فإن تصميم لغة ممبس يتطلب أن جميع المسجلات للمتغيرات تحفظ تلقائيا في نظام تخزين. إن المسجلات الرقمية (بما فيها أرقام النقط العائمة) تكون مخزنة من أدناها إلى أعلاها. وتكون جميع المسجلات غير الرقمية مخزنة بترتيب أبجدي يتبع الأرقام. وفي مصطلحات ممبس فإن هذا النظام هو نظام كنسي (تراتبي). ومن خلال استخدام المسجلات المكملة غير السلبية فحسب فإنه يمكن لمبرمج ممبس أن يحاكي نوع بيانات المصفوفات من اللغات الأخرى. وبالرغم من أن ممبس لا تقدم بالأساس مجموعة تامة من مميزات DBMS مثل المخططات الإلزامية، وكانت العديد من نظم DBMS مبنية على قمتها والتي تزود مطوري التطبيق بملف مسطح ومميزات قاعدة بيانات علائقية وشبكية.
إضافة إلى ذلك فإنه هناك مشغلون مدمجون يتعاملون مع سلسلة غير محدودة (على سبيل المثال قيم الفاصلة المفصولة) كمصفوفة. وسيقوم مبرمجو ممبس الأوائل بتخزين بنية المعلومات المرتبطة باعتبارها سلسلة غير محدودة، وتحليلها بعد قراءتها؛ ويلج القرص الحفوظ هذا على الوقت ويقدم ميزات سرعة كبيرة على بعض المعدات.
وليس لممبس أنواع من البيانات. ويمكن معاملة الأرقام على أنها مسلاست من الأرقام، أو سلسلة يمكن التعامل معها على أنها أرقام من خلال المشغلون الرقميون (القسريون بلغة ممبس). وبأي حال فإنه يمكن أن يكون للقسر بعض الآثار الجانبية الضارة. على سبيل المثال فإنه عندما تكون سلسلة ما قسرية، فإن المحلل يتحول بدرجة كبيرة لعمل سلسلة (بادئا من اليسار) في رقم بقدر الإمكان، ثم التخلص من الباقي. وهكذا فإن البيان IF 20<"30 DUCKS يتم تقيمه على أنه حقيقي وفق ممبس.
إن المميزات الأخرى للغة أنها عمدت إلى مساعدة تطبيقات ممبس في التفاعل مع بعضها البعض في بيئة متعددة المستخدمين. إن أقفال قواعد البيانات، ومحددات العملية، وعمليات تححديث قاعدة البيانات تتطلب جميعا معايرة تطبيقات ممبس.
وعلى العكس من اللغات في سي أو تقاليد ويرث Wirth، فإن بعض الحروف الفارغة بين بيانات ممبس تعتبر مميزة. إن فراغ واحد يفصل الأمر عن المعطيات الخاصة به، وفراغ أو خط جديد ويفصل كل معطيات عن الممبس المأخوذة التالية. إن الأوامر التي لا تأخذمعطيات (مثل ELSE) تتطلب فراغين متاليين. إن المفهوم هو أن فراغ واحد يفصل الأمر عن المعطي (غير الموجود)، ويفصل التالي «المعطى» عن الأمر التالي. كما أن السطور الجديدة هامة أيضا؛ فإن أوامر (أو قفزات) IF أو ELSE أو FOR تعالج كل شيء آخر حتى نهاية السطر. ومن أجل جعل هذه البيانات تتحكم في السطور المتعددة فإنه عليك استخدام الأمر DO لتكوين كتلة شفرة.