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

مضرب
DrRacket على لينكس
نموذجمتعدد النماذج : وظيفي ، إلزامي ، منطقي ، ميتافيزيقي ، معياري ، موجه نحو الكائنات ، تأملي
عائلةليثغة
صمم بواسطةشركة بي ال تي
المطورشركة بي ال تي
ظهرت لأول مرة28 يناير 1995 ؛ منذ 29 عامًا ( 1995-01-28 )
إصدار مستقر
8.14 [1]  / 19 أغسطس 2024 ؛ منذ 38 يومًا ( 19 أغسطس 2024 )
انضباط الطباعةديناميكي ، ثابت ، قوي
منصةx86 ، PowerPC ، SPARC ، MIPS ، ARM
نظام التشغيلمتعدد المنصات
رخصةمعهد ماساتشوستس للتكنولوجيا أو أباتشي 2.0 [2]
ملحقات اسم الملف.ركت [3]
موقع إلكترونيمضرب-lang.org
التنفيذات الرئيسية
Racket، RacketScript، مُجمِّع Racket to JavaScript (ES6)، Pycket، تنفيذ Racket باستخدام RPython.
اللهجات
مضرب مطبوع، FrTime، مضرب كسول، خربشة
متأثر بـ
إيفل ، [4] مخطط
متأثر
Clojure ، [5] Rust ، [6] [7] Scheme (R6RS) [8]

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

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

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

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

تاريخ

تطوير

أسس ماثياس فيليسن شركة PLT Inc. في منتصف التسعينيات، في البداية كمجموعة بحثية، وبعد فترة وجيزة كمشروع مخصص لإنتاج المواد التربوية للمبرمجين المبتدئين (محاضرات، تمارين/مشاريع، برامج). في يناير 1995، قررت المجموعة تطوير بيئة برمجة تربوية تعتمد على Scheme . قام ماثيو فلات بتجميع MrEd، الآلة الافتراضية الأصلية لـ Racket، من libscheme، [21] و wxWidgets ، وعدد قليل من الأنظمة المجانية الأخرى. [22] في السنوات التي تلت ذلك، أنتج فريق يضم Flatt و Robby Findler و Shriram Krishnamurthi وCormac Flanagan والعديد من الآخرين DrScheme، وهي بيئة برمجة لمبرمجي Scheme المبتدئين وبيئة بحث للكتابة الناعمة . [13] كانت لغة التطوير الرئيسية التي يدعمها DrScheme تسمى PLT Scheme.

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

على مدار السنوات التالية، أضافت PLT لغات التدريس، ومحركًا جبريًا، [23] وحلقة شفافة للقراءة والتقييم والطباعة ، وطابعة تعتمد على المنشئ، والعديد من الابتكارات الأخرى إلى DrScheme، مما أدى إلى إنتاج بيئة تطوير برامج تربوية عالية الجودة. وبحلول عام 2001، كتب الفريق الأساسي (Felleisen وFindler وFlatt وKrishnamurthi) ونشر أول كتاب مدرسي لهم، How to Design Programs ، استنادًا إلى فلسفتهم التعليمية.

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

تاريخ الإصدار

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

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

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

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

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

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

تم إصدار الإصدار 7 من Racket مع موسع ماكرو جديد مكتوب بلغة Racket كجزء من الاستعدادات لدعم الانتقال إلى نظام تشغيل Chez Scheme ودعم أنظمة تشغيل متعددة. [33] [34] في 19 نوفمبر 2019، تم إصدار Racket 7.5. كان ترخيص Racket 7.5 أقل تقييدًا. يستخدمون الآن إما ترخيص Apache 2.0 أو ترخيص MIT. [35] [36]

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

سمات

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

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

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

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

في نهاية عام 2014، تم نقل جزء كبير من كود Racket إلى نظام حزم جديد منفصل عن قاعدة الكود الرئيسية. يتم خدمة نظام الحزم الجديد هذا بواسطة برنامج عميل يسمى raco . يوفر نظام الحزم الجديد ميزات أقل من PLaneT؛ تشرح إحدى منشورات المدونة التي كتبها Jay McCarthy على مدونة Racket الأساس المنطقي للتغيير وكيفية تكرار النظام الأقدم. [46]

إمكانية توسيع اللغة المتكاملة والماكرو

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

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

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

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

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

بيئة البرمجة

توفر منصة اللغة بيئة تطوير متكاملة ذاتية الاستضافة [13] تسمى DrRacket، وخادم ويب قائم على الاستمرارية ، [59] وواجهة مستخدم رسومية ، [22] وأدوات أخرى. كأداة برمجة نصية قابلة للتطبيق مع مكتبات مثل لغات البرمجة النصية الشائعة ، يمكن استخدامها لبرمجة غلاف Unix. يمكنها تحليل وسيطات سطر الأوامر وتنفيذ أدوات خارجية.

