MUMPS - ויקיפדיה - MUMPS

חַזֶרֶת
פרדיגמהמְאוֹד הֶכְרֵחִי נוֹהָלִי
עוצב על ידיניל פפלארדו
הופיע לראשונה1966; לפני 54 שנים (1966)
שחרור יציב
ANSI X11.1-1995 / 8 בדצמבר 1995 (1995-12-08)
משמעת הקלדהחסר טיפוס
מערכת הפעלהחוצה פלטפורמות
מושפע ע"י
ג'וס
מוּשׁפָע
PSL, Caché ObjectScript

חַזֶרֶת ("מערכת רב תכנותית של בית החולים הכללי במסצ'וסטס"), או M, הוא משולב שפת תכנות ו מאגר ערך מפתח פותח במקור בבית החולים הכללי של מסצ'וסטס לצורך ניהול מערכות מידע במעבדות בית חולים.

טכנולוגיית M [UMPS] התרחבה מאז ברחבי ארצות הברית כטכנולוגיה השלטת עבור מערכות מידע בריאותיות רשומות בריאות אלקטרוניות. מערכות מידע מבוססות M [UMPS] מפעילות כיום למעלה מ -40% מבתי החולים בארה"ב, מנהלות את מרבית 3500 בתי החולים והמרפאות הפדרליות בארה"ב ומספקים שירותי מידע בריאותי עבור למעלה מ -54% מהחולים ברחבי ארה"ב.[1]

מאפיין מרכזי של שפת M הוא מסד הנתונים המשולב שלה, המאפשר גישה ישירה ומהירה לקריאה-כתיבה לאחסון דיסק קבוע, עם מהירות דומה של שפות הגישה זמנית זיכרון גישה אקראית.[2]. זה מספק אינטגרציה הדוקה של יישומים ללא הגבלה בתוך מסד נתונים יחיד, ומספק ביצועים ואמינות גבוהים במיוחד כ- עיבוד עסקאות מקוון מערכת.

סקירה כללית

MUMPS היא שפה המיועדת לבניית יישומי מסדי נתונים ומיועדת לה. נכללו תכונות בשפה משנית כדי לעזור למתכנתים לייצר יישומים תוך שימוש במשאבי מחשוב מינימליים. היישומים המקוריים היו פירשתי, אם כי יישומים מודרניים עשויים להיות באופן מלא או חלקי מלוקט. "תוכניות" בודדות פועלות בזיכרון "מחיצות". מחיצות זיכרון מוקדמות של MUMPS הוגבלו ל -2048 בתים כל כך קיצור אגרסיבי סייע רבות לתכנות רב על חומרה מוגבלת מאוד של משאבים, מכיוון שיותר ממשימת MUMPS אחת יכולה להשתלב בזיכרונות הקטנים מאוד שהיו קיימים באותה עת בחומרה. היכולת לספק מערכות מרובות משתמשים הייתה תכונה נוספת לעיצוב שפה. המילה "Mאולטרה-פרוגרמות "בראשי התיבות מצביעות על כך. אפילו המכונות המוקדמות ביותר שמריצות MUMPS תמכו במספר עבודות הפועלות במקביל. עם המעבר ממחשבים מיני למחשבי מיקרו כמה שנים מאוחר יותר, אפילו" מחשב משתמש יחיד "עם 8 יחיד. מעבד -bit ו- 16K או 64K זיכרון יכולים לתמוך במספר משתמשים, שיכולים להתחבר אליו מ- (לא-גרפי ) מסופי תצוגת וידאו.

מאחר והזיכרון היה צמוד במקור, עיצוב השפה של MUMPS העריך קוד מאוד נוקשה. לפיכך, ניתן לקצר כל פקודה או שם פונקציה של MUMPS מאחת לשלוש אותיות, למשל. צא (תוכנית יציאה) כ- Q, $ P = פונקציה $ Piece, R = פקודת קריאה, $ TR = $ פונקציית Translate. רווחים וסמנים של סוף השורה הם משמעותיים ב- MUMPS מכיוון שהיקף הקווים קידם את אותו עיצוב שפה נוקשה יותר. לפיכך, שורה אחת של קוד תוכנה יכולה לבטא, עם מעט תווים, רעיון שעבורו שפות תכנות אחרות יכולות לדרוש פי 5 עד 10 תווים רבים. קיצור היה תכונה נפוצה של שפות שתוכננו בתקופה זו (למשל, FOCAL-69, יסודות מוקדמים כגון Tiny BASIC, וכו.). תופעת לוואי מצערת לכך, יחד עם הצורך המוקדם לכתוב קוד מינימליסטי, הייתה שמתכנתים של MUMPS בשגרה לא התייחסו לקוד והשתמשו בקיצורים נרחבים. פירוש הדבר היה שאפילו מתכנת מומחה MUMPS לא יכול היה רק ​​לדפדף בעמוד קוד כדי לראות את תפקידו אלא היה יכול לנתח אותו שורה אחר שורה.

אינטראקציה בין בסיסי נתונים מובנית בשקיפות בשפה. שפת MUMPS מספקת מסד נתונים היררכי מורכב מ מַתְמִיד מערכים דלילים, אשר "נפתח" באופן מרומז לכל יישום MUMPS. כל שמות המשתנים המוקדמים עם תו ה- caret ("^") משתמשים באחסון קבוע (במקום RAM), ישמרו על ערכיהם לאחר יציאת היישום ויהיו גלויים (וניתנים לשינוי על ידי) יישומים פועלים אחרים. משתנים המשתמשים באחסון משותף וקבוע זה נקראים גלובאלס ב- MUMPS, מכיוון שהסקירה של המשתנים הללו "זמינה באופן גלובלי" לכל העבודות במערכת. השימוש האחרון והנפוץ יותר בשם "משתנים גלובליים" בשפות אחרות הוא סקירה מוגבלת יותר של שמות, מהעובדה משתנים לא מגובשים זמינים "באופן גלובלי" לכל התוכניות הפועלות באותו תהליך, אך אינן משותפות לתהליכים מרובים. מצב האחסון MUMPS (כלומר Globals מאוחסן כמערכים דלילים מתמשכים), נותן למאגר MUMPS את המאפיינים של מסד נתונים מונחה מסמכים.[3]

