راكيت (لغة برمجة)

لغة راكيت هي لغة برمجة متعددة الأغراض ومتعددة الأنماط . تُعدّ راكيت لهجة حديثة من لغة ليسب ، وهي مشتقة من لغة سكيم . صُممت راكيت كمنصة لتصميم لغات البرمجة وتنفيذها. [ 9 ] بالإضافة إلى لغة راكيت الأساسية، يُستخدم مصطلح راكيت أيضًا للإشارة إلى عائلة لغات البرمجة [ 10 ] ومجموعة الأدوات التي تدعم التطوير باستخدام راكيت. [ 11 ] كما تُستخدم راكيت في كتابة البرامج النصية ، وتعليم علوم الحاسوب ، والبحث العلمي.

توفر منصة Racket تطبيقًا للغة Racket، بما في ذلك نظام تشغيل ، ومكتبات، ومترجم يدعم عدة أنماط ترجمة: لغة الآلة ، والترجمة عبر المنصات ، والترجمة التفسيرية ، والترجمة الفورية (JIT) ، بالإضافة إلى بيئة التطوير المتكاملة DrRacket المكتوبة بلغة Racket. [ 13 ] يستخدم برنامج ProgramByDesign للتوعية لغة Racket، والذي يهدف إلى جعل علوم الحاسوب جزءًا لا غنى عنه من مناهج العلوم الإنسانية . [ 14 ] [ 15 ]

تُعرف لغة Racket الأساسية بنظامها الكلي الواسع الذي يُتيح إنشاء لغات مُدمجة ولغات خاصة بمجالات مُحددة ، وبنى لغوية مثل الفئات أو الوحدات ، ولهجات مُنفصلة من Racket ذات دلالات مُختلفة . [ 16 ] [ 17 ] [ 18 ] [ 19 ]

توزيع المنصة عبارة عن برنامج مجاني ومفتوح المصدر يتم توزيعه بموجب ترخيصي Apache 2.0 و MIT . [ 20 ] يمكن تحميل الإضافات والحزم التي يكتبها المجتمع إلى كتالوج حزم Racket .

تاريخ

تطوير

أسس ماتياس فيليسين شركة PLT Inc. في منتصف التسعينيات، بدايةً كمجموعة بحثية، [ 21 ] ثم سرعان ما تحولت إلى مشروع مخصص لإنتاج مواد تعليمية للمبرمجين المبتدئين (محاضرات، تمارين/مشاريع، برمجيات). في يناير 1995، قررت المجموعة تطوير بيئة برمجة تعليمية قائمة على لغة Scheme . قام ماثيو فلات بتجميع MrEd، الآلة الافتراضية الأصلية للغة Racket، من مكتبة libscheme، [ 22 ] و wxWidgets ، وعدد قليل من الأنظمة المجانية الأخرى. [ 23 ] في السنوات اللاحقة، أنتج فريق ضم فلات، وروبي فيندلر ، وشري رام كريشنامورثي ، وكورماك فلانغان، وآخرين، DrScheme، وهي بيئة برمجة لمبرمجي Scheme المبتدئين وبيئة بحثية للكتابة التدريجية . [ 13 ] سُميت لغة التطوير الرئيسية التي دعمتها DrScheme باسم PLT Scheme.

بالتوازي مع ذلك، بدأ الفريق بعقد ورش عمل لمعلمي المدارس الثانوية، لتدريبهم على تصميم البرامج والبرمجة الوظيفية. وقد وفرت الاختبارات الميدانية مع هؤلاء المعلمين وطلابهم أدلة أساسية لتوجيه عملية التطوير.

على مدى السنوات اللاحقة، أضافت PLT لغات تعليمية، وخوارزمية حسابية جبرية، [ 24 ] وحلقة قراءة-تقييم-طباعة شفافة ، وطابعة قائمة على المُنشئ، والعديد من الابتكارات الأخرى إلى DrScheme، مما أدى إلى إنتاج بيئة تطوير برامج تعليمية عالية الجودة. وبحلول عام 2001، كان الفريق الأساسي (فيليسن، فيندلر، فلات، كريشنامورثي) قد كتبوا ونشروا كتابهم المدرسي الأول، " كيفية تصميم البرامج" ، استنادًا إلى فلسفتهم التعليمية.

يوضح بيان Racket [ 9 ] بالتفصيل المبادئ التي تحرك تطوير Racket، ويعرض إطار التقييم وراء عملية التصميم، ويفصل فرص التحسينات المستقبلية.

