Racket
Racket (בעברית: ראָקֵט) היא שפת תכנות, שמבוססת על ניב Scheme של Lisp.
פרדיגמות | תכנות פונקציונלי, תכנות אימפרטיבי, תכנות השתקפותי, מֶטַא־תכנות, תכנות מונחה-עצמים, תכנות מודולארי |
---|---|
תאריך השקה | 1995 |
מתכנן | PLT בע״מ |
מפתח | PLT בע״מ |
גרסה אחרונה | 8.13 (16 במאי 2024) |
טיפוסיות | דינמית, סטטית, חזקה |
ניבים | FrTime, Lazy Racket, Typed Racket, Scribble |
הושפעה על ידי | Eiffel,[2] Scheme |
השפיעה על | Clojure,[3] Rust,[4][5] Scheme[6] |
רישיון | LGPLv3 |
סיומת |
.rkt[7] |
racket-lang | |
שפת Racket נוצרה בתור פלטפורמה לתכנון ומימוש שפות תכנות.[8] בנוסף לשפת הבסיס Racket, המונח Racket מתייחס גם למשפחת שפות התכנות שנוצרו בRacket [9]וסט הכלים שתומך בפיתוח Racket ובפיתוח בעזרת Racket.[10] משתמשים בRacket גם עבור תסרוט (Scripting), לימוד מדעי המחשב ומחקר.
פלטפורמת Racket מספקת מימוש של שפת Racket (כולל מערכת זמן ריצה, ספריות ומהדר JIT) יחד עם סביבת הפיתוח המשולבת DrRacket שנכתבה ב-Racket .Racket משמש, לתוכנית ProgramByDesign, שמטרתה להפוך את מדעי המחשב ל״חלק חיוני מתוכנית הלימודים לאמנויות ליברליות״.[11][12]
שפת Racket הבסיסית ידועה עבור מערכת המאקרו הנרחבת שלה המאפשרת ליצור שפות מוטמעותו שפות לתחום ספציפי, מבני שפה כמו מחלקות או מודולים, וניבים נפרדים של Racket עם סמנטיקה שונה.
הפצת הפלטפורמה היא תוכנה חופשית וקוד פתוח המופצת תחת הרישיון הציבורי הכללי המוקטן של גנו (LGPL).[13] תוספים וחבילות שנכתבו על ידי הקהילה מועלים לפעמים למערכת ניהול החבילות של Racket.
דוגמאות קוד
עריכהלהלן תוכנית שלום עולם טריוויאלית:
#lang racket
"Hello, World!"
הרצת תוכנית זו מפיקה את הפלט:
Hello, World!
להלן תוכנית קצת פחות טריוויאלית:
#lang racket
(require 2htdp/image)
(let sierpinski ([n 8])
(if (zero? n)
(triangle 2 'solid 'red)
(let ([t (sierpinski (- n 1))])
(freeze (above t (beside t t))))))
תוכנית זו, שנלקחה מאתר Racket, מציירת משולש שרפינסקי, מקונן לעומק 8.
בעזרת ההנחיה lang#
ניתן לכתוב קוד בניבים שונים של Racket. להלן דוגמה לתוכנית המחשבת עצרת ב-Typed Racket, ניב בעל טיפוסיות סטטית של Racket:
#lang typed/racket
(: fact (Integer -> Integer))
(define (fact n)
(if (zero? n) 1 (* n (fact (- n 1)))))
לקריאה נוספת
עריכה- Felleisen et al., 2013. Realm of Racket. No Starch Press.
- Felleisen et al., 2003. How to Design Programs. MIT Press.
קישורים חיצוניים
עריכה- אתר האינטרנט הרשמי של Racket
- Racket, ברשת החברתית אקס (טוויטר)
- Racket, סרטונים בערוץ היוטיוב
הערות שוליים
עריכה- ^ "Racket v7.5". The Racket Blog. 18 בנובמבר 2019. נבדק ב-18 בנובמבר 2019.
{{cite web}}
: (עזרה) - ^ Strickland, T.S.; Fellesisen, Matthias (2010). "DLS 2010: Contracts for First-Class Classes" (PDF).
- ^ Bonnaire-Sergeant, Ambrose (2012). A Practical Optional Type System for Clojure (תיזה). The University of Western Australia.
- ^ "Planet2 questions".
- ^ "Rust Bibliography".
- ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. (באוגוסט 2007). "Revised6 Report on the Algorithmic Language Scheme (R6RS)". Scheme Steering Committee. נבדק ב-2011-09-13.
{{cite web}}
: (עזרה) - ^ "DrRacket Files". נבדק ב-21 ביולי 2019.
הסיומת הסטנדרטית לקובץ קוד מקור בRacket היא ״.rkt״. הסיומות ״.ss״, ״.scm״ ו״.sch״ גם הן נפוצות מבחינה היסטורית.
{{cite web}}
: (עזרה) - ^ Felleisen, M.; Findler, R.B.; Flatt, M.; Krishnamurthi, S.; Barzilay, E.; McCarthy, J.; Tobin-Hochstadt, S. (2015). "The Racket Manifesto" (PDF). Proceedings of the First Summit on Advances in Programming Languages: 113–128.
- ^ "Dialects of Racket and Scheme". נבדק ב-2011-08-15.
- ^ "Welcome to Racket". נבדק ב-2019-05-15.
- ^ Felleisen; Findler; Flatt; Krishnamurthi (2004). "The TeachScheme! Project: Computing and Programming for Every Student". Journal of Computer Science Education.
- ^ "Overview". Program by Design. נבדק ב-2011-08-17.
- ^ "Racket: Software License". נבדק ב-2015-10-20.