כל שמות המשתנים שאינם מוקדמים עם תו הקרט ("^") הם זמניים ופרטיים. בדומה למשתנים גלובליים, יש להם גם מודל אחסון היררכי, אך הם רק "זמינים מקומית" למשרה אחת, ולכן הם מכונים "מקומיים". גם ל"גלובלים "וגם ל"מקומיים" יכולים להיות צמתים לילדים (נקראים מנויים במינוח MUMPS). מנויים אינם מוגבלים למספרים בלבד ASCII תו או קבוצת תווים יכולה להיות מזהה מנוי. אמנם זה לא נדיר עבור שפות מודרניות כמו Perl או JavaScript, אך זו הייתה תכונה יוצאת דופן ביותר בסוף שנות השבעים. יכולת זו לא יושמה באופן אוניברסלי במערכות MUMPS לפני תקן ANSI משנת 1984, מכיוון שרק מנויים מספריים קנונית נדרשו על-פי התקן להתיר.[4] לפיכך, המשתנה בשם 'מכונית' יכול לקבל מנויים "דלת", "גלגל הגה" ו"מנוע ", שכל אחד מהם יכול להכיל ערך ובעל מנויים משלו. המשתנה ^ Car ("דלת") יכול להיות בעל תת-משתנה מקונן של "Color" למשל. כך, אפשר לומר

SET ^ רכב ("דלת", "צבע") = "כחול"

כדי לשנות צומת ילדים מקוננת של ^ רכב. במונחי MUMPS, "צבע" הוא המשנה השנייה של המשתנה ^ Car (גם שמות צמתי הילד וגם צמתי הילד עצמם נקראים גם מנויים). משתנים היררכיים דומים לאובייקטים בעלי תכונות ברבים מונחה עצמים שפות. בנוסף, תכנון השפה MUMPS מחייב שכל מנויי המשתנים יישמרו באופן מסודר באופן אוטומטי. מנויים מספריים (כולל מספרי נקודה צפה) מאוחסנים מהנמוך ביותר לגבוה ביותר. כל המנויים הלא מספריים מאוחסנים בסדר אלפביתי בעקבות המספרים. במינוח MUMPS זהו סדר קנוני. על ידי שימוש במנויים מנופים שלמים שאינם שליליים בלבד, מתכנת ה- MUMPS יכול לחקות את ה- מערכים סוג נתונים משפות אחרות. למרות ש- MUMPS אינה מציעה באופן מלא סט מלא של DBMS תכונות כגון סכימות חובה, כמה מערכות DBMS נבנו על גבי זה המספקות למפתחי יישומים תכונות של קבצים שטוחים, יחסיים ומסדי נתונים ברשת.

בנוסף, ישנם אופרטורים מובנים המטפלים במחרוזת תוחמת (למשל, ערכים מופרדים בפסיק ) כמערך. מתכנתים מוקדמים של MUMPS לאחסן לעיתים קרובות מבנה של מידע קשור כמחרוזת תוחמת, ומנתחים אותו לאחר קריאתו; זה חסך זמן גישה לדיסק והציע יתרונות משמעותיים בחומרה מסוימת.

ל- MUMPS אין סוגי נתונים. ניתן להתייחס למספרים כאל מחרוזות ספרות, או להתייחס למחרוזות כמספרים על ידי אופרטורים מספריים (מוּכְרָח, במינוח MUMPS). לכפייה יכולות להיות כמה תופעות לוואי משונות. לדוגמא, כאשר מכריח מחרוזת, המנתח הופך כמה שיותר מהמחרוזת (החל משמאל) למספר שהוא יכול, ואז משליך את השאר. כך ההצהרה אם 20 <"30 ברווזים" מוערך כ- נָכוֹן ב- MUMPS.

תכונות אחרות של השפה נועדו לעזור ליישומי MUMPS לתקשר זה עם זה בסביבה מרובת משתמשים. מנעולי מסד נתונים, מזהי תהליכים ו- אָטוֹמִיוּת עסקאות עדכון מסד נתונים נדרשות כולם ליישומי MUMPS סטנדרטיים.

בניגוד לשפות ב- C או וירט מסורות, כמה תווי רווח בין הצהרות MUMPS הם משמעותיים. רווח יחיד מפריד פקודה מהארגומנט שלה, וריווח, או קו חדש, מפריד בין כל ארגומנט לאסימון MUMPS הבא. פקודות שאינן מצריכות ויכוחים (למשל, אַחֵר) דורשים שני רווחים הבאים. הרעיון הוא שמרחב אחד מפריד בין הפקודה לטיעון (לא קיים), הבא מפריד בין ה"ארגומנט "לפקודה הבאה. קווי חדש הם גם משמעותיים; an אם, אַחֵר אוֹ ל מעבד פקודות (או מדלג) על כל השאר עד סוף השורה. כדי להפוך הצהרות אלה לשלוט במספר שורות, עליך להשתמש ב- לַעֲשׂוֹת פקודה ליצור חסימת קוד.

"שלום עולם!" דוגמא

פשוט שלום עולם התוכנית ב- MUMPS עשוי להיות:

