النكاف
MUMPS ("نظام البرمجة المتعددة المرافق لمستشفى ماساتشوستس العام")، أو M ، هي لغة برمجة إجرائية عالية المستوى مزودة بقاعدة بيانات متكاملة لمعالجة المعاملات تعتمد على نظام المفتاح والقيمة . وقد طُوّرت في الأصل في مستشفى ماساتشوستس العام لإدارة السجلات الطبية للمرضى وأنظمة معلومات المختبرات في المستشفى.
توسعت تقنية MUMPS منذ ذلك الحين لتصبح قاعدة البيانات الرئيسية لأنظمة المعلومات الصحية والسجلات الصحية الإلكترونية في الولايات المتحدة. وتوفر أنظمة المعلومات القائمة على MUMPS، مثل أنظمة Epic ، خدمات المعلومات الصحية لأكثر من 78% من المرضى في جميع أنحاء الولايات المتحدة [ 1 ].
من السمات الفريدة لتقنية MUMPS لغة قواعد البيانات المدمجة فيها ، مما يسمح بالوصول المباشر وعالي السرعة للقراءة والكتابة إلى وحدة التخزين الدائمة على القرص. [ 2 ]
تاريخ
الستينيات - السبعينيات - التكوين
طُوِّر نظام MUMPS بواسطة نيل بابالاردو وروبرت أ. غرينز وكورت ماربل في مختبر الدكتور أوكتو بارنيت بمستشفى ماساتشوستس العام (MGH) في بوسطن خلال عامي 1966 و1967. [ 3 ] نشأ هذا النظام نتيجةً للإحباط الذي ساد خلال مشروع أنظمة معلومات المستشفيات المدعوم من المعاهد الوطنية للصحة (NIH) في مستشفى ماساتشوستس العام، بسبب تطويره بلغة التجميع على جهاز PDP-1 بتقنية المشاركة الزمنية من قِبل المقاول الرئيسي ، بولت، بيرانيك ونيومان (BBN). انبثق نظام MUMPS من مشروع داخلي سري في مستشفى ماساتشوستس العام، قام به بابالاردو وغرينز وماربل لإنشاء بيئة تطوير بديلة. ونتيجةً للعرض الأولي لقدرات النظام، اتخذ اقتراح الدكتور بارنيت المقدم إلى المعاهد الوطنية للصحة عام 1967 لتجديد منحة مشروع حاسوب المستشفى خطوة جريئة باقتراح بناء النظام باستخدام نظام MUMPS في المستقبل، بدلاً من الاعتماد على منهج BBN. تم تمويل المشروع، وبدأ التنفيذ الجاد للنظام باستخدام نظام MUMPS.
بُني نظام MUMPS الأصلي، كما هو الحال مع نظام Unix الذي ظهر بعده بسنوات، على جهاز DEC PDP-7 . حصل أوكتو بارنيت ونيل بابالاردو على جهاز PDP-9 متوافق مع الإصدارات السابقة ، وبدآ باستخدام MUMPS في دورة قبول المرضى وإعداد تقارير الاختبارات المعملية. كان MUMPS آنذاك لغةً تفسيرية ، ومع ذلك، فقد تضمن نظام ملفات قاعدة بيانات هرميًا لتوحيد التفاعل مع البيانات وتجريد عمليات القرص بحيث تُنفذ فقط بواسطة لغة MUMPS نفسها. استُخدم MUMPS أيضًا في بداياته في نظام تجريبي لإدخال ملاحظات التقدم السريري [ 4 ] ونظام لإدخال تقارير الأشعة [ 5 ] .
يمكن تتبع بعض جوانب برنامج MUMPS من برنامج JOSS التابع لشركة RAND Corporation مروراً ببرنامجي TELCOMP و STRINGCOMP التابعين لشركة BBN . وقد اختار فريق MUMPS تضمين إمكانية النقل بين الأجهزة كهدف تصميمي.
كانت ميزة تعدد المهام إحدى الميزات المتقدمة للغة MUMPS، والتي لم تكن مدعومة على نطاق واسع في أنظمة التشغيل أو أجهزة الحاسوب في ذلك الوقت . ورغم أن تقنية المشاركة الزمنية في الحواسيب المركزية كانت شائعة بشكل متزايد في أنظمة مثل Multics ، إلا أن معظم الحواسيب الصغيرة لم تكن تدعم تشغيل البرامج المتوازية، ولم تكن تقنية الخيوط متاحة على الإطلاق. حتى في الحواسيب المركزية، كان نمط المعالجة الدفعية، حيث يُنفذ البرنامج حتى اكتماله، هو التطبيق الأكثر شيوعًا لتعدد البرامج في أنظمة التشغيل.
استغرق تطوير نظام يونكس بضع سنوات. كما أن غياب أجهزة إدارة الذاكرة جعل جميع عمليات المعالجة المتعددة محفوفة باحتمالية تغيير مؤشر الذاكرة لعملية أخرى. لا تملك برامج MUMPS طريقة قياسية للإشارة إلى الذاكرة مباشرةً، على عكس لغة C ، ولأن تعدد المهام كان مفروضًا من قِبل اللغة نفسها، وليس من قِبل أي برنامج مكتوب بها، فقد كان من المستحيل وجود المخاطر التي كانت موجودة في الأنظمة الأخرى.
تم تكييف نظام DEC MUMPS-15 الخاص بدان بريفيك ليعمل على جهاز DEC PDP-15 ، حيث استُخدم لفترة من الزمن. وتم تثبيته لأول مرة في شركة أنظمة إدارة البيانات الصحية في دنفر في مايو 1971. [ 6 ] أثبتت قابلية نقل النظام فائدتها، وحصل MUMPS على منحة بحثية حكومية، وبالتالي تم إصداره للاستخدام العام، وهو شرط أساسي للحصول على المنح. وسرعان ما تم نقل MUMPS إلى عدد من الأنظمة الأخرى، بما في ذلك جهاز DEC PDP-8 الشهير ، وجهاز Data General Nova، وجهاز DEC PDP-11، والحاسوب المصغر Artronix PC12 . انتشر صيت MUMPS بشكل رئيسي في الأوساط الطبية، وكان استخدامه واسع النطاق، وغالبًا ما كان يتم تعديله محليًا لتلبية احتياجاتهم الخاصة.
أُعيدت كتابة نسخ من نظام MUMPS على يد القائدين التقنيين دينيس "دان" بريفيك وبول ستيلوس [ 6 ] من شركة DEC في عامي 1970 و1971. وبحلول أوائل السبعينيات، ظهرت تطبيقات عديدة ومتنوعة لنظام MUMPS على مجموعة واسعة من منصات الأجهزة. ومن المنصات البارزة الأخرى نظام DEC MUMPS-11 الذي طوره بول ستيلوس [ 6 ] على جهاز PDP-11، ونظام MIIS من شركة MEDITECH . في خريف عام 1972، حضر العديد من مستخدمي MUMPS مؤتمرًا في بوسطن لتوحيد اللغة التي كانت آنذاك متفرقة، وأسسوا مجموعة مستخدمي MUMPS ولجنة تطوير MUMPS (MDC) لهذا الغرض. وقد تكللت هذه الجهود بالنجاح؛ إذ اكتمل وضع معيار بحلول عام 1974، وتمت الموافقة عليه في 15 سبتمبر 1977 كمعيار ANSI ، X11.1-1977. في نفس الفترة تقريبًا، أطلقت شركة DEC معيار DSM-11 (المعيار الرقمي MUMPS) لجهاز PDP-11. وسرعان ما هيمن هذا المعيار على السوق، وأصبح المعيار المرجعي في ذلك الوقت. كما باعت شركة InterSystems معيار ISM-11 لجهاز PDP-11 (وهو معيار مطابق لمعيار DSM-11).
ثمانينيات القرن العشرين
خلال أوائل ثمانينيات القرن العشرين، طرح العديد من الموردين منصات تعتمد على معالج MUMPS وتتوافق مع معيار ANSI في السوق. وكان أبرزها ما يلي:
- شركة ديجيتال إكويبمنت كوربوريشن (DEC) مع نظام DSM (المعيار الرقمي MUMPS). تم إصدار DSM-11 لسلسلة PDP-11 عام 1977. وبيع نظام VAX DSM [ 7 ] بالتوازي بعد إصداره عام 1978. كانت كلتا عائلتي الأجهزة، بالإضافة إلى إصدارات MUMPS، متوفرة من شركة DEC حتى عام 1995. تم نقل DSM-11 إلى جهاز Alpha بنسختين: DSM لنظام OpenVMS ، و DSM لنظام Ultrix .
- InterSystems مع ISM (InterSystems M) على VMS (M/VX)، وISM-11 لاحقًا M/11+ على منصة PDP-11 (1978)، وM/PC على MS-DOS، وM/DG على Data General ، وM/VM على IBM VM/CMS، وM/UX على أنظمة Unix المختلفة.
- تأسست شركة Greystone Technology Corporation عام 1980، بإصدار مُجمّع يُسمى GT.M لأنظمة AIX وHP-UX وUNIX وOpenVMS
- شركة DataTree Inc. مع منتج يعتمد على معالج Intel PC يسمى DTM . (1982)
- شركة Micronetics Design Corporation (1980) مع خط إنتاج يسمى MSM. MSM-PC، MSM/386، MS-UNIX، MSM-NT، MSM/VM لـ IBM ، منصات VAX/VMS ومنصات OpenVMS Alpha.
- شركة Computer Consultants (التي أعيد تسميتها لاحقًا إلى MGlobal)، ومقرها هيوستن ، هي الشركة التي طورت في الأصل برنامج CCSM على معالج 6800، ثم 6809، وأخيرًا نسخة منه لمعالج 68000، والذي أصبح فيما بعد MacMUMPS ، وهو منتج يعمل بنظام Mac OS . كما عملت الشركة على تطبيق MGM MUMPS. وقامت MGlobal أيضًا بنقل تطبيقها إلى منصة DOS. وكان MGlobal MUMPS أول برنامج MUMPS تجاري لأجهزة IBM PC والتطبيق الوحيد لنظام Mac OS الكلاسيكي.
- طورت شركة Tandem Computers تطبيقًا لأجهزة الكمبيوتر الخاصة بها المقاومة للأعطال. [ 8 ]
- باعت شركة IBM لفترة وجيزة تطبيقًا لـ MUMPS يسمى MUMPS/VM والذي كان يعمل كآلة افتراضية فوق VM/370 . [ 9 ]
شهدت هذه الفترة أيضًا نشاطًا ملحوظًا من جانب شركة MDC. تمت الموافقة على المراجعة الثانية لمعيار ANSI الخاص بـ MUMPS (X11.1-1984) في 15 نوفمبر 1984.
التسعينيات
- في 11 نوفمبر 1990، تمت الموافقة على المراجعة الثالثة لمعيار ANSI (X11.1-1990).
- في عام 1992 تم اعتماد نفس المعيار أيضًا كمعيار ISO 11756-1992. تمت الموافقة على استخدام M كاسم بديل للغة في نفس الوقت تقريبًا.
- في 8 ديسمبر 1995، تمت الموافقة على المراجعة الرابعة للمعيار ( X11.1-1995 ) من قبل المعهد الوطني الأمريكي للمعايير (ANSI)، ومن قبل المنظمة الدولية للمعايير (ISO) في عام 1999 تحت مسمى ISO 11756:1999 ، والذي نشره المعهد الوطني الأمريكي للمعايير أيضًا . وقد أنجزت لجنة تطوير المواد (MDC) مراجعة أخرى للمعيار في عام 1998، ولكنها لم تُعرض على المعهد الوطني الأمريكي للمعايير للموافقة عليها.
- في عام 1999، تمت الموافقة على آخر معيار M (ISO-IEC 11756-1999). وأكدت المنظمة الدولية للمقاييس (ISO) ذلك مجدداً في عام 2020. إلى جانب معيار ISO/IEC 15851:1999، الخاص بـ Open MUMPS Interconnect ، ومعيار ISO/IEC 15852:1999، الخاص بـ MUMPS Windowing Application Programmers Interface .
العقد الأول من القرن الحادي والعشرين
- بحلول عام ١٩٩٨، أصبحت شركة InterSystems، المتخصصة في برمجيات الوساطة، اللاعب المهيمن في سوق MUMPS بعد استحواذها على العديد من الشركات الأخرى. ففي البداية، استحوذت على شركة DataTree Inc. عام ١٩٩٣. وفي ٣٠ ديسمبر ١٩٩٤، استحوذت InterSystems على خط إنتاج DSM من شركة DEC. [ ١٠ ] ثم دمجت InterSystems هذه المنتجات في خط إنتاج واحد، وأطلقت عليها اسم OpenM على العديد من منصات الأجهزة . وفي عام ١٩٩٧، أطلقت InterSystems منتجًا جديدًا باسم Caché ، والذي استند إلى منتج ISM الخاص بها، مع بعض التأثيرات من التطبيقات الأخرى. استحوذت شركة إنترسيستمز على شركة مايكرونيتكس ديزاين، التي كانت آنذاك ثاني أكبر شركة في السوق، في 21 يونيو 1998. ولا تزال إنترسيستمز المورد المهيمن لبرامج "M"، حيث تمتلك MSM وDSM وISM وDTM، وتبيع منصة بيانات IRIS (وسابقتها Caché حتى عام 2018) لمطوري برامج M الذين يكتبون تطبيقات لأنظمة تشغيل متنوعة. كما توقفت إنترسيستمز عن استخدام مصطلح M، ولم تعد تتبع معيار M.
- تم بيع تطبيق GT.M الخاص بشركة Greystone Technology Corporation إلى شركة Sanchez Computer Associates (التي أصبحت الآن جزءًا من FIS ) في منتصف التسعينيات. في 7 نوفمبر 2000، أتاحت Sanchez تطبيق GT.M لنظام Linux بموجب ترخيص GPL [ 11 ] ، وفي 28 أكتوبر 2005، أُتيحت نسخة GT.M لنظامي OpenVMS و Tru64 UNIX بموجب ترخيص AGPL [ 12 ] . ولا يزال تطبيق GT.M متاحًا على منصات UNIX الأخرى بموجب ترخيص تقليدي.
- خلال عام 2000، أصدر راي نيومان وآخرون MUMPS V1، وهو تطبيق لنظام MUMPS (في البداية على FreeBSD) مشابه لنظام DSM-11. ومنذ ذلك الحين، تم نقل MUMPS V1 إلى أنظمة Linux و Mac OS X و Windows (باستخدام cygwin). [ 13 ] وبعد أن كان مخصصًا في البداية لمعالجات x86 فقط، تم نقل MUMPS V1 الآن إلى Raspberry Pi.
- تم إصدار نسخة مشتقة من MSM تسمى M21 في أبريل 2002، وهي مقدمة من شركة Real Software Company في مدينة راغبي بالمملكة المتحدة .
- توجد أيضًا العديد من تطبيقات MUMPS مفتوحة المصدر، بما في ذلك بعض المشاريع البحثية. أبرزها Mumps/II ، وهو مشروع للدكتور كيفن أوكين (أستاذ فخري بجامعة شمال أيوا ) وطلابه. وقد قام الدكتور أوكين أيضًا بنقل المفسر إلى نظام التشغيل Mac OS X. [ 14 ]
- أسس نيل بابالاردو، أحد المبتكرين الأصليين للغة MUMPS، شركةً تُدعى MEDITECH عام 1969. وقامت الشركة بتطوير لغة MUMPS والبناء عليها، وأطلقت على اللغة الجديدة اسم MIIS (ثم لاحقًا لغة أخرى تُدعى MAGIC). وعلى عكس شركة InterSystems، لم تعد MEDITECH تبيع برامج وسيطة، لذا فإن استخدام MIIS وMAGIC يقتصر الآن على داخل MEDITECH فقط.
- يُعد MiniM من Eugene Karataev تطبيقًا خفيفًا توقف تطويره في عام 2024 [ 15 ]
اسم
لم يُعجب الرئيس التنفيذي لشركة InterSystems باسم MUMPS، ورأى أنه يُمثل عائقًا تسويقيًا كبيرًا. ولذلك، اعتُبر تفضيل M إلى حدٍ ما بمثابة توافق مع InterSystems. كان معيار ANSI لعام 1990 مفتوحًا لكلٍ من M وMUMPS، وبعد نقاشٍ عالمي في عام 1992، غيّرت مجموعات مستخدمي Mumps الاسم رسميًا إلى M. كما عكس هذا الخلاف التنافس بين المنظمات (جمعية تقنية M، ولجنة تطوير MUMPS، ولجان معايير ANSI وISO) حول الجهة التي تُحدد الاسم "الرسمي" للغة.
وحتى عام 2020، لا تزال المنظمة الدولية للمعايير (ISO) تذكر كلاً من M و MUMPS كاسمين مقبولين رسمياً. [ 16 ]
سجل مستشفى ماساتشوستس العام "MUMPS" كعلامة تجارية لدى مكتب براءات الاختراع والعلامات التجارية الأمريكي في 28 نوفمبر 1971، وجددها في 16 نوفمبر 1992، لكنه تركها تنتهي صلاحيتها في 30 أغسطس 2003. [ 17 ]
تصميم
ملخص
لغة MUMPS مصممة خصيصًا لبناء تطبيقات قواعد البيانات. أُضيفت إليها ميزات ثانوية لمساعدة المبرمجين على إنشاء تطبيقات باستخدام موارد حاسوبية محدودة. كانت التطبيقات الأصلية تُفسَّر ، بينما قد تُجمَّع التطبيقات الحديثة كليًا أو جزئيًا . تُشغَّل البرامج الفردية في أقسام ذاكرة . كانت أقسام ذاكرة MUMPS الأولى محدودة بـ 2048 بايت، لذا ساعد الاختصار الكبير في دعم البرمجة المتعددة على الأجهزة ذات الموارد المحدودة للغاية، حيث كان بالإمكان تشغيل أكثر من مهمة MUMPS في الذاكرة الصغيرة جدًا المتوفرة في الأجهزة آنذاك. كانت القدرة على توفير أنظمة متعددة المستخدمين ميزة أخرى في تصميم اللغة، ويشير إليها اختصار " Multi - Programming ". حتى أقدم الأجهزة التي شغّلت MUMPS دعمت تشغيل مهام متعددة في الوقت نفسه. مع التحول من الحواسيب الصغيرة إلى الحواسيب الدقيقة بعد بضع سنوات، حتى "جهاز كمبيوتر لمستخدم واحد" مزود بوحدة معالجة مركزية 8 بت وذاكرة 16 كيلوبايت أو 64 كيلوبايت يمكنه دعم عدة مستخدمين، والذين يمكنهم الاتصال به من خلال محطات عرض الفيديو (غير الرسومية ) .
نظرًا لمحدودية الذاكرة في البداية، ركز تصميم لغة MUMPS على كتابة أكواد مختصرة للغاية. لذا، كان بالإمكان اختصار كل أمر أو اسم دالة في MUMPS من حرف إلى ثلاثة أحرف، مثلًا: Quit (إنهاء البرنامج) يُختصر إلى Q ، و$P = دالة $Piece ، وR = أمر Read ، و$TR = دالة $Translate . تُعد المسافات وعلامات نهاية السطر مهمة في MUMPS لأن نطاق السطر عزز نفس تصميم اللغة المختصر. وبالتالي، يمكن لسطر واحد من كود البرنامج أن يُعبّر، بأحرف قليلة، عن فكرة قد تتطلب لغات برمجة أخرى من 5 إلى 10 أضعاف هذا العدد من الأحرف. كان الاختصار سمة شائعة في اللغات المصممة في تلك الفترة (مثل FOCAL-69 ، ولغات BASIC المبكرة مثل Tiny BASIC ، إلخ). ومن الآثار الجانبية المؤسفة لذلك، إلى جانب الحاجة المبكرة لكتابة أكواد مختصرة، أن مبرمجي MUMPS لم يكونوا يُعلّقون على الأكواد بشكل روتيني، بل استخدموا اختصارات كثيرة. هذا يعني أنه حتى مبرمج MUMPS الخبير لا يمكنه ببساطة تصفح صفحة من التعليمات البرمجية لمعرفة وظيفتها، بل سيتعين عليه تحليلها سطرًا بسطر.
تُدمج خاصية التفاعل مع قواعد البيانات بسلاسة في لغة MUMPS. توفر هذه اللغة قاعدة بيانات هرمية تتكون من مصفوفات متفرقة ثابتة ، وهي متاحة ضمنيًا لكل تطبيق MUMPS. تستخدم جميع أسماء المتغيرات التي تبدأ بعلامة الإقحام (^) تخزينًا دائمًا (بدلاً من ذاكرة الوصول العشوائي RAM)، وتحتفظ بقيمها بعد إغلاق التطبيق، وتكون مرئية للتطبيقات الأخرى قيد التشغيل وقابلة للتعديل من قبلها. تُسمى المتغيرات التي تستخدم هذا التخزين المشترك والدائم بالمتغيرات العامة (Globals ) في MUMPS، لأن نطاق هذه المتغيرات متاح لجميع العمليات على النظام. أما الاستخدام الأحدث والأكثر شيوعًا لمصطلح "المتغيرات العامة" في لغات أخرى، فيشير إلى نطاق أضيق للأسماء، نظرًا لأن المتغيرات غير المحددة النطاق متاحة لجميع البرامج التي تعمل في نفس العملية، ولكنها غير مشتركة بين عمليات متعددة. يمنح نمط تخزين MUMPS (أي تخزين المتغيرات العامة كمصفوفات متفرقة ثابتة) قاعدة بيانات MUMPS خصائص قاعدة بيانات موجهة نحو المستندات . [ 18 ]^
جميع أسماء المتغيرات التي لا تبدأ بعلامة الإقحام ( ^) هي متغيرات مؤقتة وخاصة. ومثل المتغيرات العامة، فهي أيضًا ذات نموذج تخزين هرمي، ولكنها متاحة محليًا فقط لمهمة واحدة، ولذلك تُسمى "متغيرات محلية". يمكن أن تحتوي كل من "المتغيرات العامة" و"المتغيرات المحلية" على عناصر فرعية (تُسمى فهارس في مصطلحات MUMPS). لا تقتصر الفهارس على الأرقام، بل يمكن لأي حرف أو مجموعة أحرف ASCII أن يكون مُعرّفًا للفهرس. على الرغم من أن هذا ليس بالأمر غير المألوف في اللغات الحديثة مثل Perl أو JavaScript، إلا أنه كان ميزة نادرة جدًا في أواخر سبعينيات القرن الماضي. لم تكن هذه الإمكانية مُطبقة بشكل شامل في أنظمة MUMPS قبل معيار ANSI لعام 1984، حيث كان المعيار يشترط فقط السماح بالفهارس الرقمية المتعارف عليها. [ 19 ] وبالتالي، يمكن أن يحتوي المتغير المسمى "Car" على الفهارس "Door" و"Steering Wheel" و"Engine"، حيث يمكن لكل منها أن يحتوي على قيمة وأن يكون له فهارس خاصة به. قد يحتوي المتغير ^Car("Door")على رمز فرعي لمتغير متداخل، مثل "Color". وبالتالي، يمكنك القول
SET ^Car("Door","Color")="BLUE" لتعديل عقدة فرعية متداخلة من ^Car. في لغة MUMPS، يُعد "Color" الفهرس الثاني للمتغير ^Car(وتُسمى أسماء العقد الفرعية والعقد الفرعية نفسها بالفهارس). تُشبه المتغيرات الهرمية الكائنات ذات الخصائص في العديد من لغات البرمجة كائنية التوجه . بالإضافة إلى ذلك، يتطلب تصميم لغة MUMPS الاحتفاظ بجميع فهارس المتغيرات تلقائيًا بترتيب مُرتب. تُخزن الفهارس الرقمية (بما في ذلك الأعداد العشرية) من الأدنى إلى الأعلى. تُخزن جميع الفهارس غير الرقمية بترتيب أبجدي بعد الأرقام. في مصطلحات MUMPS، يُسمى هذا الترتيب المتعارف عليه . باستخدام فهارس الأعداد الصحيحة غير السالبة فقط، يستطيع مبرمج MUMPS محاكاة نوع بيانات المصفوفات من لغات أخرى. على الرغم من أن MUMPS لا تُوفر بشكل أصلي مجموعة كاملة من ميزات إدارة قواعد البيانات مثل المخططات الإلزامية، فقد بُنيت العديد من أنظمة إدارة قواعد البيانات عليها، والتي تُوفر لمطوري التطبيقات ميزات قواعد البيانات ذات الملفات المسطحة والعلائقية والشبكية .
بالإضافة إلى ذلك، توجد عوامل تشغيل مدمجة تتعامل مع السلاسل النصية المحددة (مثل القيم المفصولة بفواصل ) كمصفوفة. كان مبرمجو MUMPS الأوائل يخزنون بنية من المعلومات ذات الصلة كسلسلة نصية محددة، ثم يقومون بتحليلها بعد قراءتها؛ مما وفر وقت الوصول إلى القرص وحقق مزايا سرعة كبيرة على بعض الأجهزة.
لا يحتوي MUMPS على أنواع بيانات. يمكن التعامل مع الأرقام كسلاسل من الأرقام، أو يمكن التعامل مع السلاسل كأرقام باستخدام عوامل حسابية ( يُشار إليهاIF 20<"30 DUCKS" في مصطلحات MUMPS بـ "التحويل"). مع ذلك، قد يكون للتحويل بعض الآثار الجانبية غير المتوقعة. على سبيل المثال، عند تحويل سلسلة نصية، يقوم المحلل بتحويل أكبر قدر ممكن من السلسلة (بدءًا من اليسار) إلى رقم، ثم يتجاهل الباقي. وبالتالي، يتم تقييم العبارة كما TRUEفي MUMPS.
تهدف ميزات أخرى في اللغة إلى مساعدة تطبيقات MUMPS على التفاعل فيما بينها في بيئة متعددة المستخدمين. وتُعدّ أقفال قواعد البيانات، ومعرّفات العمليات، وذرية معاملات تحديث قواعد البيانات من المتطلبات الأساسية لتطبيقات MUMPS القياسية.
على عكس لغات البرمجة من نوع C أو Wirth ، تُعدّ بعض المسافات بين عبارات MUMPS ذات أهمية. تفصل مسافة واحدة الأمر عن وسيطه، وتفصل مسافة أخرى، أو سطر جديد، كل وسيط عن رمز MUMPS التالي. ELSEتتطلب الأوامر التي لا تأخذ وسائط (مثل `$`) مسافتين متتاليتين. الفكرة هي أن مسافة واحدة تفصل الأمر عن الوسيط (غير الموجود)، والمسافة التالية تفصل الوسيط عن الأمر التالي. للأسطر الجديدة أهمية أيضًا؛ فالأمر `$` IFأو ELSE` FOR$` يُعالج (أو يتخطى) كل شيء آخر حتى نهاية السطر. لجعل هذه العبارات تتحكم في أسطر متعددة، يجب استخدام DOالأمر `$` لإنشاء كتلة برمجية.
مثال: مرحباً بالعالم!
قد يكون برنامج "مرحباً بالعالم!" البسيط في لغة MUMPS كالتالي:
اكتب "مرحباً بالعالم!" ويتم تشغيله مع الأمر do ^hello بعد حفظه على القرص. ولتنفيذ الكود مباشرةً، يلزم وجود "علامة" (أي سلسلة أبجدية رقمية) في الموضع الأول من سطر البرنامج لإخبار مُفسِّر MUMPS بمكان بدء التنفيذ. وبما أن MUMPS يسمح بربط الأوامر معًا في نفس السطر، وبما أنه يمكن اختصار الأوامر إلى حرف واحد، فيمكن جعل هذا الروتين أكثر إيجازًا.
w "مرحباً بالعالم!",! يؤدي الرمز ' ,!' بعد النص إلى إنشاء سطر جديد. سيعيد هذا الكود إلى موجه الأوامر.
سمات
يقدم معيار ANSI X11.1-1995 وصفًا رسميًا وكاملاً للغة؛ وتتوفر نسخة مشروحة من هذا المعيار على الإنترنت. [ 20 ]
تشمل خصائص اللغة ما يلي:
- أنواع البيانات
- يوجد نوع بيانات عالمي واحد ، يتم تحويله ضمنيًا إلى أنواع بيانات السلسلة أو العدد الصحيح أو الفاصلة العائمة حسب ما يتطلبه السياق.
- القيم المنطقية (تسمى قيم الصدق في لغة MUMPS)
- في أوامر IF وغيرها من الصيغ التي تُقيّم فيها التعبيرات كشروط، تُقيّم أي قيمة نصية كقيمة عددية، وإذا كانت هذه القيمة غير صفرية، تُفسّر على أنها صحيحة.
a<bتُعطي هذه الصيغة 1 إذا كانت قيمة a أقل من b، و0 خلاف ذلك.
- الإقرارات
- لا شيء. يتم إنشاء جميع المتغيرات ديناميكيًا عند تعيين قيمة لها لأول مرة.
- خطوط
- تُعدّ هذه الوحدات النحوية مهمة، على عكس وضعها في اللغات المصممة على غرار لغة C أو باسكال. يُسمح باستخدام عدة عبارات في السطر الواحد، وهو أمر شائع. نطاق أي أمر IF أو ELSE أو FOR هو "باقي السطر الحالي".
- حساسية حالة الأحرف
- الأوامر والدوال المضمنة غير حساسة لحالة الأحرف. في المقابل، أسماء المتغيرات والعلامات حساسة لحالة الأحرف. لا يوجد معنى خاص للأحرف الكبيرة أو الصغيرة، ولا توجد سوى اصطلاحات قليلة شائعة الاستخدام. يُسمح باستخدام علامة النسبة المئوية (%) كأول حرف في أسماء المتغيرات والعلامات.
- ما بعد المشروطية
- يمكن التحكم في تنفيذ أي أمر تقريبًا بإضافة نقطتين رأسيتين وتعبير منطقي بعده. على سبيل
SET:N<10 A="FOO"المثال، يُعيّن A إلى "FOO" إذا كانت N أقل من 10؛DO:N>100 PRINTERR,ويُنفّذ PRINTERR إذا كانت N أكبر من 100. يوفر هذا التركيب شرطًا لا يتجاوز نطاقه سطرًا كاملًا.
- اختصار
- يمكنك اختصار جميع الأوامر والوظائف الأصلية تقريبًا إلى حرف واحد أو حرفين أو ثلاثة أحرف.
- الكلمات المحجوزة
- لا حاجة إلى كلمات محجوزة. بما أن لغة MUMPS تفسر الشيفرة المصدرية حسب السياق، فلا حاجة إلى كلمات محجوزة. يمكنك استخدام أسماء أوامر اللغة كمتغيرات، لذا فإن الشيفرة التالية صحيحة تمامًا في لغة MUMPS:
GREPTHIS() مجموعة جديدة، جديد، ثم، إذا، قتل، خروج، مجموعة إذا="قتل"، مجموعة="11"، قتل="11"، خروج="رجوع"، ثم "قتل" إذا كان الشرط يساوي صفرًا، فافعل ذلك. خروج:$خروج خروج خروج ; (خروج) ثم إذا كان الشرط صحيحًا، فقم بتعيين وإيقاف العملية. ثم قم بتعيين العملية وإيقافها. ثم قم بإنهاء العملية.
- يمكن جعل MUMPS أكثر تعقيدًا باستخدام صيغة عامل التشغيل المختصرة، كما هو موضح في هذا المثال الموجز المشتق من المثال أعلاه:
GREPTHIS() NS,N,T,I,K,QSI="K",S="11",K="11",Q="R",T="K" II=TDT س:$QQQ TII,S&K SS=S+KQ
- المصفوفات
- تُنشأ المصفوفات ديناميكيًا، وتُخزن على شكل أشجار B ، وهي متفرقة (أي لا تشغل مساحة تُذكر للعقد المفقودة)، ويمكنها استخدام أي عدد من الفهارس، والتي قد تكون سلاسل نصية أو أرقامًا (بما في ذلك الأعداد العشرية). تُخزن المصفوفات دائمًا بترتيب مُرتب، لذا لا حاجة أبدًا لفرزها أو تجميعها أو إعادة ترتيبها أو إعادة تنظيم قاعدة البيانات. توفر الدوال المدمجة مثل $DATA و $ORDER و $NEXT (التي أصبحت قديمة) و $QUERY فحصًا فعالًا واجتيازًا لبنية المصفوفة الأساسية، سواء على القرص أو في الذاكرة.
لكل i=10000:1:12345، اجعل sqtable(i)=i*i set address("Smith","Daniel")="dpbsmith@world.std.com"
- المصفوفات المحلية
- تُخزَّن أسماء المتغيرات التي لا تبدأ بعلامة الإقحام (^) في ذاكرة العملية، وتكون خاصة بالعملية المُنشئة، وتنتهي صلاحيتها عند انتهاء العملية المُنشئة. يعتمد حجم التخزين المتاح على التنفيذ. بالنسبة للتنفيذات التي تستخدم الأقسام، يكون محدودًا بحجم القسم (قد يكون حجم القسم الصغير 32 كيلوبايت). أما بالنسبة للتنفيذات الأخرى، فقد يصل إلى عدة ميغابايت.
- المصفوفات العامة
^abc, ^defتُخزَّن هذه المتغيرات على القرص، وتكون متاحة لجميع العمليات، وتظل محفوظة حتى بعد انتهاء العملية المُنشئة. تُعدّ المتغيرات العامة الكبيرة جدًا (على سبيل المثال، مئات الجيجابايت) عملية وفعّالة في معظم التطبيقات. هذه هي آلية "قاعدة البيانات" الرئيسية في MUMPS، حيث تُستخدم بدلًا من استدعاء نظام التشغيل لإنشاء الملفات وكتابتها وقراءتها.
- غير مباشر
- في العديد من السياقات،
@VBLيمكن استخدام هذه الطريقة، وهي تستبدل محتويات VBL فعليًا بعبارة MUMPS أخرى.SET XYZ="ABC" SET @XYZ=123تقوم بتعيين قيمة المتغير ABC إلى 123،SET SUBROU="REPORT" DO @SUBROUثم تُنفذ الإجراء الفرعي المسمى REPORT. يتيح هذا الاستبدال التقييم الكسول والربط المتأخر، كما أنه يُعادل عمليًا "المؤشرات" في لغات البرمجة الأخرى.
- وظيفة القطعة
- يقسم هذا الأمر المتغيرات إلى أجزاء منفصلة باستخدام فاصل يحدده المستخدم (يُسمى أحيانًا "فاصلًا"). سيجد مستخدمو لغة awk هذا الأمر مألوفًا. يشير هذا إلى "الجزء الثالث من STRINGVAR
$PIECE(STRINGVAR,"^",3)المفصول بعلامة الإقحام ". يمكن أيضًا استخدام دالة piece كهدف لأمر تعيين (SET).
$PIECE("world.std.com",".",2)العائدمعياري.
- بعد
SET X="dpbsmith@world.std.com"،SET $P(X,"@",1)="office"يؤدي ذلك إلى أن يصبح X هو "office@world.std.com" (لاحظ أن $P يعادل $PIECE ويمكن كتابته على هذا النحو).
- دالة الترتيب
- تتعامل هذه الدالة مع مُدخلاتها كبنية بيانات، وتجد الفهرس التالي الموجود الذي يحمل نفس البنية باستثناء الفهرس الأخير. تُعيد الدالة القيمة المُرتّبة بعد القيمة المُدخلة. (يتعامل هذا مع مرجع المصفوفة كبيانات قابلة للعنونة بالمحتوى وليس كعنوان لقيمة).
Set stuff(6)="xyz",stuff(10)=26,stuff(15)=""
$Order(stuff(""))العائد6،$Order(stuff(6))ينتج10،$Order(stuff(8))ينتج10،$Order(stuff(10))ينتج15،$Order(stuff(15))ينتج"".
Set i="" For Set i=$O(stuff(i)) Quit:i="" Write !,i,10,stuff(i)
- هنا، تتكرر حلقة التكرار " For" بدون وسيط حتى يتم إيقافها بواسطة أمر "Quit" النهائي . يطبع هذا السطر جدولًا لقيم i حيث تكون i على التوالي 6 و10 و15.
stuff(i)
- لتكرار قاعدة البيانات، تقوم دالة Order بإرجاع المفتاح التالي المراد استخدامه.
GTM>S n="" GTM>S n=$order(^nodex(n)) GTM>zwr n ن = مبنى" GTM>S n=$order(^nodex(n)) GTM>zwr n n=" name:gd" GTM>S n=$order(^nodex(n)) GTM>zwr n n="%kml:guid"
يدعم برنامج MUMPS عدة مستخدمين وعمليات متزامنة حتى في حال عدم دعم نظام التشغيل الأساسي لذلك (مثل MS-DOS ). بالإضافة إلى ذلك، يتيح البرنامج إمكانية تحديد بيئة لمتغير، كاستخدام اسم جهاز في متغير (كما في المثال المذكور SET ^|"DENVER"|A(1000)="Foo") ، مما يسمح بالوصول إلى البيانات على أجهزة بعيدة.
نقد
تختلف بعض جوانب بناء جملة MUMPS اختلافًا كبيرًا عن لغات البرمجة الحديثة، مما قد يُسبب بعض الارتباك، على الرغم من اختلاف هذه الجوانب بين إصدارات اللغة المختلفة. في بعض الإصدارات، لا يُسمح باستخدام المسافات البيضاء داخل التعبيرات، لأنها تُنهي العبارة: 2 + 3يُعدّ خطأً، ويجب كتابتها بشكل صحيح 2+3. جميع المعاملات لها نفس الأولوية وهي تجميعية من اليسار ( 2+3*10يُقيّم إلى 50). معاملات "أصغر من أو يساوي" و"أكبر من أو يساوي" هي '>و '<(أي معامل النفي المنطقي 'بالإضافة إلى معامل مقارنة صارم في الاتجاه المعاكس)، على الرغم من أن بعض الإصدارات تسمح باستخدام <=و الأكثر شيوعًا >=على التوالي. تُستخدم النقاط ( .) لترك مسافة بادئة للأسطر في كتلة DO، وليس المسافات البيضاء. لا يحتاج الأمر ELSE إلى شرط IF مُقابل، لأنه يعمل عن طريق فحص القيمة في متغير النظام المُضمّن $test.
تتميز قواعد نطاق MUMPS بتساهل أكبر من لغات البرمجة الحديثة الأخرى. يتم تحديد نطاق المتغيرات المحلية المُعلنة باستخدام مكدس الاستدعاءات. يمكن لأي روتين رؤية جميع المتغيرات المحلية المُعلنة للروتينات التي تليه في مكدس الاستدعاءات، ولا يمكن للروتينات منع الروتينات التي تستدعيها من تعديل متغيراتها المحلية المُعلنة، إلا إذا قام المُستدعي بإنشاء مستوى مكدس جديد يدويًا ( do) وتسمية كل متغير يرغب في حمايته ( . new x,y) قبل استدعاء أي روتينات فرعية. في المقابل، تكون المتغيرات غير المُعلنة (المتغيرات التي يتم إنشاؤها باستخدامها، وليس بإعلانها) ضمن نطاق جميع الروتينات التي تعمل في نفس العملية، وتبقى ضمن النطاق حتى انتهاء البرنامج.
نظرًا لأن مراجع قاعدة بيانات MUMPS تختلف عن مراجع المتغيرات الداخلية فقط في بادئة علامة الإقحام، فمن السهل جدًا تعديل قاعدة البيانات عن غير قصد، أو حتى حذف "جدول" قاعدة البيانات. [ 21 ]
المستخدمون
كانت وزارة شؤون المحاربين القدامى الأمريكية (المعروفة سابقًا باسم إدارة شؤون المحاربين القدامى) من أوائل الجهات الرئيسية التي تبنت لغة MUMPS. وقد أثرت جهودها التطويرية (ومساهماتها اللاحقة في قاعدة بيانات تطبيقات MUMPS المجانية) على العديد من المستخدمين في المجال الطبي حول العالم. في عام 1995، حصل نظام قبول المرضى وتتبعهم وتخريجهم التابع لوزارة شؤون المحاربين القدامى، والمعروف باسم برنامج الحاسوب اللامركزي للمستشفيات (DHCP)، على جائزة Computerworld Smithsonian لأفضل استخدام لتكنولوجيا المعلومات في الطب. وفي يوليو 2006، حصلت وزارة شؤون المحاربين القدامى (VA) / إدارة صحة المحاربين القدامى (VHA) على جائزة الابتكارات في الحكومة الأمريكية المقدمة من معهد آش التابع لكلية جون إف كينيدي للحكومة بجامعة هارفارد ، وذلك لتوسيع نطاق استخدام برنامج DHCP ليشمل أنظمة وتكنولوجيا معلومات صحة المحاربين القدامى ( VistA ). وتستخدم جميع مستشفيات وزارة شؤون المحاربين القدامى تقريبًا في الولايات المتحدة، بالإضافة إلى دائرة الصحة الهندية ، وأجزاء كبيرة من نظام مستشفيات وزارة الدفاع CHCS، قواعد بيانات MUMPS لتتبع البيانات السريرية.
تشمل شركات تكنولوجيا المعلومات الصحية الأخرى التي تستخدم بروتوكول MUMPS ما يلي:
- ملحمي
- ميديتك
- شركة جي إي للرعاية الصحية (المعروفة سابقًا باسم أنظمة IDX وسينتريسيتي )
- أميريباث (جزء من كويست دياجنوستيكس)
- الرعاية المتمحورة حول المريض
- أول سكريبتس
- كوفنتري للرعاية الصحية
- إيميس هيلث
- أنظمة معلومات صن كويست (سابقًا ميسيس للرعاية الصحية [ 22 ] ).
- نتسمارت
تستخدم العديد من المختبرات المرجعية، مثل DASA و Quest Diagnostics [ 23 ] وDynacare، برنامج MUMPS المكتوب بواسطة أو المبني على شفرة شركة Antrim. وقد استحوذت شركة Misys Healthcare (التي تُعرف الآن باسم Sunquest Information Systems) على شركة Antrim في عام 2001. [ 24 ]
يُستخدم نظام MUMPS على نطاق واسع في التطبيقات المالية. وقد حظي بشعبية مبكرة في القطاع المالي، ويُستخدم في العديد من البنوك والاتحادات الائتمانية. كما يستخدمه بنك إنجلترا وبنك باركليز . [ 25 ] [ 26 ] [ 27 ]
التطبيقات
منذ عام 2005، كان نظاما Greystone Technology MUMPS (GT.M) من شركة Fidelity National Information Services وCaché من شركة Intersystems Corporation هما الأكثر شيوعًا في تطبيقات MUMPS. أعلنت وكالة الفضاء الأوروبية في 13 مايو 2010 أنها ستستخدم قاعدة بيانات InterSystems Caché لدعم مهمة Gaia ، التي تهدف إلى رسم خريطة لمجرة درب التبانة بدقة غير مسبوقة. [ 28 ] وتعمل InterSystems حاليًا على استبدال Caché بنظام Iris. [ 29 ]
وتشمل التطبيقات الحالية الأخرى ما يلي:
- M21
- YottaDB [ 30 ]
- ميني إم
- المعيار المرجعي م (RSM)
- فريم
انظر أيضاً
مراجع
- ↑ نوفمبر، جوزيف (2016). "اسأل طبيبك... عن أجهزة الكمبيوتر" . حوليات IEEE لتاريخ الحوسبة . 38 (1): 3-5 . doi : 10.1109/MAHC.2016.5 .
- ↑ تويد، روب؛ جيمس، جورج (2 أغسطس 2008). "MUMPS: قاعدة بيانات الإنترنت واسعة النطاق" . مؤرشف من الأصل في 27 سبتمبر 2021. تم الاطلاع عليه في 25 أكتوبر 2022 – عبر SlideShare .
- ↑ غرينز، روبرت؛ بابالاردو، أ. نيل؛ ماربل، كورت و؛ بارنيت، ج. أوكتو (1969). "تصميم وتنفيذ نظام إدارة البيانات السريرية". مجلة أبحاث الحوسبة الطبية الحيوية . 5 (أكتوبر): 469-485 . doi : 10.1016/0010-4809(69)90012-3 . PMID 11697375 .
- ↑ غرينز، روبرت أ؛ بارنيت، جي أوكتو؛ كلاين، ستيوارت دبليو؛ روبنز، أنتوني؛ بريور، رودريك إي (1970). "تسجيل واسترجاع ومراجعة البيانات الطبية من خلال تفاعل الطبيب مع الحاسوب". مجلة نيو إنجلاند الطبية . 282 (6): 307-315 . doi : 10.1056/NEJM197002052820605 . PMID 5410816 .
- ↑ بيندرغراس، هنري ب؛ غرينز، روبرت أ؛ بارنيت، جي أوكتو؛ بويتراس، جيمس و؛ بابالاردو، أ نيل؛ ماربل، كورت و (1969). "نظام حاسوبي متصل بالإنترنت لإدخال تقارير الأشعة بشكل منهجي". مجلة علم الأشعة . 92 (4): 709-13 . doi : 10.1148/92.4.709 . PMID 5767748 .
- 1 2 3 تراسك، غاردنر؛ دايموند، جون (6 أبريل 1999). "أسئلة وأجوبة حول تقنية M ولغة MUMPS، الجزء 1/2" . مجموعة الأخبار : comp.lang.mumps . يوزنت: FKu0LK.19p@world.std.com . تاريخ الاسترجاع: 25 أكتوبر 2022 .
- ↑ دليل مرجعي للغة VAX-11 DSM . شركة المعدات الرقمية. 1982. OCLC 29217964 .
- ↑ "خوادم HP NonStop، قائمة صيانة منتجات البرامج، تاريخ السريان: يناير 2012" (ملف PDF) . شركة هيوليت-باكارد للتطوير، المحدودة، 20 يناير 2012، صفحة 32. تاريخ الاطلاع: 17 مايو 2014 .
- ↑ "نسختان من برنامج MUMPS out" . مجلة Computerworld . المجلد 21، العدد 48. 30 نوفمبر 1987. تاريخ الاسترجاع: 9 يوليو 2022 .
- ↑ غرابشيد، بول؛ راغون، تيري (2 يناير 1995). "إعلان DSM" . مجموعة الأخبار : comp.lang.mumps . يوزنت: hwSTpyiTUNQJ@world.std.com . تاريخ الاسترجاع: 25 أكتوبر 2022 .
- ↑ «سانشيز تُقدّم قاعدة بيانات GT.M كبرنامج مجاني مفتوح المصدر لمستخدمي GNU/Linux» . شركة سانشيز لعلوم الحاسوب (بيان صحفي). 8 نوفمبر 2000. مؤرشف من الأصل في 28 أبريل 2004. تم الاطلاع عليه في 12 أغسطس 2013 .
- ↑ "محرك قاعدة بيانات GT.M عالي الأداء لـ TP" . Sourceforge.net . تم الاطلاع عليه بتاريخ 12 أغسطس 2013 .
- ↑ "قاعدة بيانات ولغة MUMPS" . Sourceforge.net . تم الاطلاع عليه بتاريخ 12 أغسطس 2013 .
- ↑ "Mumps/Mii" . Rychannel.com. 2012-11-08 . تم الاطلاع عليه بتاريخ 2013-08-12 .
- ↑ "أغسطس المظلم: خادم قاعدة بيانات MiniM" .
- ↑ "ISO/IEC 11756:1999(en) تكنولوجيا المعلومات - لغات البرمجة - M" . www.iso.org . 2020. تاريخ الاسترجاع: 18 أبريل 2024 .
- ↑ "حالة العلامة التجارية واسترجاع الوثائق" . tsdr.uspto.gov . تم الاطلاع عليه بتاريخ 26 فبراير 2018 .
- ↑ "برمجة قواعد البيانات المتقدمة باستخدام متغيرات MUMPS العامة" (ملف PDF) . Gradvs1.mjgateway.com. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 2016-07-06 . تم الاطلاع عليه بتاريخ 2013-08-13 .
- ↑ "معايير M المشروحة [ UMPS ] " . 71.174.62.16. 2011-11-29 . تم الاطلاع عليه بتاريخ 2013-08-12 .
- ↑ "معايير M المشروحة [ UMPS ] " . 71.174.62.16 . تم الاطلاع عليه بتاريخ 26 فبراير 2018 .
- ↑ ريتشموند، جوزيف روبن (1984). مقاييس قابلية صيانة برامج MUMPS (أطروحة دكتوراه). مركز العلوم الصحية بجامعة تكساس في دالاس . OCLC 13285529 .
- ↑ "شركة SunQuest تخرج من تحت عباءة شركة Misys" . أخبار تكنولوجيا المعلومات الصحية. 13 مارس 2008. تم الاطلاع عليه بتاريخ 12 أغسطس 2013 .
- ↑ "أجاكس ذو الأهمية البالغة: تسهيل وتسريع عملية طلب الاختبارات في Qu" . Slideshare.net. 5 أبريل 2008. تم الاطلاع عليه بتاريخ 12 أغسطس 2013 .
- ↑ "شركة صن كويست تستحوذ على شركة أنترم - مكتبة إلكترونية مجانية" . Thefreelibrary.com. 26 نوفمبر 1996. تاريخ الاطلاع: 12 أغسطس 2013 .
- ↑ "مرحباً بكم في M21 - قاعدة بيانات القرن الحادي والعشرين" . M21.uk.com . تاريخ الوصول: 13 أغسطس 2013 .
- ↑ "الأنظمة المالية القائمة على التخزين المؤقت" . إنترسيستمز . مؤرشف من الأصل بتاريخ 2013-06-02 . تم الاطلاع عليه بتاريخ 2013-08-13 .
- ↑ "تطبيقات IDEA الجاهزة للخدمات المصرفية وتخطيط موارد المؤسسات" . Idea.cz. تم الاطلاع عليه بتاريخ 13 أغسطس 2013 .
- ↑ «وكالة الفضاء الأوروبية تختار قاعدة بيانات InterSystems Caché لمهمة Gaia لرسم خريطة درب التبانة» . RealWire . Realwire.com. ١٣ مايو ٢٠١٠. تاريخ الاسترجاع : ١٣ أغسطس ٢٠١٣ .
- ↑ "InterSystems Iris" . InterSystems . تم الاطلاع عليه بتاريخ 18-03-2021 .
- ↑ "موقع YottaDB الإلكتروني" . yottadb.com. 24 مايو 2024. تم الاطلاع عليه بتاريخ 24-05-2023 .
للمزيد من القراءة
- والترز، ريتشارد ف. (15 يناير 1989). أساسيات لغة MUMPS: مقدمة للمبرمجين المبتدئين والمتوسطين ( الطبعة الثانية). دار النشر الرقمية. رقم ISBN 978-1555580179. LCCN 88033522 . OCLC 18989618 . OL 2055247M .
- والترز، ريتشارد ف. (19 يونيو 1997). برمجة لغة M: دليل شامل ( الطبعة الثانية). دار النشر الرقمية. ISBN 978-1-55558-167-1. إل سي سي إن 97006513 . او سي ال سي 78593848 . OL 661091M – عبر أرشيف الإنترنت .
- ليوكوفيتش، جون. دليل MUMPS الكامل: مقدمة ودليل مرجعي للغة برمجة MUMPS. ISBN 0-13-162125-4
- كيرستن، وولفغانغ، وآخرون (2003) تطوير تطبيقات كائنية التوجه باستخدام قاعدة بيانات Caché ما بعد العلائقية ISBN 3-540-00960-4
- مارتينيز دي كارفاخال، إرنستو (1993). El Lenguaje MUMPS (بالإسبانية الأوروبية) ( الطبعة الأولى). برشلونة: PPU. رقم ISBN 978-8447701254. OCLC 435380102 . OL 40214570M .
- أوكين، كي سي؛ لغة لتنفيذ برامج استرجاع المعلومات، مراجعة عبر الإنترنت، المجلد 16، العدد 3، الصفحات 127-137 (1992).
- أوكين، كيه سي؛ وماكوليجان، إي إي، دراسة حالة لسجل مريض النكاف على شبكة الإنترنت الداخلية، مجلة جمعية نظم المعلومات والإدارة الصحية، المجلد 11، العدد 3، الصفحات 81-95 (1997).
- أوكين، كيه سي؛ وماكوليجان، إي إي، آلة افتراضية للنكاف قائمة على الويب، وقائع الجمعية الأمريكية للمعلوماتية الطبية 1997
- أوكين، كي سي، لغة برمجة النكاف، كريت سبيس، رقم ISBN 1-4382-4338-3، 120 صفحة (2010).
روابط خارجية
- تراسك، غاردنر؛ دايموند، جون (6 أبريل 1999). "أسئلة وأجوبة حول تقنية M ولغة MUMPS، الجزء 1/2" . مجموعة الأخبار : comp.lang.mumps . يوزنت: FKu0LK.19p@world.std.com . تاريخ الاسترجاع: 25 أكتوبر 2022 .
- "comp.lang.mumps" . مجموعة الأخبار : comp.lang.mumps . تم الاطلاع عليها بتاريخ 25 أكتوبر 2022 – عبر مجموعات جوجل .
- مترجم لغة برمجة النكاف (GPL) من تأليف كيفن أوكين، جامعة شمال أيوا
- MUMPS على موقع SourceForge
- روابط M على موقع Hardhats.org
- تطوير وتشغيل نظام معلومات مختبر MUMPS: تجربة عقد من الزمن في مستشفى جونز هوبكنز
- تعتمد حلول تكنولوجيا IDEA Systems على YottaDB (المعروفة سابقًا باسم FIS GT.M) و Caché
- وثائق ومواضيع وموارد MUMPS (مزيج من اللغتين التشيكية والإنجليزية)
- لغة برمجة MUMPS
- معالجة البيانات
- لغات البرمجة التي تركز على البيانات
- شركة المعدات الرقمية
- لغات البرمجة ذات الكتابة الديناميكية
- المعلوماتية الصحية
- معايير اللجنة الكهروتقنية الدولية
- معايير ISO
- مستشفى ماساتشوستس العام
- PDP-11
- لغات البرمجة المستمرة
- لغات البرمجة ذات معيار ISO
- لغات البرمجة النصية
- لغات البرمجة التي تم ابتكارها عام 1966
