Scheme – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
דויד פון תמר (שיחה | תרומות) מ ←תקינה: ניסוח |
מ ויקיזציה, ניסוח, הגהה |
||
שורה 1:
{{שפת תכנות
}}
'''Scheme''' היא [[שפת תכנות]] וניב מזערי ממשפחת שפות ה־[[Lisp]].
השפה פותחה ב[[שנות
▲היא [[שפת תכנות]] וניב מזערי ממשפחת שפות ה־[[Lisp]]. השפה Scheme נבדלת משאר ניבי Lisp התעשייתיים בכך שהיא מצוידת עם ספריית ליבה קטנה בלבד. בדומה לשאר הניבים, Scheme מצטיינת ביכולת ההרחבה העצמית שלה למרות זעירותה.<ref>{{קישור כללי|כתובת=https://groups.csail.mit.edu/mac/projects/scheme/|כותרת=The Scheme Programming Language|אתר=groups.csail.mit.edu|תאריך_וידוא=2020-07-07}}</ref>
כללי התחביר
▲השפה פותחה ב[[שנות השבעים]] במעבדת [[CSAIL]] של [[המכון הטכנולוגי של מסצ'וסטס|MIT]] ל[[בינה מלאכותית]] על ידי [[גיא סטיל|גיא לוּאִיס סְטִיל]] ו[[ג'רלד סאסמן|גֶ'רָלְד גֵ'יי סאַסְמן]] שגם הפיצו על אודותיה באותה התקופה בסדרת פרסומי מאמרים שלעת ימים נודעו בשם "[[Scheme#מאמרי ה־למדא|'''מאמרי הלַמְדָּא''']]" ("'''Lambda Papers'''").<ref name=":0">{{קישור כללי|כתובת=https://web.archive.org/web/20180625085633/http://library.readscheme.org/|כותרת=Bibliography of Scheme-related Research|אתר=web.archive.org|תאריך=2018-06-25|תאריך_וידוא=2020-07-07}}</ref> השפה תפסה השראה משפת התכנות [[ALGOL]] והשאילה ממנה את ההיקף הלקסיקלי (lexical scope), והייתה לניב הראשון מבין משפחת שפות ה־Lisp עם היקף לקסיקלי.<ref>{{צ-מאמר|שם=The First Report on Scheme Revisited|קישור=https://doi.org/10.1023/A:1010079421970|כתב עת=Higher-Order and Symbolic Computation|שנת הוצאה=1998-12-01|עמ=399–404|כרך=11|doi=10.1023/A:1010079421970|מחבר=Gerald Jay Sussman, Guy L. Steele}}</ref>
קל לזהות את תחבירה של שפה זו, אשר בדומה לרוב
▲כללי התחביר (Syntax) של השפה הם מעטים לכן היא קלה (יחסית) ללימוד. Scheme נלמדת בעיקר באוניברסיטאות ומוסדות חינוך, מכיוון שבעזרתה נוח להמחיש עקרונות יסודיים מתחום [[מדעי המחשב]] וכן להדגים מודלים שונים לפיהם פועלים [[מהדר]]ים ו[[מפרש (תוכנה)|מפרשים]]. כיום השפה מוחלפת באטיות בשפות אחרות דוגמת [[Python]].{{הערה|1=[http://www.johndcook.com/blog/2009/03/26/mit-replaces-scheme-with-python/ מאמר בנושא המעבר ל-Python ב-MIT]}}
▲קל לזהות את תחבירה של שפה זו, אשר בדומה לרוב ניבים של Lisp, מורכב מביטויים עטופים בסוגריים הנקראים ביטויי-S (באנגלית S-expressions). התחביר מודגם בתוכנית הבאה המחשבת [[עצרת]].
<syntaxhighlight lang="scheme">
(define (factorial n)
1
</syntaxhighlight>
Scheme עברה מספר [[תקן|תקינות]]
* שנת '''1990''', תקן '''1178-1990''' ('''R1995''') של ה־[[IEEE]]. התקן אינו נגיש באופן חופשי ברשת.
* שנת '''1991''', תקן '''R4RS'''.
* שנת '''1998''', תקן '''R5RS'''.
* שנת '''2007''', תקן '''R6RS'''.
* שנת '''2013''', תקן '''R7RS'''.
בין השנים 1975–1980 סאסמן ו־סטיל פיתחו את החידושים שלהם מסביב לשימוש ב[[תחשיב למדא|תחשיב הלמדא]] בתכנות, ועוד חידושים מתקדמים נוספים כגון [[מיטוב אלגוריתמים|מיטוב]] [[רקורסיית זנב]] בשפות תכנות, ופרסמו אותם בסדרת מאמרים שלעת ימים נודעו בשם "מאמרי הלמדא".
==== רשימת המאמרים ====▼
* 1975: Scheme: An Interpreter for Extended Lambda Calculus
* 1976: Lambda: The Ultimate Imperative
שורה 42 ⟵ 37:
* 1980: Design of a Lisp-based Processor
Scheme היה הניב הראשון מבין ניבי ה־Lisp לבחור בהיקף משתנים לקסיקלי (lexical scope, בניגוד להיקף משתנים דינמי - dynamic scope), כלומר היקף המשתנים שפונקציות יכלו לראות ולגשת אליהם היה לפי מבנה התכנה בקוד המקור (כפי שנהוג ברוב שפות התכנות העכשוויות), ולא חיפוש משתנים בעזרת המחסנית בזיכרון (ה־Call stack) בזמן הריצה כפי שהיה נהוג בשפות Lisp קודם לכן.
Scheme הייתה מבין השפות הראשונות שאימצו את העיקרון שכל מבנה בשפה הוא [[מבנה מדרגה ראשונה (תכנות)|מדרגה ראשונה]], כלומר התייחסות שווה לפונקציות, מחלקות, משתנים, ו[[תהליכון|תהליכונים]] כערכים נגישים בזיכרון מתוך השפה עצמה והשימוש בהם כערכים שאפשר לקלוט למשתנים, לשנות, ולהעביר בין פונקציות. תכונה שאפשר למצוא בשפת התכנות [[Lua]]<ref>{{צ-מאמר|מחבר=Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes|שם=The Evolution of Lua|כתב עת=|עמ=2|קישור=https://www.lua.org/doc/hopl.pdf}}</ref> שאינה ניב Lisp, אבל תפסה השראה חזקה מ־Scheme.
Scheme תרמה רבות בחזרה לשפות האחיות שלה ממשפחת השפות של Lisp, ובמיוחד ל־[[Common Lisp]], עבורה גיא סטיל בעצמו השתתף במאמץ הפיתוח והעיצוב.
== ראו גם ==
שורה 61 ⟵ 56:
{{קצרמר|תוכנה}}
[[קטגוריה:שפות תכנות]]
|