سجل الإصدارات

أدخل الجيل الأول من مراجعات لغة PLT Scheme ميزاتٍ للبرمجة واسعة النطاق باستخدام كلٍّ من الوحدات النمطية والفئات . وقدّم الإصدار 42 الوحدات النمطية - نظام وحدات نمطية من الدرجة الأولى - لتكملة الفئات في تطوير التطبيقات واسعة النطاق. [ 25 ] اكتسب نظام الفئات ميزاتٍ جديدة (مثل واجهات نمط جافا ) وفقد أيضًا بعض الميزات (مثل الوراثة المتعددة ) خلال هذه الإصدارات. [ 16 ] تطورت اللغة عبر عددٍ من الإصدارات المتتالية، وحققت شعبيةً كبيرة في الإصدار 53، مما أدى إلى عملٍ مكثفٍ وإصدار النسخة 100 اللاحقة، والتي تُعادل الإصدار "1.0" في أنظمة الإصدارات الشائعة الحالية.

أُطلق على المراجعة الرئيسية التالية اسم الإصدار 200، والذي قدّم نظام وحدات افتراضيًا جديدًا يتعاون مع وحدات الماكرو. [ 25 ] وعلى وجه الخصوص، يضمن نظام الوحدات فصل عمليات الحساب في وقت التشغيل عن عمليات الحساب في وقت الترجمة لدعم "مجموعة لغات البرمجة". [ 26 ] وعلى عكس الوحدات، فإن هذه الوحدات ليست كائنات من الدرجة الأولى .

أضاف الإصدار 300 دعمًا لليونيكود ، ودعمًا للمكتبات الخارجية ، وتحسينات على نظام الفئات. [ 25 ] وفي وقت لاحق، حسّنت سلسلة 300 أداء وقت تشغيل اللغة بإضافة مُترجم JIT والتحول إلى تجميع النفايات التوليدي الافتراضي .

مع الإصدار الرئيسي التالي، تحوّل المشروع إلى نظام ترقيم إصدارات أكثر تقليدية قائم على التسلسل . وقدّم الإصدار 4.0 #langاختصارًا لتحديد اللغة التي كُتبت بها الوحدة. علاوة على ذلك، قدّم هذا الإصدار أزواجًا وقوائم غير قابلة للتغيير ، ودعمًا للتوازي الدقيق ، ولهجة ذات كتابة ثابتة . [ 27 ]

في 7 يونيو 2010، أُعيد تسمية PLT Scheme إلى Racket. [ 28 ] تزامن تغيير الاسم مع إصدار النسخة 5.0. لاحقًا، أُعيدت كتابة واجهة المستخدم الرسومية (GUI) باستخدام لغة C++ في Racket في النسخة 5.1، وذلك باستخدام أدوات واجهة المستخدم الأصلية على جميع المنصات. [ 23 ] تضمنت النسخة 5.2 أداة فحص بناء الجملة في الخلفية، ومكتبة رسم بياني جديدة ، ومكتبة قواعد بيانات، وواجهة سطر أوامر تفاعلية (REPL) موسعة جديدة. [ 29 ] تضمنت النسخة 5.3 ميزة الوحدات الفرعية الجديدة للوحدات المحملة اختياريًا، [ 30 ] وأدوات تحسين جديدة ، ومكتبة JSON ، وميزات أخرى. [ 31 ] قدمت النسخة 5.3.1 تحسينات كبيرة على DrRacket: حيث تم تفعيل مدقق بناء الجملة في الخلفية افتراضيًا، وأُضيفت أداة جديدة لمعاينة الوثائق. [ 32 ]

في الإصدار 6.0، أطلقت Racket نظام إدارة الحزم من الجيل الثاني. وكجزء من هذا التطوير، أُعيد تنظيم مستودع DrRacket وRacket الرئيسي وقُسِّم إلى مجموعة كبيرة من الحزم الصغيرة، مما أتاح إمكانية تثبيت الحد الأدنى من Racket وتثبيت الحزم المطلوبة فقط. [ 33 ]

صدرت النسخة السابعة من Racket مع مُوسِّع ماكرو جديد مكتوب بلغة Racket، وذلك ضمن الاستعدادات لدعم الانتقال إلى نظام تشغيل Chez Scheme ودعم أنظمة تشغيل متعددة. [ 34 ] [ 35 ] وفي 19 نوفمبر 2019، صدرت النسخة 7.5 من Racket. وكانت رخصة هذه النسخة أقل تقييدًا، حيث تُستخدم الآن إما رخصة Apache 2.0 أو رخصة MIT. [ 36 ] [ 37 ]

