אני עובד היום בשפה זו,
ו...קצת מכיר אותה
מה בדיוק מעניין את הקהל? אני יכול לספר עליה הרבה מאוד, כולל רשימת הפקודות, הפונקציות וכד'. בגדול, זו שפה מאוד ידידותית לכותב, אבל אם רוצה שהיא תהיה מספיק ידידותית גם לקורא, עליו להשקיע מאמץ מסוים. השפה נולדה אם אינני טועה בתחילת שנות ה-80 ע"י קבוצת מתכנתים בבית חולים צבאי במסצ'וסטס, עבור מחשבים מסוג PDP-11, והיא עבדה במסגרת
מערכת הפעלה MUMPS. כלומר, היינו מעלים את המחשב עם דיסק עם מערכת ההפעלה MUMS. היתה כמעט חפיפה מלאה בין שתי צורות של כתיבת
שורת פקודה: כשורה בתכנית, הנקראת ומופעלת מן הדיסק, או כשורה שאפשר להקליד ישירות בקונסול - פקודה למערכת ההפעלה. ל-MUMPS יש צורה גאונית של פנייה לנתונים (משתנים). יש להם מבנה של
עץ חופשי, שכל צומת שלו יכולה להיות עם או בלי ערך מוגדר - למשל אם יש לו צאצאים. למשל:
set A=5 ;את הערך 5 A הענק למשתנה set A(5)=11 ;את הערך 11 A(5) הענק למשתנה set A(5,"ABC",7)="Ahalan" ;"Ahalan" את הערך A(5,"ABC",7) הענק למשתנה set ^A=5 ;את הערך 5 ^A הענק למשתנה set ^A(5)=11 ;את הערך 11 ^A(5) הענק למשתנה set ^A(5,"ABC",7)="Ahalan" ;"Ahalan" את הערך ^A(5,"ABC",7) הענק למשתנה
במקרה השני, העץ A^, נרשם ישירות בדיסק! אם נכבה את המחשב וניכנס למערכת מחדש, המשתנה הלוקלי A וכל ענפיו ייעלמו כמובן, אך העץ A^ נשאר רשום הדיסק ואפשר בהחלט להשתמש בו! בעצם, בדיוק כך נשמרים הנתונים בדיסק. זהו למעשה בסיס נתונים עם כזאת גישה פשוטה. ב-MUMPS יש רשימה די קטנה של פקודות שימושיות, כגון:
set - הענק ערך למשתנה kill - הרוֹג משתנה for - בצע שורה עבור רשימת ערכים של משתנה, או... עד אינסוף quit - יציאה מתכנית או מלולאה if else do goto השנואה על המתכנתים הנכונים open - פתח מתקן קלט-פלט close use - עבור להשתמש במתקן קלט-פלט read, write - פעולות קלט-פלט
ועוד כמה נחמדות. מילה אחת על הקלט-פלט. אם מתקן כלשהו מוגדר במערכת, אזי הקלט-פלט ב-MUMPS פשוט להפליא! כיום בביה"ח שיבא בתל השומר עדין משתמשים במערכת MUMPS לקריאת נתוני מכשירים רפואיים שונים. מערכת ההצבעה האלקטרונית הראשונה של גורבצ'וב בסובייט העליון נבנתה ב-MUMPS, כאשר במערכת מוגדרים כ-500 מתקני קלט, כמספר כפתורי ההצבעה, וה-MUMPS פשוט קורא את נתוניהם באמצעות פקודה פרימיטיבית read (שכמובן מתבצעת בו זמנית על כל הכפתורים). שכחתי לומר, שבמחשבי ה-PC הותקנו בתחילה MUMPS-ים שונים של חברות שונות (כנ"ל גם במחשבי VAX ו-RISC וכדומה). השיטה הפשוטה של תכנוּת הקלט-פלט אפשרה כבר ל-PC העתיקים ביותר לחבר למחשב מספר מסופים ולעבוד עליהם במקביל, וגם במחשבי פנטיום לעבוד בו זמנית עם כמות אדירה של משתמשים על אותו DB על אותו מחשב. היינו מטפלים במערכת של לקוח ממרחק: מתקשרים אליו במודם (היום - בקו ישיר), ופשוט נכנסים ל-MUMPS במחשב שלו כאילו היינו מסוף. ה-MUMPS הסטנדרטי ביותר לדעתי היה זה של חברת Micronetics, הדומה ביותר לזה שהיה במחשבי PDP של חברת Digital. כן, שכחתי לומר, שה-MUMPS כבר לא עלה כמערכת הפעלה, אלא כישום רגיל מתחת למערכת ההפעלה: יוניקס, חלונות, VAX וכדומה. בסופו של דבר, חברת InterSystems ניצחה בתחרות את שאר יצרניות ה-MUMPS והיא רכשה אותן, כאילו קצת המשיכה לתמוך בהן, אבל כמובן דחפה רק את הגרסה של עצמה. בשלב ראשון, הם התביישו לקרוא ל-MUMPS בשם זה, והם מסתירים את השפה תחת שמות יותר יבשים כגון "סקריפט", "M" וכדומה. הם גם בחרו דרך מיוחדת משלהם להתחברות לחלונות: פיתוח התחברויות וממשקים עם כל מה שאפשר ועם כל מה שזז, הענקת צורות שונות ומשונות לכתיבה, השאולים משפות אחרות: קלאסים, אובייקטים ושאר צרות. המערכת בכלל נקראת
Caché (מבטאים: קָשֶה במלרע, ועוד לא היה ישראלי שלא אמר להם מה זה בעברית). בעת האחרונה הם המציאו דברים עוד יותר כלליים עם שמות בומסבטיים. הם טוענים שיש להם מחזור מכירות ענק, הגדל משנה לשנה. במקומות רבים בעולם (ונדמה לי שגם בארץ) יש באוניברסיטאות קורסים ללימוד המערכת שלהם. האמת, אני עדין עובד ב-MUMPS הישן והטוב, ומוכן לענות על שאלות ולהוסיף פרטים, ואף לצרף דוגמאות שונות. את ה"קשה" אני פחות מכיר.