שלום () כתוב "שלום, עולם!" ,! לְהַפְסִיק

ויופעל משורת הפקודה MUMPS עם הפקודה תעשה ^ שלום. מכיוון ש- MUMPS מאפשר למתוח פקודות באותו קו, ומכיוון שניתן לקצר פקודות באות אחת, ניתן להפוך את השגרה לקומפקטית יותר:

שלום () w "שלום, עולם!" ,! ש

ה ',!אחרי שהטקסט יוצר שורה חדשה.

הִיסטוֹרִיָה

בראשית

MUMPS פותחה על ידי ניל פפלארדו, רוברט גרינס, וקורט מרבל במעבדתו של ד"ר אוקטו ברנט בבית הספר בית החולים הכללי של מסצ'וסטס (MGH) ב בוסטון במהלך 1966 ו -1967. מאוחר יותר הוא שוחזר על ידי מנהיגים טכניים דניס "דן" ברוויק ופול סטילוס[5] שֶׁל DEC בשנים 1970 ו -1971.

מערכת ה- MUMPS המקורית הייתה כמו יוניקס כעבור כמה שנים, בנוי על DEC PDP-7. אוקטו ברנט ו ניל פפלארדו היו מעורבים גם עם MGH התכנון של מערכת מידע על בתי חולים, הושג א תואם לאחור PDP-9 והחל להשתמש ב- MUMPS במחזור הקבלה ובדיווח על בדיקות מעבדה. MUMPS היה אז פירש שפה, ובכל זאת גם אז, שילב א מסד נתונים היררכי מערכת קבצים כדי לתקנן את האינטראקציה עם הנתונים ופעולות הדיסק המופשט כך שהם נעשו רק על ידי שפת MUMPS עצמה.

ניתן לאתר כמה היבטים של MUMPS תאגיד ראנד של ג'וס דרך BBN של TELCOMP ו STRINGCOMP. צוות MUMPS בחר בכוונה לכלול ניידות בין מכונות כמטרה עיצובית.

תכונה מתקדמת של שפת MUMPS שאינה נתמכת בהרחבה מערכות הפעלה או ב חומרת מחשב של העידן היה ריבוי משימות. למרות ששיתוף הזמן נמשך מחשבי Mainframe היה נפוץ יותר ויותר במערכות כגון מולטיקס, מרבית מחשבי המיני לא הפעילו תוכניות מקבילות והשחלות כלל לא היו זמינות. אפילו ב- Mainframes, הגרסה של עיבוד אצווה שבו תוכנית הושלמה להשלמה הייתה היישום הנפוץ ביותר עבור מערכת הפעלה של תכנות רב.

עברו כמה שנים עד שפיתחה יוניקס. המחסור בחומרה לניהול זיכרון הביא לכך שכל עיבוד מרובה היה כרוך באפשרות שמצביע זיכרון יכול לשנות תהליך אחר. לתוכניות MUMPS אין דרך סטנדרטית להתייחס ישירות לזיכרון, בניגוד ל שפת ג לכן, מכיוון שהריבוי משימות אוכף על ידי השפה, ולא על ידי שום תוכנית שנכתבה בשפה, אי אפשר היה להסתכן במערכות אחרות.

דן ברביק של[6] מערכת DUM MUMPS-15 הותאמה ל- DEC PDP-15, שם הוא גר זמן מה. זה הותקן לראשונה במערכות ניהול נתוני בריאות בדנבר במאי 1971.[7] הניידות הוכיחה את עצמה כשימושית ו- MUMPS הוענק מענק מחקר ממשלתי, ולכן MUMPS שוחררה לרשות הציבור שהייתה דרישה למענקים. MUMPS הועברה במהרה למספר מערכות אחרות, כולל DEC הפופולרית PDP-8, ה נתונים כללי נובה וב- DEC PDP-11 וה ארטרוניקס מחשב מיני PC12. השמועה על MUMPS התפשטה בעיקר בקהילה הרפואית והייתה בשימוש נרחב, ולעתים קרובות שונתה באופן מקומי לצרכים שלהם.

בתחילת שנות השבעים היו יישומים רבים ומגוונים של MUMPS במגוון פלטפורמות חומרה. פלטפורמה ראויה לציון נוספת הייתה פול סטילוס[8] DUM MUMPS-11 ב- PDP-11, ו- MEDITECH של MIIS. בסתיו 1972 השתתפו משתמשי MUMPS רבים בכנס בבוסטון שהתקן את השפה השבורה באותה עת ויצר את קבוצת משתמשים של MUMPS ו ועדת פיתוח MUMPS (MDC) לעשות זאת. מאמצים אלה הוכיחו הצלחה. תקן הושלם עד 1974 ואושר, ב- 15 בספטמבר 1977, כ- ANSI סטנדרטי, X11.1-1977. בערך באותו זמן DEC השיקה את DSM-11 (Digital Standard MUMPS) עבור ה- PDP-11. זה שלט במהירות בשוק והפך ליישום הייחוס של אותה תקופה. גַם, אינטר סיסטמס מכר את ISM-11 עבור ה- PDP-11 (שהיה זהה ל- DSM-11).

שנות השמונים

בתחילת שנות השמונים כמה ספקים הביאו לשוק פלטפורמות מבוססות MUMPS העומדות בתקן ANSI. המשמעותיים ביותר היו:

  • תאגיד ציוד דיגיטלי עם DSM (MUMPS תקני דיגיטלי). DSM-11 הוחלף על ידי VAX-11 DSM[9] עבור מערכת ההפעלה VAX / VMS, והיא הועברה אל אלפא בשתי גרסאות: DSM עבור OpenVMS, וכמו DSM לאולטריקס.
  • אינטר סיסטמס עם ISM (InterSystems M) ב- VMS (M / VX), M / 11 + בפלטפורמת PDP-11, M / PC ב- MS-DOS, M / DG ב- נתונים כללי, M / VM ב- IBM VM / CMS ו- M / UX ב- Unix שונים.