في 13 فبراير 2021، تم إصدار Racket 8.0. يُمثل Racket 8.0 أول إصدار يستخدم نظام التشغيل Racket مع Chez Scheme ، المعروف باسم Racket CS، كتطبيق افتراضي. يتميز Racket CS بسرعته وسهولة صيانته وتطويره، بالإضافة إلى توافقه مع الإصدارات السابقة من برامج Racket، كما أنه يتمتع بميزة أفضل في جمع البيانات المهملة بالتوازي. [ 38 ]

سمات

تتضمن لغة Racket الأساسية وحدات الماكرو ، والوحدات النمطية ، والإغلاقات المعجمية ، واستدعاءات الذيل ، والاستمراريات المحددة ، [ 39 ] والمعاملات (المتغيرات المرنة)، وعقود البرمجيات ، [ 40 ] والخيوط الخضراء وخيوط نظام التشغيل ، [ 41 ] [ 42 ] [ 43 ] وغيرها. كما تتضمن اللغة عناصر أساسية، مثل مساحات الأحداث والحراس، التي تتحكم في إدارة الموارد وتمكّن اللغة من العمل كنظام تشغيل لتحميل وإدارة البرامج الأخرى. [ 12 ] يتم إنشاء امتدادات إضافية للغة باستخدام نظام الماكرو القوي، الذي يمكنه، جنبًا إلى جنب مع نظام الوحدات النمطية والمحللات المخصصة، التحكم في جميع جوانب اللغة. [ 44 ] يتم تنفيذ معظم بنيات اللغة في Racket كوحدات ماكرو في اللغة الأساسية. وتشمل هذه البنيات نظام فئات المزج ، [ 16 ] ونظام المكونات (أو الوحدات النمطية) الذي يتميز بقدرة تعبيرية مماثلة للتخصيص غير الشفاف في نظام وحدات ML ، [ 17 ] ومطابقة الأنماط .

علاوة على ذلك، تتميز لغة Racket بنظام العقود الأول من نوعه في لغات البرمجة عالية المستوى . [ 45 ] يستوحي نظام العقود في Racket فكرته من منهجية التصميم بالعقود في لغة Eiffel ، ويُوسّع نطاقها ليشمل القيم عالية المستوى مثل الدوال من الدرجة الأولى ، والكائنات، وخلايا المراجع ، وما إلى ذلك. على سبيل المثال، يضمن النظام أن يقوم الكائن الذي يتم التحقق منه بواسطة عقد بإجراء عمليات التحقق التعاقدية عند استدعاء توابعه.

يتضمن برنامج Racket كلاً من مُجمِّع البايت كود ومُجمِّع JIT . يُنتج مُجمِّع البايت كود تنسيق بايت كود داخليًا يتم تشغيله بواسطة الآلة الافتراضية لبرنامج Racket ، بينما يقوم مُجمِّع JIT بترجمة البايت كود إلى كود الآلة أثناء التشغيل.

منذ عام 2004، أصبحت اللغة تُشحن أيضًا مع PLaneT، وهو مدير حزم مُدمج في نظام الوحدات النمطية، مما يسمح باستيراد واستخدام مكتبات الطرف الثالث بسلاسة. كما يحتوي PLaneT على سياسة مُدمجة للتحكم في الإصدارات لمنع مشاكل التبعيات . [ 46 ]

في نهاية عام ٢٠١٤، نُقل جزء كبير من كود Racket إلى نظام تغليف جديد منفصل عن قاعدة الكود الرئيسية. يُدار هذا النظام الجديد بواسطة برنامج عميل يُدعى raco . يوفر نظام التغليف الجديد ميزات أقل من PLaneT؛ يشرح منشورٌ على مدونة Racket بقلم جاي مكارثي الأساس المنطقي لهذا التغيير وكيفية محاكاة النظام القديم. [ ٤٧ ]

قابلية توسيع اللغة المتكاملة ووحدات الماكرو

