Racket

מתוך ויקיפדיה, האנציקלופדיה החופשית
Racket
Racket-logo.svg
Drracket.png
פרדיגמות תכנות פונקציונלי, תכנות אימפרטיבי, תכנות השתקפותי, מֶטַא־תכנות, תכנות מונחה-עצמים, תכנות מודולארי
תאריך השקה 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
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

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

שפת 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 (Thesis). 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.
Crystal kpackage.png ערך זה הוא קצרמר בנושא תוכנה. אתם מוזמנים לתרום לוויקיפדיה ולהרחיב אותו.