חברות אחרות פיתחו יישומי MUMPS חשובים:

  • תאגיד טכנולוגיה גרייסטון עם גרסה מקובצת בשם GT.M.
  • DataTree Inc. עם מוצר מבוסס מחשב אינטל בשם DTM.
  • חברת Micronetics Design Corporation עם קו מוצרים בשם MSM לפלטפורמות UNIX ו- Intel PC (לאחר מכן הועבר ל- VM של יבמ מערכת הפעלה, פלטפורמות VAX-VMS ופלטפורמות Alpha-VMS).
  • יועצי מחשבים (שלימים קיבלו את השם MGlobal), א יוסטון החברה שנוסדה במקור CCSM ב- 6800, אז ב- 6809, ובסופו של דבר נמל ל- 68000, שהפך מאוחר יותר MacMUMPS, א Mac OS מוצר מבוסס. הם עבדו גם על MGM יישום MUMPS. MGlobal גם העבירה את יישומם לפלטפורמת DOS. MGlobal MUMPS הייתה ה- MUMPS המסחרית הראשונה עבור מחשב IBM והיישום היחיד עבור מערכת ההפעלה הקלאסית.
  • מחשבי טנדם פיתחו יישום למחשבים הסובלניים שלהם.[10]

בתקופה זו נרשמה גם פעילות 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, שהיה גם כן פורסם על ידי ANSI. ה- MDC סיים תיקון נוסף לתקן בשנת 1998, אך הדבר לא הוצג לאישור ANSI.
  • שוחרר ה- Open M עבור Windows / NT של InterSystems, כמו גם Open M עבור Alpha / OSF ו- Alpha / VMS (המימושים הראשונים של 64 סיביות, עבור מעבד ה- Alpha-64).
  • בשנת 1997 נוספה תמיכת Unicode ב- Caché 3.0 של InterSystems

שנות האלפיים

  • עד שנת 2000, תוכנת ביניים הספקית InterSystems הפכה לשחקן הדומיננטי בשוק MUMPS ברכישת מספר ספקים אחרים. בתחילה הם רכשו את DataTree Inc. בתחילת שנות ה -90. וב- 30 בדצמבר 1995 רכשה אינטר סיסטמס את קו מוצרי ה- DSM מ- DEC.[11] InterSystems איחדה מוצרים אלה לקו מוצרים יחיד, ומיתגה אותם בכמה פלטפורמות חומרה, כמו OpenM. בשנת 1997 השיקה אינטר סיסטמס מוצר חדש בשם קאצ'ה. זה התבסס על מוצר ה- ISM שלהם, אך עם השפעות מהיישומים האחרים. נכסי חברת Micronetics Design Corporation נרכשו גם על ידי InterSystems ב- 21 ביוני 1998. InterSystems נותרה ספקית ה- MUMPS הדומיננטית, ומכרה את Caché למפתחי MUMPS שכותבים יישומים למגוון מערכות הפעלה.
  • יישום ה- GT.M של תאגיד הטכנולוגיה של גרייסטון נמכר לחברת Sanchez Associates (כיום חלק מ- FIS ) באמצע שנות התשעים. ב- 7 בנובמבר 2000 סנצ'ז הפך את GT.M עבור Linux לזמין תחת GPL רישיון[12] וב- 28 באוקטובר 2005 GT.M עבור OpenVMS ו Tru64 יוניקס הועמדו לרשותו גם ברישיון AGPL.[13] GT.M ממשיכה להיות זמינה באחרים יוניקס פלטפורמות ברישיון מסורתי.
  • במהלך שנת 2000 שחררו ריי ניומן ואחרים את MUMPS V1, יישום של MUMPS (בתחילה ב- FreeBSD) בדומה ל- DSM-11. מאז הועברה ל- MUMPS V1 לינוקס, Mac OS X ו חלונות (באמצעות cygwin).[14] בתחילה רק עבור מעבד x86, MUMPS V1 הועבר כעת ל- Raspberry Pi.
  • היישום החדש ביותר של MUMPS, שפורסם באפריל 2002, הוא MSM נגזרת הנקראת M21 מחברת התוכנה האמיתית של רוגבי, בְּרִיטַנִיָה.
  • ישנן גם מספר יישומי קוד פתוח של MUMPS, כולל כמה פרויקטים מחקריים. הבולט שבהם הוא חזרת / II מאת ד"ר קווין אוקיין (פרופסור אמריטוס, אוניברסיטת צפון איווה ) ופרויקט הסטודנטים. ד"ר אוקיין גם העביר את המתורגמן ל- Mac OS X.[15]
  • אחד היוצרים המקוריים של שפת MUMPS, ניל פפלארדו, הקים מוקדם חברה בשם MEDITECH. הם הרחיבו ובנו על שפת MUMPS, וקראו לשפה החדשה MIIS (ובהמשך, שפה אחרת בשם MAGIC). בניגוד ל- InterSystems, MEDITECH כבר לא מוכרת תוכנת ביניים, כך ש- MIIS ו- MAGIC משמשים כעת רק באופן פנימי ב- MEDITECH.
  • ב- 6 בינואר 2005, ואחר כך שוב ב- 25 ביוני 2010, אישרה ISO מחדש את התקנים הקשורים ל- MUMPS: ISO / IEC 11756: 1999, תקן שפה, ISO / IEC 15851: 1999, חיבור MUMPS פתוח ו ISO / IEC 15852: 1999, ממשק מתכנתים ליישומי MUMPS Windowing.