أبرز ما يُميز لغة Racket عن غيرها من لغات عائلة Lisp هو خصائصها المتكاملة لتوسيع اللغة ، والتي تدعم بناء لغات جديدة مُخصصة لمجالات مُحددة ولغات عامة الأغراض . تُدمج خصائص توسيع Racket في نظام الوحدات النمطية، مما يسمح بالتحكم في بناء الجملة على مستوى الوحدة النمطية، مع مراعاة السياق . [ 18 ] على سبيل المثال، #%appيُمكن تجاوز الصيغة النحوية لتغيير دلالات تطبيق الدوال . وبالمثل، #%module-beginتسمح الصيغة بإجراء تحليل ثابت شامل للوحدة النمطية بأكملها. [ 18 ] وبما أن أي وحدة نمطية يُمكن استخدامها كلغة، عبر #langالترميز، فهذا يعني فعليًا إمكانية برمجة أي جانب من جوانب اللغة والتحكم فيه.

تُدمج ميزات قابلية التوسعة على مستوى الوحدة مع نظام ماكرو مُنظّم يُشبه نظام Scheme ، مما يوفر ميزات أكثر من نظام معالجة التعبيرات s في لغة Lisp ، [ 48 ] [ 49 ] أو وحدات الماكرو المُحسّنة لتوسيع بناء الجملة في Scheme 84، أو قواعد بناء الجملة في R5RS . في الواقع، يُمكن القول إن نظام الماكرو هذا عبارة عن واجهة برمجة تطبيقات (API) مُحسّنة بعناية لتوسيعات المُصرّف . باستخدام واجهة برمجة التطبيقات هذه، يُمكن للمبرمجين إضافة ميزات ولغات كاملة خاصة بمجال مُحدد بطريقة تجعلها غير قابلة للتمييز تمامًا عن بنيات اللغة المُدمجة.

استُخدم نظام الماكرو في لغة Racket لبناء لهجات لغوية كاملة . يشمل ذلك Typed Racket، وهي لهجة مُنمّطة تدريجيًا من Racket تُسهّل الانتقال من الشيفرة غير المُنمّطة إلى الشيفرة المُنمّطة، [ 50 ] وLazy Racket، وهي لهجة ذات تقييم كسول ، [ 51 ] وHackett، التي تجمع بين Haskell وRacket. [ 52 ] وقد طُبّقت لغة البرمجة التعليمية Pyret في الأصل باستخدام Racket. [ 53 ] [ 54 ]

تشمل اللهجات الأخرى FrTime ( البرمجة التفاعلية الوظيفية )، وScribble (لغة التوثيق)، [ 55 ] وSlideshow ( لغة العرض التقديمي )، [ 56 ] والعديد من اللغات المستخدمة في التعليم. [ 57 ] [ 58 ]

توفر التوزيعة الأساسية لـ Racket مكتباتٍ تُساعد في تطوير لغات البرمجة. [ 18 ] لا تقتصر هذه اللغات على بناء الجملة القائم على التعبيرات النصية. فبالإضافة إلى امتدادات بناء الجملة التقليدية القائمة على جداول القراءة، #langيُتيح التوجيه استدعاء مُحللات نحوية مُخصصة، يُمكن تنفيذها باستخدام مكتبة أدوات المُحلل النحوي. [ 59 ] انظر برمجة منطق Racket للاطلاع على مثالٍ على هذه اللغة.

بيئة البرمجة

توفر منصة اللغة بيئة تطوير متكاملة ذاتية الاستضافة [ 13 ] تُسمى DrRacket، وخادم ويب قائم على الاستمرارية [ 60 ] ، وواجهة مستخدم رسومية [ 23 ] ، وأدوات أخرى. وباعتبارها أداة برمجة نصية فعّالة مزودة بمكتبات مشابهة للغات البرمجة النصية الشائعة ، يمكن استخدامها لكتابة البرامج النصية في بيئة يونكس. كما يمكنها تحليل وسائط سطر الأوامر وتنفيذ أدوات خارجية.

بيئة تطوير DrRacket المتكاملة

يُستخدم برنامج DrRacket (المعروف سابقًا باسم DrScheme) على نطاق واسع في دورات علوم الحاسوب التمهيدية التي تُدرّس لغة Scheme أو Racket، ويُشيد به لبساطته وجاذبيته للمبرمجين المبتدئين. صُممت بيئة التطوير المتكاملة (IDE) في الأصل للاستخدام مع مشروع TeachScheme! (الذي يُعرف الآن باسم ProgramByDesign )، وهو جهد توعوي من جامعة نورث إيسترن وعدد من الجامعات التابعة لها لجذب طلاب المدارس الثانوية إلى دورات علوم الحاسوب على مستوى الجامعة.