برنامج DrRacket IDE

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

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

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

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

فيما يلي برنامج بسيط بعنوان "مرحبا بالعالم!" :

#lang Racket 
"مرحبا بالعالم!"

يؤدي تشغيل هذا البرنامج إلى إنتاج الناتج التالي:

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

وهنا برنامج أقل بساطة إلى حد ما:

نتيجة هذا البرنامج كما هو موضح في DrRacket
#lang Racket 
( يتطلب 2htdp/image ) 

( دع سيربينسكي ([ n 8 ]) ( إذا كان ( صفر؟ n ) ( مثلث 2 ' متصل ' أحمر ) ( دع ([ t ( سيربينسكي ( - n 1 ))]) ( تجمد ( فوق t ( بجانب t t ))))))   
    
       
         
           

يقوم هذا البرنامج، المأخوذ من موقع Racket، برسم مثلث Sierpinski ، متداخلاً على عمق 8.

باستخدام #langالتوجيه، يمكن كتابة ملف المصدر بلغات مختلفة من Racket. فيما يلي مثال لبرنامج العوامل في Typed Racket، وهي لهجة مكتوبة بشكل ثابت من Racket:

#lang مكتوب/مضرب

( : حقيقة ( عدد صحيح -> عدد صحيح )) ( حدد ( حقيقة n ) ( إذا ( صفر؟ n ) 1 ( * n ( حقيقة ( - n 1 )))))    
  
           

التنفيذات

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

بالإضافة إلى ذلك، هناك تنفيذات تجريبية:

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

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

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

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

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

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

