ريزون (لغة برمجة)

Reason ، المعروفة أيضًا باسم ReasonML ، هي لغة برمجة ومجموعة أدوات تُعد جزءًا من نظام لغة البرمجة OCaml . تستخدم Reason العديد من عناصر بناء الجملة من JavaScript ، وتُترجم إلى كود أصلي باستخدام مجموعة أدوات الترجمة الخاصة بـ OCaml ، ويمكن ترجمتها إلى JavaScript باستخدام مترجم Melange . [ 3 ]

خصائص اللغة

بما أن لغة Reason هي صيغة بديلة للغة OCaml، فإنهما تشتركان في نفس الخصائص. كلتا اللغتين عامتان الأغراض ، [ 4 ] وظيفيتان وموجهتان للكائنات . [ 5 ]

على الرغم من أن لغة Reason تُترجم إلى كود أصلي باستخدام مجموعة أدوات OCaml، إلا أنها تختلف تحديدًا في تركيبها النحوي، ورسائل الخطأ ، وأدوات التحرير. وهذا ما يُمكّن Reason من توفير تجربة أقرب إلى JavaScript أو TypeScript للمطورين.

تتشابه بنية لغة Reason مع لغة JavaScript وغيرها من اللغات المشابهة للغة C أكثر من تشابهها مع لغة OCaml. فعلى سبيل المثال، تميل Reason إلى استخدام الأقواس المعقوفة لفصل الكتل [ 6 ] والفواصل المنقوطة لفصل العبارات [ 7 بينما تستخدم OCaml بشكل أساسي الأقواس أو beginالكلمات endالمفتاحية / لفصل الكتل [ 8 ] ، دون أي فاصل بين التصريحات. كما تُعرّف Reason الدوال باستخدام بنية تشبه السهم (بدلاً من funالكلمة المفتاحية في OCaml) [ 6 ] ، ويتطلب استدعاء دالة وضع أقواس حول وسائطها [ 9 ] . ومن الاختلافات البارزة الأخرى تسمية الكلمة المفتاحية لمطابقة الأنماطswitch (بدلاً من match[ 10 ] وإعادة تنسيق رسائل الخطأ لتكون أكثر ألفة لمبرمجي JavaScript [ 11 ] .

يُقدّم مجتمع Reason رسميًا ReasonReact كحل لتطبيقات الويب المبنية على إطار عمل React . [ 12 ] [ 13 ]

مثال

نوع شخص المدرسة = معلم | مدير | طالب ( سلسلة نصية let greeting = person => switch ( person ) { | Teacher => "مرحباً أستاذ!" | Director => "مرحباً مدير." | Student ( "Richard" ) => "هل ما زلت هنا يا ريكي؟" | Student ( anyOtherName ) => "مرحباً، " ++ anyOtherName ++ "." };

تاريخ

أصدر جوردان والكي، مبتكر إطار عمل الويب React ، برنامج Reason لأول مرة في عام 2016 أثناء عمله في شركة فيسبوك . [ 1 ] [ 14 ] [ 15 ]

في العام نفسه، قدمت شركة بلومبيرغ إل بي برنامج BuckleScript، وهو مُترجم يُترجم لغة OCaml إلى JavaScript. [ 16 ] وبما أن كلا المشروعين تأثرا بلغة JavaScript، فقد أصبح Reason و BuckleScript مجموعة أدوات متكاملة، مما سمح لبرنامج Reason باستهداف JavaScript. [ 17 ] [ 18 ]

مع ذلك، كانت أولويات فريق Reason وفريق BuckleScript مختلفة. فقد أراد فريق Reason الحفاظ على التوافق مع بيئة OCaml، بينما أراد فريق BuckleScript القدرة على تغيير الصيغة البرمجية لتوفير أفضل تجربة تطوير لمبرمجي JavaScript. [ 18 ]

في عام 2020، قدمت BuckleScript صيغة جديدة بدأت تختلف عن Reason. [ 19 ] وبعد شهر، أعاد فريق BuckleScript تسمية مجموعة أدواته إلى ReScript ، للتركيز حصراً على بيئة JavaScript، لتصبح بذلك لغة مستقلة تماماً عن Reason. [ 20 ] [ 21 ]

للحفاظ على قدرة Reason على استهداف JavaScript، قام أنطونيو مونتيرو بتعديل نسخة من BuckleScript قبل إعادة تسميتها إلى ReScript، وجعلها أقرب إلى بيئة OCaml. أُطلق على هذه النسخة المعدلة اسم Melange، وأصدرت أول إصدار مستقر لها في عام 2023. [ 22 ] [ 23 ]

انظر أيضاً

  • إلم – لغة وظيفية تستخدم تجريدًا يسمى المنافذ للتواصل مع جافا سكريبت
  • بيور سكريبت - لغة برمجة وظيفية بحتة ذات كتابة قوية، تُترجم إلى جافا سكريبت

مراجع

  1. 1 2 والكي، جوردان (16 مايو 2016). "الإصدار الأولي: reasonml/reason" . جيت هاب . تم الاسترجاع في 22 ديسمبر 2025 .
  2. "الإصدار 3.18.0" . 23 يونيو 2026. تم الاطلاع عليه في 24 يونيو 2026 .
  3. "Melange" . وثائق Reason . تم الاسترجاع في 20 ديسمبر 2025 .
  4. رفعت بناه، رافائيل؛ ديميلو، برونو جوزيف (28 فبراير 2019). دليل البدء السريع لـ ReasonML . دار نشر Packt. ص 6. 
  5. إيزنبرغ، ج. ديفيد (9 أبريل 2019). تطوير الويب باستخدام ReasonML . دار النشر براغماتيك بوكشيلف. ص 170. 
  6. 1 2 Eisenberg 2019 ، ص. 15.
  7. أيزنبرغ 2019 ، ص 1-4.
  8. "لغة OCaml - التعبيرات بين قوسين" . ocaml.org . تم الاطلاع عليه في 30 سبتمبر 2025 .
  9. دي سيمون، سيرجيو (10 نوفمبر 2017). "فيسبوك يُجري تغييرات جذرية على صيغة ReasonML في Reason 3" . InfoQ . C4Media . تاريخ الاسترجاع: 3 يناير 2026 .
  10. رفعت بناه وديميلو 2019 ، ص 17.
  11. "رسائل خطأ أفضل بكثير!" . ريزون . 25 أغسطس 2017. تم الاطلاع عليه في 3 يناير 2026 .
  12. الصفحة الرئيسية لـ ReasonReact
  13. رفعت بناه وديميلو 2019 ، ص. 1.
  14. مؤتمر ReasonConf (29 نوفمبر 2019). جوردان والكي - رد الفعل على المستقبل (فيديو) . تم الاطلاع عليه في 21 ديسمبر 2025 عبر يوتيوب.
  15. "السبب" . فيسبوك. مؤرشف من الأصل في 17 مايو 2016.
  16. "باكل سكريبت: الإصدار 1.0 متوفر الآن!" . بلومبيرغ . 8 سبتمبر 2016. تم الاطلاع عليه بتاريخ 21 ديسمبر 2025 .
  17. "لماذا ميلانج؟" . موقع توثيق ميلانج . تم الاطلاع عليه بتاريخ 21 ديسمبر 2025 .
  18. 1 2 تشانغ، هونغبو (7 فبراير 2021). "تاريخ موجز لـ ReScript (BuckleScript)" . خطاب OCaml . تم الاسترجاع في 21 ديسمبر 2025 .
  19. لو، تشنغ (1 يوليو 2020). "صيغة جديدة لـ BuckleScript" . ReScript . تم الاسترجاع في 21 ديسمبر 2025 .
  20. فريق ReScript (10 أغسطس 2020). "إعادة تسمية BuckleScript و Reason" . ReScript . تم الاطلاع عليه في 11 سبتمبر 2022 .
  21. يانغ، داني (ديسمبر 2022). "مقدمة". تقديم ReScript: البرمجة الوظيفية لتطبيقات الويب . Apress.
  22. مونتيرو، أنطونيو (2 يونيو 2023). "ملخص: ميلانج 1.0 - ترجمة OCaml / ReasonML إلى جافا سكريبت" . OCaml . تم الاطلاع عليه في 24 مايو 2024 .
  23. ^ مونتيرو ، أنطونيو (2 يونيو 2023). "ميلانج 1.0 هنا" . تم الاسترجاع في 21 ديسمبر 2025 .