SNOBOL

**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, השקולים לדקדוק חסר הקשר, וכך הם חזקים יותר מביטויים רגולריים. ה“ביטויים הרגולריים” בגרסאות הנוכחיות של AWK ושל Perl הם למעשה הרחבות של הביטויים הרגולריים במובן המסורתי, אך אין בהם רקורסיביות, בניגוד לדפוסי SNOBOL4, מה שמעניק להם יתרון חישובי מובהק. (ביטויים רקורסיביים כן הופיעו ב־Perl 5.10, ששוחררה בדצמבר 2007.)

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

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

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

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

### SNOBOL4
ככל ש־SNOBOL3 זכתה לתפוצה רחבה יותר, המחברים קיבלו יותר ויותר בקשות להוספות ולשיפורים בשפה. הם גם החלו לקבל תלונות על חוסר תאימות ובאגים בגרסאות שלא הם כתבו. כדי להתמודד עם זה ולנצל את הדורות החדשים של המחשבים בסוף שנות ה-60, התקבלה ההחלטה לפתח את SNOBOL4 עם מגוון רחב של טיפוסי נתונים ותכונות נוספות, אך על בסיס מכונה וירטואלית כדי לאפשר ניידות משופרת בין מחשבים שונים. מהדר (translator) SNOBOL4 עדיין נכתב בשפת סף, אך נעשה שימוש במאקרו של האסמבלר להגדיר את הוראות המכונה הווירטואלית של **S**NOBOL **I**mplementation **L**anguage (SIL). זה שיפר את הניידות של השפה באופן משמעותי, מאחר שהיה קל יחסית להתאים את המכונה הווירטואלית שמריצה את המהדר על ידי מימוש ההוראות הווירטואליות שלה בכל מכונה שיש בה אסמבלר עם יכולות מאקרו או שפה עילית כלשהי.

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

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

## הערות שוליים

קטגוריה:שפות תכנות