Racket

שפת תכנות

Racketעברית: ראָקֵט) היא שפת תכנות, שמבוססת על ניב Scheme של Lisp.

Racket
פרדיגמות תכנות פונקציונלי, תכנות אימפרטיבי, תכנות השתקפותי, מֶטַא־תכנות, תכנות מונחה-עצמים, תכנות מודולארי
תאריך השקה 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.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

שפת 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!

להלן תוכנית קצת פחות טריוויאלית:

 
התוצאה של תוכנית זו, כפי שמוצג ב- DrRacket
#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)))))

לקריאה נוספת

עריכה

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

עריכה

הערות שוליים

עריכה
  1. ^ "Racket v7.5". The Racket Blog. 18 בנובמבר 2019. נבדק ב-18 בנובמבר 2019. {{cite web}}: (עזרה)
  2. ^ Strickland, T.S.; Fellesisen, Matthias (2010). "DLS 2010: Contracts for First-Class Classes" (PDF).
  3. ^ Bonnaire-Sergeant, Ambrose (2012). A Practical Optional Type System for Clojure (תיזה). The University of Western Australia.
  4. ^ "Planet2 questions".
  5. ^ "Rust Bibliography".
  6. ^ 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}}: (עזרה)
  7. ^ "DrRacket Files". נבדק ב-21 ביולי 2019. הסיומת הסטנדרטית לקובץ קוד מקור בRacket היא ״.rkt״. הסיומות ״.ss״, ״.scm״ ו״.sch״ גם הן נפוצות מבחינה היסטורית. {{cite web}}: (עזרה)
  8. ^ 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.
  9. ^ "Dialects of Racket and Scheme". נבדק ב-2011-08-15.
  10. ^ "Welcome to Racket". נבדק ב-2019-05-15.
  11. ^ Felleisen; Findler; Flatt; Krishnamurthi (2004). "The TeachScheme! Project: Computing and Programming for Every Student". Journal of Computer Science Education.
  12. ^ "Overview". Program by Design. נבדק ב-2011-08-17.
  13. ^ "Racket: Software License". נבדק ב-2015-10-20.
  ערך זה הוא קצרמר בנושא תוכנה. אתם מוזמנים לתרום לוויקיפדיה ולהרחיב אותו.