משתמשים נוכחיים ביישומי MUMPS

מערכות מידע פדרליות לבריאות

משרד העניינים הוותיקים בארה"ב (לשעבר מינהל הוותיקים) היה אחד המאמצים הראשונים של שפת ה- MUMPS. עבודת הפיתוח שלהם (ותרומתם לאחר מכן לבסיס הקוד החינמי של יישומי MUMPS) השפיעו על משתמשים רפואיים רבים ברחבי העולם. בשנת 1995, מערכת הקבלה / המעקב / השחרור של המטופלים בענייני הוותיקים, תוכנית מחשב מבוזרת של בתי חולים (DHCP) היה מקבל עולם המחשבים פרס סמיתסוניאן לשימוש מיטבי בטכנולוגיית המידע ברפואה. ביולי 2006, המחלקה לענייני ותיקים (VA) / מינהל הבריאות הוותיקים (VHA) היה חתן פרס הממשלה לחידושים באמריקה שהוענק על ידי מכון האש של בית הספר לממשל של ג'ון פ. קנדי בְּ- אוניברסיטת הרוורד על הרחבתה של DHCP לאדריכלות מערכות מידע וטכנולוגיה לבריאות ותיקים (נוֹף ). כמעט כל מערכת בתי החולים של VA בארצות הברית שירות הבריאות ההודי, וחלקים עיקריים של משרד ההגנה CHCS מערכת בתי חולים משתמשת במאגרי MUMPS לצורך מעקב אחר נתונים קליניים.

מערכות מידע בריאותיות מסחריות

חברות IT אחרות בתחום הבריאות המשתמשות ב- MUMPS כוללות

מעבדות עזר

מעבדות ייחוס רבות, כגון DASA, אבחון Quest,[17] ו- Dynacare, השתמש בתוכנת MUMPS שנכתבה על ידי קוד התאגיד של Antrim או על בסיסו. אנטרים נרכשה על ידי Misys Healthcare (כיום מערכות מידע Sunquest ) ב -2001.[18]

בנקאות וסחר מקוון במערכות

MUMPS נמצא בשימוש נרחב גם ביישומים פיננסיים. MUMPS צברה מעקב מוקדם במגזר הפיננסי ונמצאת בשימוש בבנקים ובאיגודי אשראי רבים. הוא משמש את TD Ameritrade כמו גם על ידי בנק אנגליה ו בנק ברקליס.[19][20][21]

יישומים שוטפים

מאז 2005, היישומים העיקריים של MUMPS היו Greystone Technology MUMPS (GT.M) או InterSystems (Caché). סוכנות החלל האירופית הודיעה ב- 13 במאי 2010 כי תשתמש ב- InterSystems Caché מסד נתונים לתמיכה ב- משימת גאיה. מטרה זו מטרתה למפות את שביל החלב בדיוק חסר תקדים.[22]

סיכום מאפייני השפה העיקריים

ANSI X11.1-1995 נותן תיאור מלא ורשמי של השפה; גרסה מוסברת של תקן זה זמינה באופן מקוון.[23]

סוגי מידע: יש אחד אוניברסלי סוג מידע, שזה מרומז מוּכְרָח לסוגי נתונים של מחרוזת, מספר שלם או נקודה צפה לפי ההקשר.

בוליאנים (שקוראים לו ערכי אמת ב- MUMPS): בפקודות IF ובתחביר אחר שהביטויים שלו מוערכים כתנאים, כל ערך מחרוזת מוערך כערך מספרי, ואם זה ערך שאינו אפס, הוא מתפרש כ- True. א <ב מניב 1 אם a קטן מ- b, 0 אחרת.

הצהרות: אף אחד. כל המשתנים נוצרים באופן דינמי בפעם הראשונה שהוקצה ערך.

שורות: ישויות תחביריות חשובות, בניגוד למעמדן בשפות המעוצבות בסגנון C או פסקל. הצהרות מרובות בכל שורה מותרות ונפוצות. היקף כל פקודת IF, ELSE ו- FOR הוא "שארית הקו הנוכחי."

רגישות למקרה: פקודות ופונקציות מהותיות אינן רגישות לאותיות רישיות. לעומת זאת, שמות ותוויות משתנים הם תלויי רישיות. אין שום משמעות מיוחדת למקבלי אותות גדולים לעומת קטן ואילך. סימן האחוזים (%) חוקי כתו הראשון של משתנים ותוויות.

תנאי פוסט: ניתן לשלוט על ביצוע כמעט כל פקודה באמצעות מעקב אחר נקודתיים וביטוי אמת. סט: N <10 A = "FOO" קובע A ל- "FOO" אם N קטן מ -10; DO: N> 100 PRINTERR, מבצע PRINTERR אם N גדול מ- 100. מבנה זה מספק תנאי שהיקפו קטן מקו מלא.

נוֹטָרִיקוֹן: ניתן לקצר כמעט את כל הפקודות והפונקציות המקוריות לתו אחד, שניים או שלושה.

מילים שמורות: אף אחד. מכיוון ש- MUMPS מפרש את קוד המקור לפי הקשר, אין צורך במילים שמורות. אתה יכול להשתמש בשמות פקודות השפה כמשתנים, כך שהדבר הבא הוא קוד MUMPS חוקי לחלוטין:

GREPTHIS () סט חדש, חדש, אז, אם, KILL, QUIT SET IF = "KILL", SET = "11", KILL = "l1", QUIT = "RETURN", THEN = "KILL" IF IF = אז עשה ואז הפסק: $ QUIT QUIT QUIT; (צא) ואז אם IF, SET & KILL SET SET = SET + KILL QUIT