مراجع

  1. ^ "Racket v8.14". 19 أغسطس 2024. تم الاسترجاع 12 أغسطس 2024 .
  2. ^ توبين-هوشستادت، سام؛ جيرارد، سيج؛ دويك، جويل؛ فلات، ماثيو ؛ منظمة الحفاظ على حرية البرمجيات ؛ تشيستيك، باميلا (2019-11-15). "إكمال جهود راكيت لإعادة الترخيص" . تم الاسترجاع في 2019-12-27 .
  3. ^ "ملفات DrRacket" . تم الاسترجاع في 21 يوليو 2019. الامتداد القياسي لملف برنامج Racket هو ".rkt". الامتدادات ".ss" و".scm" و".sch" شائعة أيضًا تاريخيًا.
  4. ^ ستريك لاند، تي إس؛ فيليسيسن، ماتياس (2010). "DLS 2010: عقود للدرجات الأولى" (PDF) .
  5. ^ Bonnaire-Sergeant, Ambrose (2012). نظام نوع اختياري عملي للغة Clojure (أطروحة). جامعة غرب أستراليا.
  6. ^ "أسئلة Planet2".
  7. ^ "قائمة ببليوغرافية Rust". GitHub . 23 نوفمبر 2022.
  8. ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. (August 2007). "تقرير منقح6 عن مخطط اللغة الخوارزمية (R6RS)". لجنة توجيه المخطط . تم الاسترجاع في 2011-09-13 .
  9. ^ ab Felleisen, M.; Findler, RB; Flatt, M.; Krishnamurthi, S.; Barzilay, E.; McCarthy, J.; Tobin-Hochstadt, S. (2015). "بيان راكيت" (PDF) . وقائع القمة الأولى للتقدم في لغات البرمجة : 113-128.
  10. ^ "لهجات المضرب والمخطط" . تم الاسترجاع في 2011-08-15 .
  11. ^ "مرحبًا بكم في Racket" . تم الاسترجاع في 2019-05-15 .
  12. ^ ab Flatt؛ Findler؛ Krishnamurthi؛ Felleisen (1999). لغات البرمجة كأنظمة تشغيل (أو انتقام ابن آلة Lisp) . المؤتمر الدولي حول البرمجة الوظيفية.
  13. ^ abc Findler؛ Clements؛ Flanagan؛ Flatt؛ Krishnamurthi؛ Steckler؛ Felleisen (2001). "DrScheme: بيئة برمجة لـ Scheme" (PDF) . مجلة البرمجة الوظيفية .
  14. ^ فيليزن؛ فيندلر؛ فلات؛ كريشنامورثي (2004). "مشروع TeachScheme!: الحوسبة والبرمجة لكل طالب". مجلة تعليم علوم الكمبيوتر .
  15. ^ "نظرة عامة". برنامج حسب التصميم . تم استرجاعه في 2011-08-17 .
  16. ^ abc Flatt, M.; Findler, RB; Felleisen, M. (2006). "Scheme with Classes, Mixins, and Traits" (PDF) . الندوة الآسيوية حول لغات البرمجة والأنظمة .
  17. ^ ab Flatt, M.; Felleisen, M. (1998). "الوحدات: وحدات رائعة للغات رائجة". تصميم وتنفيذ لغات البرمجة .
  18. ^ abcd Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "اللغات كمكتبات" (PDF) . تصميم وتنفيذ لغة البرمجة .
  19. ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (2018). "لغة برمجة قابلة للبرمجة". Communications of the ACM . 61 (3): 62–71. doi :10.1145/3127323. S2CID  3887010.
  20. ^ "Racket: ترخيص البرمجيات" . تم الاسترجاع في 2015-10-20 .
  21. ^ Benson, Brent W. Jr. (26–28 October 1994). "libscheme: Scheme as a C Library". كُتب في سانتا في، نيو مكسيكو. وقائع ندوة USENIX حول اللغات عالية المستوى للغاية . بيركلي، كاليفورنيا: رابطة USENIX. ص. 7-19. ISBN 978-1880446652تم الاسترجاع بتاريخ 7 يوليو 2013 .
  22. ^ abc "إعادة بناء طبقة الرسومات في Racket". 2010-12-08 . تم الاسترجاع في 2017-12-11 .
  23. ^ Clements, J.; Flatt, M.; Felleisen, M. (2001). "نمذجة محرك متدرج جبري" (PDF) . الندوة الأوروبية حول لغات البرمجة .
  24. ^ abc "ملاحظات إصدار Racket Core". مؤرشف من الأصل في 2013-07-05 . تم الاسترجاع في 2012-04-15 .
  25. ^ Flatt, M. (2002). "الماكرو القابلة للتكوين والتجميع". المؤتمر الدولي حول البرمجة الوظيفية .
  26. ^ "PLT Scheme version 4.0". 2008-06-12. مؤرشف من الأصل في 2013-02-02 . تم الاسترجاع في 2012-08-07 .
  27. ^ "من مخطط PLT إلى Racket". Racket-lang.org . تم الاسترجاع في 2011-08-17 .
  28. ^ "Racket 5.2". PLT, Inc. 2011-11-09 . تم الاسترجاع في 2012-06-16 .
  29. ^ "Submodules". 2012-06-03 . تم الاسترجاع 2012-08-07 .
  30. ^ "Racket 5.3". PLT, Inc. 2012-08-07 . تم الاسترجاع في 2012-08-07 .
  31. ^ "Racket 5.3.1". PLT, Inc. 2012-11-07 . تم الاسترجاع في 2012-11-07 .
  32. ^ "Racket 6.0". PLT, Inc. 2014-02-26 . تم الاسترجاع 2016-02-23 .
  33. ^ "Racket-on-Chez Status: January 2018". 2018-01-05. مؤرشف من الأصل في 2018-06-28 . تم الاسترجاع 2018-04-13 .
  34. ^ "بناء مخطط Racket on Chez (تقرير التجربة)" (PDF) . 2019-08-01 . تم الاسترجاع في 2019-07-25 .
  35. ^ "إصدار Racket 7.5". Packt Hub . 22 نوفمبر 2019 . تم الاسترجاع في 2019-11-28 .
  36. ^ "Racket v7.5". Racket | مدونة . تم الاسترجاع في 2019-11-28 .
  37. ^ "Racket v8.0".
  38. ^ Flatt, M.; Yu, G.; Findler, RB; Felleisen, M. (2007). "إضافة عناصر تحكم محددة وقابلة للتكوين إلى بيئة برمجة الإنتاج" (PDF) . المؤتمر الدولي للبرمجة الوظيفية .
  39. ^ "العقود".
  40. ^ "الخيوط".
  41. ^ "المستقبل".
  42. ^ "الأماكن".
  43. ^ Flatt, Matthew (2012). "إنشاء اللغات في Racket". Communications of the ACM . تم الاسترجاع في 2012-04-08 .
  44. ^ Findler, RB; Felleisen, M. (2002). "Contracts for Higher-Order Functions" (PDF) . المؤتمر الدولي حول البرمجة الوظيفية .
  45. ^ ماثيوز، ج. (2006). "نشر المكونات باستخدام PLaneT: أين تريد ذلك؟". ورشة عمل البرمجة الوظيفية والمخططات .
  46. ^ "نظام حزمة Racket و Planet".
  47. ^ Flatt, Matthew (2002). "الماكرو القابلة للتكوين والتجميع، متى تريدها؟" (PDF) . المؤتمر الدولي للبرمجة الوظيفية .
  48. ^ Flatt, Culpepper, Darais, Findler, وحدات الماكرو التي تعمل معًا؛ ارتباطات وقت التجميع، والتوسع الجزئي، وسياقات التعريف
  49. ^ توبين-هوشستادت، س.؛ فيليزن، م. (2008). "تصميم وتنفيذ المخططات المكتوبة". مبادئ لغات البرمجة .
  50. ^ بارزيلاي، إي.؛ كليمنتس، جيه. (2005). "الكسل دون كل العمل الشاق: الجمع بين اللغات الكسولة والصارمة للتدريس". البرمجة الوظيفية والتقريرية في التعليم .
  51. ^ "لغة برمجة هاكيت". مدونة أليكسيس كينج . تم الاسترجاع في 16 يونيو 2019 .
  52. ^ The Pyret Crew (24 مايو 2011). "The Pyret Code؛ or A Rationale for the Pyret Programming Language". Pyret . تم الاسترجاع في 16 يونيو 2019 .
  53. ^ "البرمجة ولغات البرمجة". فهرس / . 20 سبتمبر 2017 . تم الاسترجاع 16 يونيو 2019 .
  54. ^ Flatt, M.; Barzilay, E.; Findler, RB (2009). "Scribble: إغلاق كتاب أدوات التوثيق المخصصة". المؤتمر الدولي حول البرمجة الوظيفية .
  55. ^ Findler, RB; Flatt, M. (2004). "عرض الشرائح: العروض التقديمية الوظيفية". المؤتمر الدولي حول البرمجة الوظيفية .
  56. ^ Felleisen, M.; Findler, RB; Flatt, M.; Krishnamurthi, S. (2009). "نظام الإدخال والإخراج الوظيفي (أو المتعة لطلاب السنة الأولى)" (PDF) . المؤتمر الدولي حول البرمجة الوظيفية .
  57. ^ Felleisen, M.; Findler, RB; Flatt, M.; Krishnamurthi, S. (2004). "The Structure and Interpretation of the Computer Science Curriculum" (PDF) . مجلة البرمجة الوظيفية . 14 (4): 365–378. doi :10.1017/S0956796804005076.
  58. ^ "أدوات التحليل: التحليل بأسلوب lex وyacc" . تم الاسترجاع في 2011-08-16 .
  59. ^ ab Krishnamurthi, Hopkins; McCarthy; Graunke; Pettyjohn; Felleisen (2007). "تنفيذ واستخدام خادم الويب PLT Scheme" (PDF) . مجلة البرمجة الرمزية والبرمجة من الدرجة الأعلى . 20 (4): 431–460. doi :10.1007/s10990-007-9008-y. S2CID  17731194.
  60. ^ التنفيذات
  61. ^ راكيت سكريبت
  62. ^ بايكيت
  63. ^ بارزيلاي، إي.؛ أورلوفسكي، دي. (2004). "واجهة خارجية لمخطط PLT" (ملف PDF) . المخطط والبرمجة الوظيفية .
  64. ^ "DSLs الوظيفية لـ mzScheme في تطوير الألعاب" . تم الاسترجاع في 2012-05-08 .
  65. ^ "Bootstrap". bootstrapworld.org . تم الاسترجاع في 2015-08-11 .

قراءة إضافية

  • فيليسن وآخرون ، 2013. عالم المضارب. لا مكبس النشا.
  • فيليسن وآخرون ، 2003. كيفية تصميم البرامج . مطبعة معهد ماساتشوستس للتكنولوجيا.
  • الموقع الرسمي
1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
 LISP 1، 1.5، LISP 2 (مهجورة)
 ماكليسب
 إنترليسب
 مدل
 آلة ليسب ليسب
 مخطط  ر5 ار اس  ر6 ار اس  R7RS صغيرة
 لا شيء
 ZIL (لغة تنفيذ Zork)
 فرانز ليسب
 اللغة الشائعة  معيار ANSI
 اللغة الليسبية
 مخطط معهد ماساتشوستس للتكنولوجيا
 إكسليسب
 ت
 مخطط شيز
 إيماكس ليسب
 أوتوليسب
 بيكوليسب
 غامبيت
 يوليسب
 إيسليب
 أوبن ليسب
 مخطط PLT  مضرب
 لغة ليسب الجديدة
 جنو جايل
 لغة ليسب المرئية
 كلوجور
 قوس
 ل ف إ
 هاى
 شياليسب
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Racket_(لغة_برمجة)&oldid=1221267905"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate