SNOBOL

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש
SNOBOL
פרדיגמות אימפרטיבית, פרוצדורלית, בלתי מובנית
טיפוסיות דינמית, חלשה
מימושים SNOBOL, SPITBOL
הושפעה על ידי COMIT
השפיעה על AWK, SL5, Icon, bs, Lua[1]

SNOBOL היא סדרה של שפות תכנות שפותחו בין השנים 1962 ל־1967 במעבדות בל על ידי דייוויד ג'יי. פארבר, ראלף גריזוולד ואיוון פי. פולונסקי, והגיעו לשיאן ב־SNOBOL4. זו הייתה אחת מכמה שפות שפותחו בשנות ה-50 וה-60 שהתמקדו בעיבוד מחרוזות; אחרות כללו את COMIT ו־TRAC.

SNOBOL4 בולטת יחסית לרוב שפות התכנות מתקופתה בכך שקיים בה טיפוס נתונים בשם "pattern" המהווה אובייקט ממעלה ראשונה – טיפוס נתונים שערכיו יכולים להיות מטופלים בכל הצורות האפשריות כמו כל טיפוס נתונים אחר בשפה; ובכך שהיא מספקת אופרטורים לשרשור (concatenation) ולהחלפה חלופית (alternation). ב־SNOBOL4 דפוסים הם סוג של אובייקט וניתן לבצע עליהם פעולות מגוונות, בדומה לשפות תכנות מונחית עצמים מאוחרות יותר כמו JavaScript, שבהן הדפוסים מוכרים כ־ביטויים רגולריים. בנוסף לכך, ניתן להתייחס למחרוזות שנוצרו במהלך הריצה כאל תוכניות ולפרש או לקמפל ולהריץ אותן (בדומה לפונקציית eval בשפות אחרות).

בשלהי שנות ה-60 ותחילת שנות ה-70, SNOBOL4 נלמדה בקנה מידה רחב באוניברסיטאות גדולות בארצות הברית, והייתה בשימוש נרחב בשנות ה-70 וה-80 כשפה לעיבוד טקסט בתחום מדעי הרוח.בשנות ה-80 וה-90 השימוש בה דעך, כאשר שפות חדשות יותר דוגמת AWK ו־Perl הפכו את הטיפול במחרוזות באמצעות ביטויים רגולריים לפופולרי.

דפוסי SNOBOL4 כוללים אפשרות להביע דקדוקים בסגנון BNF, השקולים לדקדוק חסר הקשר, וכך הם חזקים יותר מביטויים רגולריים.[2] ה“ביטויים הרגולריים” בגרסאות הנוכחיות של AWK ושל Perl הם למעשה הרחבות של הביטויים הרגולריים במובן המסורתי, אך אין בהם רקורסיביות, בניגוד לדפוסי SNOBOL4, מה שמעניק להם יתרון חישובי מובהק.[3] (ביטויים רקורסיביים כן הופיעו ב־Perl 5.10, ששוחררה בדצמבר 2007.[4][5])

השפות SL5 משנת 1977[6] ו־Icon משנת 1978 פותחו מאוחר יותר על ידי גריזוולד במטרה לשלב את יכולת החזרה (backtracking) של התאמת הדפוסים ב־SNOBOL4 עם מבנה דמוי ALGOL סטנדרטי יותר.

פיתוח

SNOBOL1

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

SNOBOL2

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

SNOBOL3

SNOBOL נכתבה מחדש לצורך הוספת פונקציות, הן סטנדרטיות והן כאלו שמוגדרות על ידי המשתמש, והתוצאה שוחררה כ־SNOBOL3. השפה זכתה לפופולריות רבה, ונכתבה מחדש עבור מחשבים אחרים מעבר ל־IBM 7090 על ידי מתכנתים שונים. כתוצאה מכך הופיעו מספר ניבים (dialects) לא תואמים.

SNOBOL4

ככל ש־SNOBOL3 זכתה לתפוצה רחבה יותר, המחברים קיבלו יותר ויותר בקשות להוספות ולשיפורים בשפה. הם גם החלו לקבל תלונות על חוסר תאימות ובאגים בגרסאות שלא הם כתבו. כדי להתמודד עם זה ולנצל את הדורות החדשים של המחשבים בסוף שנות ה-60, התקבלה ההחלטה לפתח את SNOBOL4 עם מגוון רחב של טיפוסי נתונים ותכונות נוספות, אך על בסיס מכונה וירטואלית כדי לאפשר ניידות משופרת בין מחשבים שונים.[7] מהדר (translator) SNOBOL4 עדיין נכתב בשפת סף, אך נעשה שימוש במאקרו של האסמבלר להגדיר את הוראות המכונה הווירטואלית של SNOBOL Implementation Language (SIL). זה שיפר את הניידות של השפה באופן משמעותי, מאחר שהיה קל יחסית להתאים את המכונה הווירטואלית שמריצה את המהדר על ידי מימוש ההוראות הווירטואליות שלה בכל מכונה שיש בה אסמבלר עם יכולות מאקרו או שפה עילית כלשהי.[8]

שפת SIL, שהיא בלתי תלויה במכונה, התגבשה כהכללה של מאקרו לטיפול במחרוזות, שפותחו על ידי דאגאלס מקילורי וששימשו בהרחבה למימוש ההתחלתי של SNOBOL. ב־1969 השפיע מקילרוי על השפה שוב כשהתעקש על הוספת טיפוס הטבלה (table) ל־SNOBOL4.[9][10]

הערות שוליים

  1. Ierusalimschy, Roberto; de Figueiredo, Luiz Henrique; Celes, Waldemar (2007), "The evolution of Lua", Proceedings of the third ACM SIGPLAN conference on History of programming languages (PDF), p. 26, doi:10.1145/1238844.1238846, ISBN 9781595937667, S2CID 475143
  2. Gimpel, J. F. (בפברואר 1973). "A theory of discrete patterns and their implementation in SNOBOL4". Communications of the ACM. 16 (2): 91–100. doi:10.1145/361952.361960. S2CID 17059429. {{cite journal}}: (עזרה)
  3. "Dr. Dobb's: Programs That Transform Their Own Source Code; or: the Snobol Foot Joke". Dobbscodetalk.com. נבדק ב-2011-12-04.
  4. Contact details. "perlre". perldoc.perl.org. נבדק ב-2011-12-04.
  5. "Recursive Regex Tutorial". נבדק ב-2017-03-19.
  6. Griswold, Ralph E.; Hanson, David R. (באפריל 1977). "An Overview of SL5". ACM SIGPLAN Notices. 12 (4): 40–50. doi:10.1145/954654.954658. S2CID 38692673. {{cite journal}}: (עזרה)
  7. ראו פרק 1 ב־The Macro Implementation of SNOBOL4
  8. SNOBOL4 יושמה גם בשפת C כדי לממש את הוראות המכונה הווירטואלית.
  9. Griswold, Ralph (1978). "A history of the SNOBOL programming languages" (PDF). ACM SIGPLAN Notices. 13 (8): 275–308. doi:10.1145/960118.808393. S2CID 5413577. אורכב מ-המקור (PDF) ב-2019-03-02.
  10. Wexelblat, Richard L., ed. (2014) [1981]. History of Programming Languages. Academic Press. p. 784. ISBN 9781483266169.
הערך באדיבות ויקיפדיה העברית, קרדיט,
רשימת התורמים
רישיון cc-by-sa 3.0

SNOBOL40491445Q522041