يُوفر المُحرر ميزاتٍ مثل تمييز الأخطاء النحوية وأخطاء وقت التشغيل، ومطابقة الأقواس، ومُصحح الأخطاء ، وأداة تتبع العمليات الجبرية. وتشمل ميزاته المُلائمة للطلاب دعم مستويات لغوية مُتعددة (مبتدئ، متوسط، إلخ). كما يتضمن دعمًا مُتكاملًا للمكتبات، وأدوات تحليل مُتطورة للمُبرمجين المُتقدمين. بالإضافة إلى ذلك، يدعم البرمجة الموجهة بالوحدات النمطية من خلال مُستعرض الوحدات، وعرض مُخطط تفصيلي، واختبارات مُتكاملة، وقياسات التغطية ، ودعم إعادة هيكلة الكود . ويُوفر وصولًا مُتكاملًا وحساسًا للسياق إلى نظام مساعدة شامل مُرتبط بروابط تشعبية يُسمى "مكتب المساعدة".

يتوفر برنامج DrRacket لأنظمة التشغيل Windows و macOS و Unix و Linux مع نظام X Window ، وتتصرف البرامج بشكل مشابه على جميع هذه الأنظمة الأساسية.

أمثلة على التعليمات البرمجية

إليكم برنامج "مرحباً بالعالم!" بسيط :

#lang racket "مرحباً بالعالم!"

ينتج عن تشغيل هذا البرنامج المخرجات التالية:

"مرحبا بالعالم!"

إليكم برنامجًا أقل بساطة بعض الشيء:

نتيجة هذا البرنامج، كما هو موضح في DrRacket
#lang racket ( يتطلب 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:

لغة عامية مكتوبة / راكيت( : حقيقة ( عدد صحيح -> عدد صحيح )) ( تعريف ( حقيقة ن ) ( إذا ( صفر؟ ن ) 1 ( * ن ( حقيقة ( - ن 1 )))))

التطبيقات

يتوفر برنامج Racket حاليًا بنسختين. تدعم كلتاهما أنظمة Linux وWindows وMacOS على مجموعة متنوعة من البنى، وذلك حتى الإصدار 8.8 (2023). تستخدم النسخة الافتراضية مُصرّف Chez Scheme التزايدي وبيئة التشغيل. أما النسخة البديلة فتُنتج رمزًا وسيطًا مستقلًا عن النظام الأساسي، وتستخدم الترجمة الفورية لإنشاء رمز الآلة عند تحميله. [ 61 ]

بالإضافة إلى ذلك، توجد تطبيقات تجريبية:

  • RacketScript هو مُترجم تجريبي من لغة Racket إلى JavaScript (ES6). يسمح للمبرمجين باستخدام كلٍ من بيئة JavaScript وبيئة Racket، ويهدف إلى جعل هذا التوافق سلسًا قدر الإمكان. [ 62 ]
  • Pycket هو تطبيق Racket تم إنشاؤه باستخدام إطار عمل RPython. [ 63 ]

التطبيقات والاستخدام العملي

إلى جانب استنادها إلى نظرية لغات البرمجة ، صُممت لغة Racket كلغة عامة الأغراض لأنظمة الإنتاج. ولذلك، تتميز توزيعة Racket بمكتبة شاملة تغطي برمجة الأنظمة والشبكات، وتطوير الويب، [ 60 ] وواجهة موحدة لنظام التشغيل الأساسي، وواجهة ديناميكية للوظائف الخارجية ، [ 64 ] وأنواعًا متعددة من التعابير النمطية ، ومولدات المحلل المعجمي/المحلل النحوي، [ 59 ] والبرمجة المنطقية ، وإطار عمل كامل لواجهة المستخدم الرسومية .

يحتوي Racket على العديد من الميزات المفيدة للغة تجارية، من بينها القدرة على تجميع الملفات التنفيذية المستقلة تحت أنظمة Windows و macOS و Unix، ومحلل الأداء ومصحح الأخطاء المضمن في بيئة التطوير المتكاملة (IDE)، وإطار عمل لاختبار الوحدات .

استُخدمت لغة Racket في مشاريع تجارية وتطبيقات ويب. ومن الأمثلة البارزة على ذلك موقع Hacker News الإلكتروني، الذي يعمل على منصة Arc المطورة بلغة Racket. كما استخدمتها شركة Naughty Dog كلغة برمجة نصية في العديد من ألعاب الفيديو. [ 65 ]

تُستخدم لعبة Racket لتعليم الطلاب الجبر من خلال تصميم الألعاب في برنامج Bootstrap . [ 66 ]

انظر أيضاً