ניתן להפוך את MUMPS למצב מעורפל יותר באמצעות תחביר המפעיל המכווץ, כפי שמוצג בדוגמה קצרה זו הנגזרת מהדוגמה לעיל:

GREPTHIS () NS, N, T, I, K, QSI = "K", S = "11", K = "l1", Q = "R", T = "K" II = TDTQ: $ QQ QT II , S & K SS = S + KQ

מערכים: נוצרים באופן דינמי, מאוחסנים כ- עצים B, הם דלילים (כלומר כמעט ואינם משתמשים במרחב לצמתים חסרים), יכולים להשתמש בכל מספר מנויים, והמנויים יכולים להיות מחרוזות או מספריות (כולל נקודה צפה). מערכים מאוחסנים תמיד באופן מסודר, כך שלעולם אין שום הזדמנות למיין, לארוז, לסדר מחדש או לארגן מחדש את מסד הנתונים. פונקציות מובנות כגון $ DATA, $ ORDER, $ NEXT (הוצא משימוש) ו- $ QUERY מספקות בדיקה יעילה וחציית מבנה המערך הבסיסי, בדיסק או בזיכרון.

עבור i = 10000: 1: 12345 הגדר טבלה מרובעת (i) = i * כתובת איסט ("סמית", "דניאל") = "[email protected]"

מערכים מקומיים: שמות משתנים שאינם מתחילים בקריאה (כלומר "^") נשמרים בזיכרון לפי תהליך, הם פרטיים לתהליך היצירה ותוקפם מסתיים בתהליך היצירה. האחסון הזמין תלוי ביישום. עבור יישומים אלה המשתמשים במחיצות, זה מוגבל לגודל המחיצה (מחיצה קטנה עשויה להיות 32K). ליישומים אחרים, ייתכן שמדובר בכמה מגה.

