Racket

שפת תכנות

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

Racket
Racket-logo.svg
פרדיגמות תכנות פונקציונלי, תכנות אימפרטיבי, תכנות השתקפותי, מֶטַא־תכנות, תכנות מונחה-עצמים, תכנות מודולארי
שנה 1995
מתכנן PLT בע״מ
מפתח PLT בע״מ
טיפוסיות דינמית, סטטית, חזקה
ניבים 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. 
  2. ^ Strickland, T.S.; Fellesisen, Matthias (2010). "DLS 2010: Contracts for First-Class Classes". 
  3. ^ Bonnaire-Sergeant, Ambrose (2012). A Practical Optional Type System for Clojure (Thesis). The University of Western Australia. 
  4. ^ "Planet2 questions". 
  5. ^ "Rust Bibliography". 
  6. ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton (אוגוסט 2007). "Revised6 Report on the Algorithmic Language Scheme (R6RS)". Scheme Steering Committee. בדיקה אחרונה ב-13 בספטמבר 2011. 
  7. ^ "DrRacket Files". בדיקה אחרונה ב-21 ביולי 2019. הסיומת הסטנדרטית לקובץ קוד מקור בRacket היא ״.rkt״. הסיומות ״.ss״, ״.scm״ ו״.sch״ גם הן נפוצות מבחינה היסטורית. 
  8. ^ Felleisen, M.; Findler, R.B.; Flatt, M.; Krishnamurthi, S.; Barzilay, E.; McCarthy, J.; Tobin-Hochstadt, S. (2015). "The Racket Manifesto". Proceedings of the First Summit on Advances in Programming Languages: 113–128. 
  9. ^ "Dialects of Racket and Scheme". בדיקה אחרונה ב-15 באוגוסט 2011. 
  10. ^ "Welcome to Racket". בדיקה אחרונה ב-15 במאי 2019. 
  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. בדיקה אחרונה ב-17 באוגוסט 2011. 
  13. ^ "Racket: Software License". בדיקה אחרונה ב-20 באוקטובר 2015. 
  ערך זה הוא קצרמר בנושא תוכנה. אתם מוזמנים לתרום לוויקיפדיה ולהרחיב אותו.