مراجع

  1. "الإصدار 9.2" . 28 مايو 2026. تم الاطلاع عليه بتاريخ 28 مايو 2026 .
  2. توبين-هوششتات، سام؛ جيرارد، سيج؛ ديوك، جويل؛ فلات، ماثيو ؛ مؤسسة حرية البرمجيات ؛ تشيستيك، باميلا (15 نوفمبر 2019). "استكمال جهود إعادة ترخيص راكيت" . تم الاطلاع عليه بتاريخ 27 ديسمبر 2019 .
  3. "ملفات DrRacket" . تم الاطلاع عليه بتاريخ 21 يوليو 2019. امتداد الملف القياسي لبرنامج Racket هو ".rkt". كما أن الامتدادات ".ss" و".scm" و".sch" شائعة الاستخدام تاريخيًا.
  4. ستريكلاند، تي إس؛ فيليسيسن، ماتياس (2010). "DLS 2010: عقود الدرجات الأولى" (PDF) .
  5. بونير-سيرجنت، أمبروز (2012). نظام نوع اختياري عملي للغة كلوجر (أطروحة). جامعة غرب أستراليا.
  6. "أسئلة حول بلانيت 2" .
  7. "قائمة مراجع Rust" . GitHub . 23 نوفمبر 2022.
  8. سبيربر، مايكل؛ ديبفيج، آر. كينت؛ فلات، ماثيو؛ فان ستراتن، أنطون؛ وآخرون . (أغسطس 2007). "التقرير السادس المنقح حول مخطط لغة الخوارزميات (R6RS)" . لجنة توجيه المخطط . تم الاطلاع عليه بتاريخ 13 سبتمبر 2011 . 
  9. 1 2 فيليسين، م.؛ فيندلر، ر.ب.؛ فلات، م.؛ كريشنامورثي، س.؛ بارزيلاي، إ.؛ مكارثي، ج.؛ توبين-هوششتات، س. (2015). "بيان المخالفة" (ملف PDF) . وقائع القمة الأولى حول التطورات في لغات البرمجة : 113-128 .
  10. "لهجات الابتزاز والمخطط" . تم الاطلاع عليه بتاريخ 15-08-2011 .
  11. "مرحباً بكم في راكيت" . تم الاطلاع عليه بتاريخ 15-05-2019 .
  12. 1 2 فلات؛ فيندلر؛ كريشنامورثي؛ فيليسين (1999). لغات البرمجة كنظم تشغيل (أو، انتقام ابن آلة ليسب) . المؤتمر الدولي للبرمجة الوظيفية.
  13. 1 2 3 فايندلر؛ كليمنتس؛ فلاناغان؛ فلات؛ كريشنامورثي؛ ستكلر؛ فيليسين (2001). "DrScheme: بيئة برمجة للغة Scheme" (ملف PDF) . مجلة البرمجة الوظيفية .
  14. فيليسين؛ فيندلر؛ فلات؛ كريشنامورثي (2004). "مشروع TeachScheme!: الحوسبة والبرمجة لكل طالب" . مجلة تعليم علوم الحاسوب .
  15. "نظرة عامة" . برنامج من تصميم. مؤرشف من الأصل بتاريخ 20-05-2013 . تم الاطلاع عليه بتاريخ 17-08-2011 .
  16. 1 2 3 فلات، م.؛ فيندلر، ر.ب.؛ فيليسين، م. (2006). "Scheme with Classes, Mixins, and Traits" (PDF) . الندوة الآسيوية حول لغات البرمجة والأنظمة .
  17. 1 2 فلات، م.؛ فيليسين، م. (1998). "الوحدات: وحدات رائعة للغات البرمجة الرائجة" . تصميم وتنفيذ لغات البرمجة .
  18. 1 2 3 4 توبين-هوششتات، س.؛ سانت-أمور، ف.؛ كولبيبر، ر.؛ فلات، م.؛ فيليسين، م. (2011). "اللغات كمكتبات" (ملف PDF) . تصميم وتنفيذ لغات البرمجة .
  19. ^ فيليسن، ماتياس. فيندلر، روبرت بروس. فلات، ماثيو. كريشنامورثي، شريرام؛ بارزيلاي، إيلي؛ مكارثي، جاي. توبين هوتشستات، سام (2018). "لغة برمجة قابلة للبرمجة" . اتصالات ACM . 61 (3): 62-71 . دوى : 10.1145/3127323 . S2CID 3887010 . 
  20. "راكت: ترخيص البرمجيات" . تم الاطلاع عليه بتاريخ 20-10-2015 .
  21. "الفريق" . مضرب . تم الاسترجاع في 25 أبريل 2026 .
  22. بنسون، برنت دبليو. الابن (26-28 أكتوبر 1994). "libscheme: Scheme كمكتبة C" . كُتب في سانتا فيه، نيو مكسيكو. وقائع ندوة USENIX حول لغات البرمجة عالية المستوى جدًا . بيركلي، كاليفورنيا: جمعية USENIX. الصفحات 7-19 . ISBN  978-1880446652تم الاطلاع عليه بتاريخ 7 يوليو 2013 .
  23. 1 2 3 "إعادة بناء طبقة الرسومات في لعبة Racket" . 2010-12-08 . تم الاطلاع عليه بتاريخ 2017-12-11 .
  24. كليمنتس، ج.؛ فلات، م.؛ فيليسين، م. (2001). "نمذجة خوارزمية الخطوات الجبرية" (ملف PDF) . الندوة الأوروبية حول لغات البرمجة .
  25. ١ ٢ ٣ "ملاحظات إصدار Racket Core" . مؤرشف من الأصل بتاريخ 2013-07-05 . تم الاطلاع عليه بتاريخ 2012-04-15 .
  26. فلات، م. (2002). "وحدات الماكرو القابلة للتركيب والترجمة". المؤتمر الدولي حول البرمجة الوظيفية .
  27. "مخطط PLT الإصدار 4.0" . 12-06-2008. مؤرشف من الأصل في 02-02-2013 . تم الاطلاع عليه في 07-08-2012 .
  28. "من مخطط PLT إلى لعبة المراهنات" . Racket-lang.org . تم الاطلاع عليه بتاريخ 17-08-2011 .
  29. "المضارب 5.2" . شركة PLT، 9 نوفمبر 2011. تم الاطلاع عليه بتاريخ 16 يونيو 2012 .
  30. "الوحدات الفرعية" . 2012-06-03 . تم الاسترجاع في 2012-08-07 .
  31. "المضارب 5.3" . شركة PLT، 2012-08-07 . تم الاطلاع عليه بتاريخ 2012-08-07 .
  32. "المضارب 5.3.1" . شركة PLT، 2012-11-07 . تم الاطلاع عليه بتاريخ 2012-11-07 .
  33. "مضرب 6.0" . شركة PLT، 26 فبراير 2014. تم الاطلاع عليه بتاريخ 23 فبراير 2016 .
  34. "حالة الابتزاز في مطعم شيز: يناير 2018" . 5 يناير 2018. مؤرشف من الأصل في 28 يونيو 2018. تم الاطلاع عليه في 13 أبريل 2018 .
  35. فلات، ماثيو؛ ديريتشي، كانر؛ ديبفيج، آر. كينت؛ كيب، أندرو دبليو؛ ماساتشيسي، جوستافو إي؛ سبال، سارة؛ توبين-هوششتات، سام؛ زيبيري، جون (2019-07-26). "إعادة بناء Racket على Chez Scheme (تقرير تجريبي)" . وقائع مؤتمر ACM حول لغات البرمجة . 3 (ICFP): 1-15 . doi : 10.1145/3341642 . ISSN 2475-1421 . 
  36. "إصدار Racket 7.5" . Packt Hub . 22 نوفمبر 2019. تم الاطلاع عليه بتاريخ 28 نوفمبر 2019 .
  37. "Racket v7.5" . Racket | مدونة . تم الاطلاع عليه بتاريخ 28-11-2019 .
  38. "Racket v8.0" .
  39. فلات، م.؛ يو، ج.؛ فيندلر، ر.ب.؛ فيليسين، م. (2007). "إضافة تحكم محدد وقابل للتركيب إلى بيئة برمجة إنتاجية" (ملف PDF) . المؤتمر الدولي للبرمجة الوظيفية .
  40. "العقود" .
  41. "خيوط" .
  42. "المستقبل" .
  43. "الأماكن" .
  44. فلات، ماثيو (2012). "ابتكار لغات في راكيت" . اتصالات رابطة آلات الحوسبة . تم الاسترجاع في 8 أبريل 2012 .
  45. فايندلر، آر بي؛ فيليسين، إم. (2002). "عقود الدوال ذات الرتبة العليا" (ملف PDF) . المؤتمر الدولي للبرمجة الوظيفية .
  46. ماثيوز، ج. (2006). "نشر المكونات باستخدام PLaneT: أين تريدها؟". ورشة عمل برمجة Scheme والبرمجة الوظيفية .
  47. "نظام حزمة راكيت وكوكب" .
  48. فلات، ماثيو (2002). "وحدات الماكرو القابلة للتركيب والترجمة، متى تريدها؟" (ملف PDF) . المؤتمر الدولي للبرمجة الوظيفية .
  49. فلات، كولبيبر، دارايس، فيندلر، وحدات الماكرو التي تعمل معًا؛ روابط وقت الترجمة، والتوسيع الجزئي، وسياقات التعريف
  50. توبين-هوششتات، س.؛ فيليسين، م. (2008). "تصميم وتنفيذ لغة سكيم المكتوبة". مبادئ لغات البرمجة .
  51. بارزيلاي، إي.؛ كليمنتس، ج. (2005). "الكسل بدون كل العمل الشاق: الجمع بين لغات البرمجة الكسولة والصارمة للتدريس". البرمجة الوظيفية والتصريحية في التعليم .
  52. "لغة برمجة هاكيت" . مدونة أليكسيس كينغ . تم الاطلاع عليه بتاريخ 16 يونيو 2019 .
  53. فريق بايرت (24 مايو 2011). "شفرة بايرت؛ أو الأساس المنطقي للغة برمجة بايرت" . بايرت . تم الاسترجاع في 16 يونيو 2019 .
  54. "البرمجة ولغات البرمجة" . فهرس / . 20 سبتمبر 2017. تم الاطلاع عليه في 16 يونيو 2019 .
  55. فلات، م.؛ بارزيلاي، إ.؛ فيندلر، ر.ب. (2009). "سكريبيل: إغلاق الكتاب حول أدوات التوثيق المخصصة". المؤتمر الدولي للبرمجة الوظيفية .
  56. فايندلر، آر بي؛ فلات، إم. (2004). "عرض الشرائح: العروض التقديمية الوظيفية". المؤتمر الدولي حول البرمجة الوظيفية .
  57. فيليسين، م.؛ فيندلر، ر.ب.؛ فلات، م.؛ كريشنامورثي، س. (2009). "نظام إدخال/إخراج وظيفي (أو متعة لطلاب السنة الأولى)" (ملف PDF) . المؤتمر الدولي للبرمجة الوظيفية .
  58. فيليسين، م.؛ فيندلر، ر.ب.؛ فلات، م.؛ كريشنامورثي، س. (2004). "بنية وتفسير منهج علوم الحاسوب" (ملف PDF) . مجلة البرمجة الوظيفية . 14 (4): 365-378 . doi : 10.1017/S0956796804005076 .
  59. 1 2 "أدوات التحليل: تحليل lex و yacc" . تم الاسترجاع في 16-08-2011 .
  60. 1 2 كريشنامورثي، هوبكنز؛ مكارثي؛ غراونكي؛ بيتيجون؛ فيليسين (2007). "تنفيذ واستخدام خادم الويب PLT Scheme" (ملف PDF) . مجلة البرمجة الرمزية والبرمجة من الرتبة العليا . 20 (4): 431-460 . doi : 10.1007/s10990-007-9008-y . S2CID 17731194 . 
  61. التطبيقات
  62. RacketScript
  63. بيكيت
  64. بارزيلاي، إي.؛ أورلوفسكي، د. (2004). "واجهة خارجية لـ PLT Scheme" (ملف PDF) . Scheme والبرمجة الوظيفية .
  65. "لغات برمجة mzScheme الوظيفية في تطوير الألعاب" . تم الاطلاع عليه بتاريخ 2012-05-08 .
  66. "Bootstrap" . bootstrapworld.org . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .

للمزيد من القراءة

19581960196519701975198019851990199520002005201020152020
 LISP 1، 1.5، LISP 2 (مهجورة)
 ماكليس
 تداخل
 MDL
 آلة التأتأة
 مخطط R5RS R6RS R7RS صغير
 لا شيء
 ZIL (لغة تنفيذ Zork)
 فرانز ليسب
 muLisp
 لغة الشفرة الشائعة معيار ANSI
 لي لِسْب
 مخطط معهد ماساتشوستس للتكنولوجيا
 XLISP
 تي
 شيز سكيم
 إيماكس ليسب
 أوتو ليسب
 PicoLi sp
 غامبيت
 EuLisp
 لغة ISLISP
 أوبن ليسب
 مخطط PLT مضرب
 لغة نيو ليسب
 جنو غايل
 لغة ليسب المرئية
 كلوجر
 قوس
 LFE
 هي