מערכים גלובליים: ^ abc, ^ def. אלה מאוחסנים בדיסק, זמינים לכל התהליכים ונמשכים עם סיום תהליך היצירה. גלובלים גדולים מאוד (למשל, מאות ג'יגה) הם פרקטיים ויעילים ברוב היישומים. זהו מנגנון "מסד הנתונים" הראשי של MUMPS. הוא משמש במקום לקרוא למערכת ההפעלה ליצור, לכתוב ולקרוא קבצים.

עקיפה: בהקשרים רבים, @VBL ניתן להשתמש בו, ומחליף למעשה את תוכן ה- VBL בהצהרת MUMPS אחרת. SET XYZ = "ABC" SET @ XYZ = 123 מגדיר את המשתנה ABC ל- 123. SET SUBROU = "דווח" DO @ SUBROU מבצע את תת-הפעולה בשם REPORT. החלפה זו מאפשרת הערכה עצלה וכריכה מאוחרת כמו גם ביעילות המקבילה המבצעית של "מצביעים" בשפות אחרות.

פונקציית חתיכה: זה מפרק משתנים לחלקים מפולחים בהנחיית מחרוזת הפרדה שצוינה על ידי המשתמש (המכונה לפעמים "מפריד"). אלו שיודעים מביך ימצא את זה מוכר. $ PIECE (STRINGVAR, "^", 3) פירושו "החלק השלישי של STRINGVAR המופרד מהקארט." פונקציית היצירה יכולה להופיע גם כיעד מטלה (פקודה SET).

$ PIECE ("world.std.com", ".", 2) מניב "std".

לאחר

SET $ P (X, "@", 1) = "משרד" גורם ל- X להיות "[email protected]" (שימו לב ש- $ P שווה ערך ל- $ PIECE וניתן היה לכתוב אותו ככזה).

פונקציית הזמנה: פונקציה זו מתייחסת לקלט שלה כאל מבנה, ומוצאת את האינדקס הבא שקיים שיש לו מבנה זהה למעט המשנה האחרונה. הוא מחזיר את הערך הממוין שמוזמן לאחר הערך שניתן כקלט. (זה מתייחס להתייחסות למערך כאל נתונים שניתן להתייחס אליהם לתוכן ולא ככתובת של ערך.)

הגדר דברים (6) = "xyz", דברים (10) = 26, דברים (15) = ""

$ הזמנה (דברים ("")) מניב 6, $ הזמנה (דברים (6)) מניב 10, $ הזמנה (דברים (8)) מניב 10, $ הזמנה (דברים (10)) מניב 15, הזמנה $ (דברים (15)) תשואות "".

Set i = "" For Set i = $ O (stuff (i)) Quit: i = "" כתוב!, I, 10, stuff (i)

כאן, נטול הטיעון ל חוזר עד שנעצר על ידי סיום לְהַפְסִיק. שורה זו מדפיסה טבלה של i ודברים (i) שבהם אני ברצף 6, 10 ו- 15.

לצורך איטרציה של מסד הנתונים, פונקציית ההזמנה מחזירה את המפתח הבא לשימוש.

GTM> S n = "" GTM> S n = $ order (^ nodex (n)) GTM> zwr nn = "building" GTM> S n = $ order (^ nodex (n)) GTM> zwr nn = "name : gd "GTM> S n = $ order (^ nodex (n)) GTM> zwr nn ="% kml: guid "

רב משתמשים / רב משימות / מעבד רב: MUMPS תומך במספר משתמשים ותהליכים בו זמנית גם כאשר מערכת ההפעלה הבסיסית אינה (למשל, MS-DOS). בנוסף, ישנה אפשרות לציין סביבה עבור משתנה, כגון על ידי ציון שם מכונה במשתנה (כמו ב- SET ^ | "DENVER" | A (1000) = "Foo"), אשר יכול לאפשר לך גישה לנתונים במכונות מרוחקות.

ביקורת

היבטים מסוימים בתחביר MUMPS שונים מאוד מזו של שפות מודרניות יותר, מה שעלול לגרום לבלבול. מרחב לבן אינו מורשה בביטויים, מכיוון שהוא מסיים הצהרה: 2 + 3 זו שגיאה, ויש לכתוב אותה 2+3. לכל המפעילים אותה עדיפות והם שמאל-אסוציאטיבי (2+3*10 מעריך עד 50). המפעילים של "פחות או שווה ל" ו"גדול או שווה ל "הם '> ו '< (כלומר, מפעיל השלילה הבוליאני ' בתוספת מפעיל השוואה קפדני). תקופות (.) משמשים להכנסת השורות בבלוק DO, ולא לרווחים. פקודת ELSE אינה זקוקה ל- IF מקביל, מכיוון שהיא פועלת על ידי בדיקת הערך במשתנה המערכת המובנה מבחן $.

חַזֶרֶת סקופינג הכללים מותרים יותר משפות מודרניות אחרות. משתנים מקומיים מוצהרים מוגדרים באמצעות הערימה. שגרה יכולה לראות בדרך כלל את כל המקומיים המוצהרים של השגרה שמתחתיה על ערימת השיחות, ושגרה אינה יכולה למנוע מהשגרה שהם קוראים לשנות את המקומיים המוצהרים שלהם, אלא אם כן המתקשר יוצר באופן ידני רמת מחסנית חדשה (לַעֲשׂוֹת) ומשתנה כל אחד מהמשתנים עליהם הם רוצים להגן (. x חדש, y) לפני שמתקשרים לשגרות של ילדים כלשהם. לעומת זאת, משתנים לא מוצהרים (משתנים שנוצרו באמצעותם, ולא הצהרה) נמצאים בהיקף לכל השגרות הפועלות באותו התהליך, ונשארים בתחום עד יציאת התוכנית.

מכיוון שהפניות למסד הנתונים של MUMPS נבדלות מהפניות משתנות פנימיות רק בקידומת caret, קל באופן מסוכן לערוך את מסד הנתונים בלי כוונה, או אפילו למחוק "טבלה" של מסד נתונים.[24]

ויכוח "MUMPS" לעומת "M"

כל העמדות הבאות יכולות להיות ותומכות על ידי אנשים בעלי ידע בזמנים שונים:

  • שם השפה הפך ל- M בשנת 1993 כאשר האיגוד הטכנולוגי M אימץ אותו.
  • השם הפך ל- M ב- 8 בדצמבר 1995, באישור ANSI X11.1-1995
  • שניהם מ ו MUMPS הם שמות מקובלים רשמית.
  • M הוא רק "שם חלופי" או "כינוי" לשפה, ו- MUMPS הוא עדיין השם הרשמי.

חלק מהטענות התעוררו בתגובה לסנגוריה חזקה של M מצד אינטרס מסחרי אחד, אינטר סיסטמס, שמנכ"ל שלה לא אהב את השם MUMPS והרגיש שהוא מהווה מכשול שיווקי רציני. לפיכך, העדפת M במידה מסוימת הפכה לזיהוי כיישור עם InterSystems. המחלוקת שיקפה גם יריבות בין ארגונים (האגודה הטכנולוגית M, ועדת הפיתוח של MUMPS, ועדות התקנים ANSI ו- ISO) בשאלה מי קובע את השם "הרשמי" של השפה. יש כותבים שניסו לנטרל את הנושא על ידי התייחסות לשפה כאל חַזֶרֶת], סוגריים מרובעים הם הסימון המקובל לרכיבי תחביר אופציונליים. רשות מובילה, והמחבר של יישום קוד פתוח של MUMPS, פרופסור קווין אוקיין, משתמש רק ב- MUMPS.

התקן האחרון (ISO / IEC 11756: 1999, שאושר מחדש ב- 25 ביוני 2010), עדיין מציין את M ו- MUMPS כשמות מקובלים רשמית.

מעמד של סימן מסחרי

בית החולים הכללי של מסצ'וסטס רשמה את "MUMPS" כסימן מסחרי ב- USPTO ב- 28 בנובמבר 1971 וחידשה אותה ב- 16 בנובמבר 1992 - אך תינתה לפוג ב- 30 באוגוסט 2003.[25]

השוואה לפיק

MUMPS מזמינה השוואה עם בחר מערכת הפעלה.[26] קווי הדמיון כוללים:

  • שתי המערכות בנויות על יישום יעיל של מערכים גדולים, דלילים, חסרי טיפוס, עם אינדקס מחרוזות;
  • שניהם התערבבו היסטורית בשפה ובמערכת ההפעלה;
  • לשניהם תחום דומה של תחולה.
  • בשפות התכנות בשתי הסביבות, פעולות לקריאה, כתיבה, יצירה ומחיקה של רשומות מסדי נתונים משתמשות בתחביר זהה להפניות משתנות.

ראה גם

הפניות

  1. ^ "מערכות MUMPS מספקות שירות ל -54% מהחולים בארה"ב".
  2. ^ george.james (22 באוגוסט 2008). "ממפה את בסיס הנתונים בקנה מידה אינטרנטי". הוחזר 26 בפברואר 2018.
  3. ^ "תכנות מסדי נתונים קיצוניים עם MUMPS Globals" (PDF). Gradvs1.mjgateway.com. הוחזר 2013-08-13.
  4. ^ "תקני M [UMPS] המאושרים". 71.174.62.16. 2011-11-29. הוחזר 2013-08-12.
  5. ^ "שאלות נפוצות בנושא טכנולוגיה ו- MUMPS בשפה, חלק 1/2". www.faqs.org. הוחזר 2019-12-06.
  6. ^ "שאלות נפוצות בנושא טכנולוגיה ו- MUMPS בשפה, חלק 1/2". www.faqs.org. הוחזר 2019-12-06.
  7. ^ "שאלות נפוצות בנושא טכנולוגיה ו- MUMPS בשפה, חלק 1/2". www.faqs.org. הוחזר 2019-12-06.
  8. ^ "שאלות נפוצות בנושא טכנולוגיה ו- MUMPS בשפה, חלק 1/2". www.faqs.org. הוחזר 2019-12-06.
  9. ^ מדריך לעיון בשפה VAX-11. תאגיד ציוד דיגיטלי. 1982. OCLC  29217964.
  10. ^ "שרתי NonStop של HP, רשימת תחזוקת מוצרי תוכנה, תאריך כניסה: ינואר 2012" (PDF). חברת הפיתוח היולט-פקרד, L.P 2012-01-20. עמ ' 32. הוחזר 2014-05-17. תיאור ... התאריך שבו מוצר סווג כ- ACTIVE MATURE LIMITED ... MUMPS אוקטובר -80 דצמבר -94 דצמבר -94
  11. ^ "Google Discussiegroepen". הוחזר 2013-08-12.
  12. ^ "סאנצ'ז יבדוק הזדמנויות עסקיות חדשות לטכנולוגיית מסדי הנתונים שלה". Sanchez Associates Computer, Inc. 7 בנובמבר 2000. הועבר לארכיון המקורי ב- 28 באפריל 2004. הוחזר 2013-08-12.
  13. ^ "מנוע מסד נתונים TP מתקדם של GT.M - עיין בקבצים ב-. Sourceforge.net. הוחזר 2013-08-12.
  14. ^ "מאגר ושפות MUMPS - עיין בקבצים בכתובת". Sourceforge.net. הוחזר 2013-08-12.
  15. ^ "חזרת / מיי". Rychannel.com. 2012-11-08. הוחזר 2013-08-12.
  16. ^ "SunQuest מגיח מהצל של מיסיס". חדשות IT בתחום הבריאות. הוחזר 2013-08-12.
  17. ^ "אייאקס קריטית למשימה: ביצוע הזמנת בדיקות קל ומהיר יותר ב- Qu". Slideshare.net. הוחזר 2013-08-12.
  18. ^ "Sunquest רוכשת את אנטרים קורפ - ספריה מקוונת בחינם". Thefreelibrary.com. 1996-11-26. הוחזר 2013-08-12.
  19. ^ "ברוך הבא ל- M21 - מאגר המאה ה -21". M21.uk.com. הוחזר 2013-08-13.
  20. ^ "מערכות פיננסיות מבוססות Caché". Intersystems.com. הוחזר 2013-08-13.
  21. ^ "IDEA יישומי בנקאות ו- ERP Turn-Key". Idea.cz. הוחזר 2013-08-13.
  22. ^ "סוכנות החלל האירופית בוחרת מסד נתונים של מטמון אינטר סיסטמס למשימת גאיה למפות שביל חלב". Realwire.com. הוחזר 2013-08-13.
  23. ^ "תקני M [UMPS] המאושרים". 71.174.62.16. הוחזר 26 בפברואר 2018.
  24. ^ ריצ'מונד, רובין (1984). מדדי תחזוקה לתוכניות MUMPS (דוקטורט). מרכז מדע הבריאות של אוניברסיטת טקסס בדאלאס.
  25. ^ "סטטוס סימן מסחרי ואחזור מסמכים". tsdr.uspto.gov. הוחזר 26 בפברואר 2018.
  26. ^ ב"קרב יריות "של 1980 היה פיק" עדיין ממשיך לאחר 30 דקות "ואילו MUMPS סיימו למיין 100,000" בפחות מדקה. ""חדשות גדולות".

לקריאה נוספת

  • וולטרס, ריצ'רד (1989). "ABCs של MUMPS. 1989: Butterworth-Heinemann, ISBN  1-55558-017-3.
  • וולטרס, ריצ'רד (1997). תכנות M: מדריך מקיף. עיתונות דיגיטלית. ISBN  1-55558-167-6.
  • לבקוביץ ', ג'ון. MUMPS השלם: מדריך מבוא והפניה לשפת התכנות MUMPS. ISBN  0-13-162125-4
  • קירסטן, וולפגנג ואח '. (2003) פיתוח יישומים מונחה עצמים באמצעות מאגר Caché Postrelational ISBN  3-540-00960-4
  • מרטינס דה קרבחאל הדריך, ארנסטו (1993). "MUMPS El Lenguaje". Completa obra en castellano sobre el lenguaje חזרת. ISBN  84-477-0125-5. Distribuido exclusivamente por su author ([email protected])
  • אוקיין, ק. ק .; שפה ליישום תוכנת אחזור מידע, סקירה מקוונת, כרך 16, מספר 3, עמ '127–137 (1992).
  • אוקיין, ק. ק .; ומקוליגן, א ', מחקרי מקרה של רישום חולה באינטרא-נט, Journal of the Healthcare Information and Management Systems Society, כרך 11, מספר 3, עמ '81–95 (1997).
  • אוקיין, ק. ק .; ומקוליגן, E.E., מכונה וירטואלית של חזרת מבוססת אינטרנט, הליכי איגוד המידע הרפואי האמריקאי 1997
  • O'Kane, K.C., שפת התכנות Mumps, Createspace, ISBN  1-4382-4338-3, 120 עמודים (2010).

קישורים חיצוניים