שאלות נפוצות
ציר זמן
צ'אט
פרספקטיבה

Scheme

שפת תכנות מוויקיפדיה, האנציקלופדיה החופשית

Remove ads

Scheme היא שפת תכנות וניב מזערי ממשפחת שפות ה־Lisp. היא נבדלת משאר ניבי Lisp התעשייתיים בכך שהיא מצוידת בספריית ליבה קטנה בלבד. בדומה לשאר הניבים, Scheme מצטיינת ביכולת ההרחבה העצמית שלה למרות זעירותה.[1]

עובדות מהירות פרדיגמות, תאריך השקה ...
Remove ads

היסטוריה

השפה פותחה בשנות ה־70 של המאה ה־20 במעבדת CSAIL של MIT לבינה מלאכותית על ידי גיא לוּאִיס סְטִיל וגֶ'רָלְד גֵ'יי סאַסְמן שאף כתבו אודותיה בסדרת מאמרים שנודעו אחר כך בשם "מאמרי הלַמְדָּא" ("Lambda Papers").[2] Scheme קיבלה השראה משפת התכנות ALGOL והשאילה ממנה את תחום ההכרה הלקסיקלי (lexical scope), והייתה לניב הראשון מבין משפחת שפות ה־Lisp עם תחום הכרה לקסיקלי.[3]

בין השנים 1975–1980 סאסמן ו־סטיל פיתחו את החידושים שלהם מסביב לשימוש בתחשיב הלמדא בתכנות, ועוד חידושים מתקדמים נוספים כגון מיטוב רקורסיית זנב בשפות תכנות, ופרסמו אותם בסדרת מאמרים שלעת ימים נודעו בשם ”מאמרי הלמדא.“[2]

Remove ads

עיצוב

Scheme הייתה הניב הראשון מבין ניבי ה־Lisp לבחור בהיקף משתנים לקסיקלי,[א][דרוש מקור] כלומר היקף המשתנים שפונקציות יכלו לראות ולגשת אליהם היה לפי מבנה התכנה בקוד המקור (כפי שנהוג ברוב שפות התכנות העכשוויות), ולא חיפוש משתנים בעזרת המחסנית בזיכרון (ה־Call stack) בזמן הריצה כפי שהיה נהוג בשפות Lisp קודם לכן.

Scheme הייתה מבין השפות הראשונות שאימצו את העיקרון שכל מבנה בשפה הוא מדרגה ראשונה,[דרוש מקור] כלומר התייחסות שווה לפונקציות, מחלקות, משתנים, ותהליכונים כערכים נגישים בזיכרון מתוך השפה עצמה והשימוש בהם כערכים שאפשר לקלוט למשתנים, לשנות, ולהעביר בין פונקציות. תכונה שאפשר למצוא בשפת התכנות Lua[4] שאינה ניב Lisp, אבל תפסה השראה חזקה מ־Scheme.[דרוש מקור]

Scheme תרמה רבות בחזרה לשפות האחיות שלה ממשפחת השפות של Lisp, ובמיוחד ל־Common Lisp, עבורה גיא סטיל בעצמו השתתף במאמץ הפיתוח והעיצוב.[5]

Remove ads

תחביר

כללי התחביר של השפה מעטים ולכן היא קלה יחסית ללימוד. Scheme נלמדת בעיקר באוניברסיטאות ומוסדות חינוך, מכיוון שבעזרתה נוח להמחיש עקרונות יסודיים מתחום מדעי המחשב וכן להדגים מודלים שונים לפיהם פועלים מהדרים ומפרשים. עם זאת, החל מתחילת המאה ה־21 היא מוחלפת באטיות בשפות אחרות דוגמת Python.[6]

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

(define (factorial n)
    (if (= n 0)
    1
    (* n (factorial (- n 1)))))

תקינה

Scheme עברה מספר תקינות וביניהן:[7]

  • שנת 1990, תקן 1178-1990 (R1995) של ה־IEEE. התקן אינו נגיש באופן חופשי ברשת.
  • שנת 1991, תקן R4RS.[8]
  • שנת 1998, תקן R5RS.[9] התקן הכי נפוץ ביישומי השפה.
  • שנת 2007, תקן R6RS.[10] התקן הביא חידושים ושכלל את השפה לשימוש תעשייתי ומסחרי. עם זאת, התקן שנוי במחלקות בקרב מתכנתיה כיוון שהרוח התעשייתית שלו חורגת מהפילוסופיה המינימליסטית המקורית של שפת התכנות.[11]
  • שנת 2013, תקן R7RS.[12] התקן נוצר כתוצאה מהמחלוקת שאפפה את התקן הקודם. הוא נועד לפצל את השפה לתקן "זעיר", שנועד בעיקר למטרות חינוך ומחקר, במקביל לתקן הקודם שמשמש צרכים תעשייתיים ומסחריים.[13] מכיוון שהתקן זעיר מקודמו, הוא לא שומר בהכרח על תאימות מלאה מולו, אלא מפצל את שימוש השפה לזרם נפרד ברוח המקורית של השפה.
Remove ads

ראו גם

לקריאה נוספת

מאמרי הלמדא

Remove ads

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

ויקישיתוף מדיה וקבצים בנושא Scheme בוויקישיתוף

ביאורים

  1. באנגלית: ”lexical scope,“ בניגוד להיקף משתנים דינמי, ”dynamic scope.“

הערות שוליים

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads