ALGOL

שפת תכנות

ALGOL (קיצור של ALGOrithmic Language) היא משפחה של שפות תכנות פרוצדורליות שפותחה החל מאמצע שנות ה-50 של המאה ה-20.

אלגול
ALGOL
פרדיגמות אימפרטיבית, מבנית
תאריך השקה 1959 עריכת הנתון בוויקינתונים
מתכנן פרידריך באואר, פיטר נאור, Joseph Henry Wegstein, Adriaan van Wijngaarden, ז'וליאן גרין, אלן פרליס, ג'ון באקוס, הרמן בוטנברוך, צ'ארלס כץ, Heinz Rutishauser, קלאוס זמלסון, ג'ון מקארתי, בפסקה זו רשומה אחת נוספת שטרם תורגמה עריכת הנתון בוויקינתונים
מפתח ועדה שכללה בין השאר את ג'ון מקארתי, פיטר נאור וג'ון באקוס
טיפוסיות סטטית, חזקה, בטוחה
הושפעה על ידי Fortran, LISP
השפיעה על רוב שפות התכנות האימפרטיביות שהופיעו אחריה, כולל שפת C וצאצאיותיה ופסקל.
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

השפה כללה תכונות חשובות רבות לראשונה, ובהן:

  • המושג של "בלוקים" של קוד, כולל אפשרויות לקינון של בלוקים, והגבלה של תחום ההכרה (Scope) של משתנים
  • שתי דרכים שונות להעברת פרמטרים לפרוצדורה – By Value (כמו בשפת C) ו-By Name
  • קריאה רקורסיבית של פרוצדורות – לראשונה בשפת תכנות אימפרטיבית ולא פונקציונלית
  • מערכים בגודל משתנה שמוקצים על המחסנית

ALGOL הפכה כמעט מיד עם פרסומה לסטנדרט בפועל של תיאור אלגוריתמים, כפסאודו קוד. והשפיעה בצורה מכרעת על התחביר של רובן המוחלט של השפות האימפרטיביות שנוצרו אחריה, כדוגמת פסקל. למעשה, רוב שפות התכנות הנמצאות בשימוש נרחב כיום הן צאצאיות ישירות או עקיפות שלה[1]. דוגמאות לצורות תחביר שנכנסו ב-ALGOL ונכנסו לשפות רבות הן סימון =: עבור פעולת השמה, והפרדה בין פקודות על ידי נקודה ופסיק.

ALGOL סבלה משימוש מועט בתעשייה, נשארה בתפוצה מוגבלת יחסית (בעיקר באירופה), והוחלפה לבסוף על ידי צאצאיותיה.

היסטוריה

עריכה

ל-ALGOL היו מספר גרסאות שזוהו על פי השנה בה נוצרו. הגרסה הראשונה, ALGOL 58 הייתה תוצאה של ועדה בינלאומית של מדענים אמריקאים ואירופאים. השפה החדשה ניסתה להתמודד עם סוגיות שעלו בשימוש בשפת פורטרן הוותיקה יותר. ALGOL 60 משנת 1960 הוכרזה שנתיים אחר כך והפכה לניב הנפוץ ביותר של ALGOL.‏ ALGOL 60 הייתה שפת התכנות הראשונה ששימשה את המחשב הראשון שהותקן בטכניון בחיפה.

ALGOL לא הצליחה בתעשייה. בין היתר כיוון שהשפה הייתה דלה בטיפוסים ובמבני נתונים, לא איפשרה הגדרה של מבני נתונים חדשים, ולא הגדירה פקודות לכתיבה או קריאה מאמצעי קלט/פלט חיצוניים, בשל החשש שזהו תחום תלוי-חומרה מדי. מאפיין זה הקשה על כתיבת תוכניות כך שיהודרו על מערכות שונות. כמו כן, יצרני המחשבים והתכנה הבולטים באותה תקופה, ובעיקר IBM, לא השקיעו בקידומה של ALGOL, עקב ההשקעה בשפות מתחרות כמו PL/I (שנכשלה לבסוף)

בשנת 1968 פורסמה גם ALGOL 68, שתמכה בהגדרה של מבני נתונים מורכבים, שבה call-by-reference החליף את call-by-name שב ALGOL 60, ושהייתה למעשה שפה חדשה מבחינות רבות. ALGOL 68 תוכננה בצורה נוחה למשתמש, אך הייתה קשה למימוש (כתיבת מהדר) יעיל, והוצגה בפורמט לא קריא, וגם היא לא זכתה לתפוצה רחבה, אך השפיעה רבות על תכנונן של שפות תכנות שהופיעו אחריה.

דוגמת קוד (ALGOL 60)

עריכה

דוגמה לפרוצדורה בשם Absmax המחשבת את הערך המוחלט המקסימלי במטריצה a דו-ממדית בגודל n על m. הערך מוחזר במשתנה y שמיקומו במטריצה נתון על ידי המשתנים i ו-k.

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
     value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m 
     is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
     y := 0; i := k := 1;
     for p:=1 step 1 until n do
          for q:=1 step 1 until m do
               if abs(a[p, q]) > y then
                    begin y := abs(a[p, q]);
                         i := p; k := q
                    end
end Absmax

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

עריכה
  מדיה וקבצים בנושא ALGOL בוויקישיתוף

הערות שוליים

עריכה
  1. ^ Robert W. Sebesta, Concepts of Programming Languages, 8th ed. pg 61