ريبول
ريبول ( تُلفظ / ˈrɛbəl / ، تاريخيًا REBOL ) هي لغة تبادل بيانات متعددة المنصات [ 6 ] ولغة برمجة ديناميكية متعددة الأنماط ، صممها كارل ساسنراث للاتصالات الشبكية والحوسبة الموزعة . تُقدم ريبول مفهوم اللهجات : لغات صغيرة ومُحسّنة ومُخصصة لمجال معين ، تُستخدم لكتابة التعليمات البرمجية والبيانات [ 6 ] [ 7 ] ، وهي أيضًا أبرز خصائص اللغة وفقًا لمصممها كارل ساسنراث .
على الرغم من إمكانية استخدامها في البرمجة وكتابة الدوال وتنفيذ العمليات، إلا أن أعظم نقاط قوتها تكمن في قدرتها على إنشاء لغات أو لهجات خاصة بمجال معين بسهولة.
— كارل ساسنراث [ 8 ]
وصف دوغلاس كروكفورد ، المعروف بمشاركته في تطوير جافا سكريبت ، لغة ريبول بأنها "لغة أكثر حداثة، ولكنها تحتوي على بعض الأفكار المشابهة جدًا للغة ليسب ، حيث أنها مبنية بالكامل على تمثيل للبيانات يمكن تنفيذه كبرامج" وأنها أحد المؤثرات على JSON . [ 5 ]
في الأصل، كانت اللغة وتطبيقها الرسمي ملكية خاصة ومغلقة المصدر، طورتها شركة REBOL Technologies. بعد مناقشات مع لورانس روزن ، [ 9 ] تم إصدار مترجم Rebol الإصدار 3 بموجب رخصة أباتشي 2.0 في 12 ديسمبر 2012. [ 10 ] الإصدارات الأقدم متوفرة بصيغة ثنائية فقط، ولا توجد خطط لإصدار شفرة المصدر الخاصة بها.
تم استخدام Rebol لبرمجة تطبيقات الإنترنت (من جانب العميل والخادم )، وتطبيقات قواعد البيانات ، والأدوات المساعدة ، وتطبيقات الوسائط المتعددة . [ 6 ]
أصل الكلمة
كانت Rebol في البداية اختصارًا لـ "Relative Expression Based Object Language" (لغة كائنية قائمة على التعبير النسبي ) ، مكتوبة بأحرف كبيرة . [ 6 ] [ 8 ] ولمواكبة التوجهات الحديثة في تسمية اللغات، مثل استبدال الاسم التاريخي LISP بالاسم Lisp ، توقف المبرمجون عن كتابة REBOL بأحرف كبيرة. طرح ساسنراث مسألة التسمية للنقاش في مدونته. [ 11 ] وفي كتاباته اللاحقة، اعتمد ساسنراث كتابة اسم اللغة باسم Rebol . [ 12 ]
تاريخ
تم تصميم Rebol لأول مرة في عام 1997 على مدى 20 عامًا بواسطة كارل ساسنراث، المهندس المعماري والمطور الرئيسي لنظام AmigaOS ، استنادًا إلى دراسته للدلالات الدلالية وباستخدام مفاهيم من لغات البرمجة Lisp و Forth و Logo و Self .
- تأسست شركة REBOL Technologies في عام 1998.
- تم إصدار برنامج REBOL 2 ، وهو برنامج الترجمة الفورية الذي أصبح جوهر إصدارات الترجمة الفورية الموسعة، لأول مرة في عام 1999.
- تم إصدار REBOL/Command ، الذي أضاف تشفيرًا قويًا وإمكانية الوصول إلى ODBC ، في سبتمبر 2000.
- تم إصدار REBOL/View في أبريل 2001، مضيفًا قدرات رسومية إلى اللغة الأساسية.
- تم إصدار REBOL/IOS ، وهي بيئة تعاون قابلة للتوسيع مبنية باستخدام REBOL، في أغسطس 2001.
- تم إصدار REBOL/SDK ، الذي يوفر خيارًا من النوى للربط بها، بالإضافة إلى معالج مسبق، في ديسمبر 2002.
- تم إصدار نسخ تجريبية من Rebol 3 [R3]، وهو أحدث إصدار من المفسر ، بواسطة شركة REBOL Technologies منذ يناير 2008. ومنذ إصداره كمشروع Apache 2 في ديسمبر 2012، يتم تطويره بواسطة مجتمع Rebol. [ 13 ]
تصميم
سهولة الاستخدام
أحد مبادئ تصميم ريبول هو "إنجاز الأمور البسيطة بطرق بسيطة". [ 6 ] في المثال التالي ، تُستخدم لغة الواجهة المرئية لوصف برنامج "مرحباً بالعالم" بسيط بواجهة مستخدم رسومية:
عرض التخطيط [ نص "مرحباً بالعالم!" زر "خروج" [ خروج ]] هكذا يبدو مثال مشابه في واجهة المستخدم الرسومية R3:
عرض [ نص "مرحباً بالعالم!" زر "خروج" عند الإجراء [ خروج ]] 
اللهجات
لغات ريبول الخاصة بمجالات محددة ، والتي تُسمى اللهجات ، هي لغات مصغرة مُحسَّنة لغرض معين. يمكن استخدام اللهجات لتحديد قواعد العمل، وواجهات المستخدم الرسومية، أو تسلسل الشاشات أثناء تثبيت البرنامج. يستطيع المستخدمون تعريف لهجاتهم الخاصة، مع إعادة استخدام أي كلمة موجودة في ريبول وإعطائها معنىً محددًا في تلك اللهجة. [ 6 ] تُفسَّر اللهجات بواسطة دوال تعالج كتل ريبول (أو تحلل السلاسل النصية) بطريقة محددة.
يمكن ملاحظة مثال على قدرات Rebol في تحديد اللهجات المختلفة من خلال الكلمة return. في لهجة تبادل البيانات،return تُعتبر مجرد كلمة لا تحمل أي معنى محدد. أما في لهجة do ، returnفهي متغير عام يشير إلى دالة أصلية تُعيد قيمة نتيجة الدالة. [ 4 ] في لهجة الواجهة المرئية (VID) ، returnتُعتبر كلمة مفتاحية تُجبر محرك التخطيط على محاكاة إرجاع سطر ، مما يُحرك "قلم العرض" إلى بداية السطر التالي. [ 7 ]
يجب على مترجم لغة ريبول الذي يمتلك مهارات تصويرية أن يفهم ويترجم العديد من اللهجات. يوضح الجدول أدناه أهم هذه اللهجات مرتبة حسب أهميتها.
| اسم اللهجة | ترجمة: | غاية |
|---|---|---|
| لغة تبادل البيانات | loadوظيفة | يمثل البيانات والبيانات الوصفية؛ منصة مشتركة للهجات ريبول |
| هل تتحدث بلهجة محلية؟ | doوظيفة | برمجة |
| تحليل اللهجة | parseوظيفة | مطابقة الأنماط |
| لغة تحديد الوظائف | makeوظيفة | تعريف الدالة ؛ البرمجة الوظيفية |
| لهجة تحديد الكائنات | makeوظيفة | تعريف الكائنات /الوراثة؛ البرمجة القائمة على النماذج الأولية |
| لهجة واجهة المستخدم المرئية (VID) أو RebGUI | layoutدالة أو displayدالة | يحدد واجهة المستخدم الرسومية |
| ارسم اللهجة | viewوظيفة | يحدد العناصر الرسومية (الخطوط، المضلعات، إلخ). |
| لهجة تحديد النص | doوظيفة | تعريف النص |
| لهجة سياسة الأمن | secureوظيفة | يحدد سياسة الأمان |
بناء الجملة
يتميز بناء جملة Rebol بأنه حر الشكل ، ولا يتطلب تحديد مواقع محددة. ومع ذلك، غالبًا ما تُستخدم المسافة البادئة لتحسين نقل بنية النص إلى القراء.
قد تختلف الخصائص النحوية للهجات المختلفة. المنصة المشتركة لجميع لهجات ريبول هي لهجة تبادل البيانات ؛ وعادةً ما تُشتق منها اللهجات الأخرى. إضافةً إلى كونها المنصة المشتركة لجميع اللهجات، تُستخدم لهجة تبادل البيانات مباشرةً لتمثيل البيانات والبيانات الوصفية، وتعبئة هياكل البيانات، وإرسال البيانات عبر الإنترنت، وحفظها في وحدات تخزين البيانات.
على عكس لغات البرمجة مثل C ، لا تتكون لغة تبادل البيانات من تعريفات أو عبارات أو تعابير أو كلمات مفتاحية. يتكون دفق نص صالح في لغة تبادل البيانات من بنية بيانات شجرية تتألف من كتل (الكتلة الجذرية ضمنية، والكتل الفرعية مفصولة بأقواس مربعة )، وأقواس (مفصولة بأقواس دائرية )، وسلاسل نصية (مفصولة بعلامات اقتباس مزدوجة أو أقواس معقوفة مناسبة للسلاسل النصية متعددة الأسطر؛ ويُستخدم رمز الإقحام للأحرف غير القابلة للطباعة)، وعناوين URL ، وعناوين البريد الإلكتروني، والملفات، والمسارات، أو قيم مركبة أخرى . على عكس كتل ALGOL ، فإن كتل Rebol هي قيم مركبة مشابهة لتعابير s المقتبسة في لغة Lisp . إن كتابة الكود على شكل كتل Rebol يجعل اللغة متجانسة . [ 4 ]
قد تحتوي الكتل والأقواس على قيم مركبة أخرى (قد تحتوي الكتلة على كتل فرعية، أقواس، سلاسل نصية، إلخ) أو قيم عددية مثل الكلمات، والكلمات المحددة (الكلمات التي تنتهي بنقطتين رأسيتين ) ، والكلمات المسبوقة (الكلمات التي تبدأ بنقطتين رأسيتين)، والكلمات المحددة (الكلمات التي تبدأ بفاصلة عليا )، والأرقام، والعملات، والأحرف ، وما إلى ذلك، مفصولة بمسافات . يُسمح باستخدام الأحرف الخاصة في الكلمات، لذا a+bفإن كلمة `is` هي كلمة مختلفة عن `is` a + b، وهي عبارة عن سلسلة من ثلاث كلمات مفصولة بمسافات.
قد تظهر التعليقات بعد الفاصلة المنقوطة حتى نهاية السطر. يمكن كتابة التعليقات متعددة الأسطر أو التعليقات التي لا يتجاهلها المحلل المعجمي باستخدام أنواع البيانات "العادية" مثل السلاسل النصية متعددة الأسطر. [ 4 ]
علم الدلالة
يمكن إرسال الكتل التي تحتوي على لغة خاصة بالمجال كوسائط إلى وظائف تقييم محددة . [ 6 ]
يفعل
المُقيِّم الأكثر استخدامًا هو doالدالة. ويتم استخدامها افتراضيًا لتفسير النص المُدخل إلى وحدة تحكم المُفسِّر .
لغة "do" التي تُفسَّر بواسطة doالدالة، هي لغة فرعية موجهة نحو التعبيرات من لغة تبادل البيانات . الوحدة الدلالية الرئيسية لهذه اللغة هي التعبير . على عكس لغات البرمجة الإجرائية المنحدرة من لغة ALGOL ، لا تحتوي لغة "do" على كلمات مفتاحية ولا عبارات.
تُستخدم الكلمات كمتغيرات غير حساسة لحالة الأحرف . وكما هو الحال في جميع اللغات ذات الكتابة الديناميكية ، لا ترتبط المتغيرات بنوع محدد، بل يرتبط النوع بالقيم. تُعاد النتيجة، أي تقييم الكلمة، عند مصادفة الدالة لها . يمكن استخدام صيغة الكلمة المُحددة (set-word) للتخصيص . على الرغم من عدم وجود عبارات، يمكن استخدام التخصيص، إلى جانب الدوال ذات التأثيرات الجانبية، في البرمجة الإجرائية . [ 4 ]do
تُقيّم الكتل الفرعية للكتلة الجذرية إلى نفسها. تُستخدم هذه الخاصية للتعامل مع كتل البيانات، وللبرمجة المهيكلة عن طريق إرسال الكتل كوسائط لوظائف التحكم مثل if، و either، و loop، وما إلى ذلك، وللتحديد، عندما يتم تمرير كتلة إلى وظيفة تفسيرية محددة. [ 6 ]
من المشاكل المحددة التي تجدر الإشارة إليها أن القيم المركبة، المُسندة إلى المتغيرات، لا تُنسخ. ولإنشاء نسخة، يجب تمرير القيمة إلى الدالة copy. [ 4 ]
doتتبع الدالة عادةً أسلوب التقييم البادئ ، حيث تعالج الدالة الوسائط التي تليها. ومع ذلك، يوجد أيضًا التقييم الوسطي باستخدام عوامل التشغيل الوسطية . ويُعطى التقييم الوسطي الأولوية على التقييم البادئ. على سبيل المثال،
abs -2 + 3
تُرجع الدالة القيمة 1، لأن عملية الجمع في صيغة الوسط لها الأولوية على حساب القيمة المطلقة. عند تقييم تعابير صيغة الوسط، يكون ترتيب التقييم من اليسار إلى اليمين، ولا توجد عملية لها الأولوية على أخرى. على سبيل المثال،
2 + 3 * 4تُرجع الدالة 20، بينما تُعطي عملية الضرب الأولوية للضرب، مما ينتج عنه 14. جميع المعاملات لها إصدارات تبدأ ببادئة. Doعادةً ما تُقيّم المعاملات الوسائط قبل تمريرها إلى الدالة. لذا، فإن التعبير التالي:
اقرأ واطبع http://en.wikipedia.org/wiki/Rebol
يقرأ البرنامج أولاً صفحة ريبول على ويكيبيديا، ثم يمرر النتيجة إلى printالدالة. يمكن استخدام الأقواس لتغيير ترتيب التقييم. باستخدام تدوين البادئة ، يمكن تجنب استخدام الأقواس في التعبيرات. [ 4 ]
تسمح قواعد الأسبقية البسيطة بكتابة التعبيرات دون الرجوع إلى جدول أسبقية يتغير ليعكس إضافة عوامل جديدة، كما تسمح بتحويل التعبيرات من صيغة البادئة إلى صيغة الوسط باستخدام طرق أبسط. مع ذلك، قد تُشكّل هذه القواعد عيبًا، إذ قد تُسبب أخطاءً للمستخدمين المعتادين على الصيغة التقليدية المستخدمة في معظم اللغات والأدوات الأخرى. [ 6 ]
تحليل
يُفضل استخدام هذه parseالدالة لتحديد اللهجات والتحقق من صحتها وتحويلها وتفسيرها. ويتم ذلك عن طريق مطابقة تعابير التحليل في وقت التشغيل. [ 6 ]
تُكتب تعابير التحليل في لهجة التحليل ، وهي، مثل لهجة do ، لغة فرعية موجهة نحو التعبيرات من لهجة تبادل البيانات . على عكس لهجة do ، تستخدم لهجة التحليل كلمات مفتاحية تمثل المعاملات وأهم الرموز غير الطرفية ، ولا تمتلك معاملات التحليل الوسطي مكافئات بادئة، وتستخدم قواعد الأسبقية ( للتسلسل أسبقية أعلى من الاختيار ). [ 6 ]
يمكن تضمين إجراءات تُتخذ أثناء عملية التحليل، parseويمكن استخدام الدالة لمعالجة الكتل أو السلاسل النصية. على مستوى تحليل السلاسل النصية،parse يجب التعامل مع التحليل "منخفض المستوى"، مع مراعاة الأحرف والفواصل. أما تحليل الكتل فهو على مستوى أعلى، ويتعامل مع المسح الضوئي على مستوى قيم Rebol. [ 6 ]
ينتمي تحليل اللغة إلى عائلة القواعد النحوية التي تمثلها لغة التحليل من أعلى إلى أسفل أو قواعد التعبير التحليلي (PEG). ويكمن التشابه الرئيسي في وجود عاملي التسلسل والاختيار الموجودين في جميع أفراد هذه العائلة. يوضح هذا المثال ، وهو ترجمة صوتية لمثال من قواعد التعبير التحليلي يقوم بتحليل تعبير حسابي، بنية تحليل اللغة وأوجه التشابه بينها وبين قواعد التعبير التحليلي.
الرقم: مجموعة الأحرف [ #"0" - #"9" ] القيمة: [ رقم ما | "(" تعبير ")" ] الناتج: [ القيمة أي [[ "*" | "/" ] القيمة ]] المجموع: [ الناتج أي [[ "+" | "-" ] الناتج ]] التعبير: تحليل المجموع / الكل "12+13" تعبيرالتطبيقات
يتوفر الإصدار الرسمي من Rebol 2.7.8 في عدة نسخ ( /Core ، /View ، /Command ، /SDK ، و /IOS ). نسختا /Core و /View هما برمجيات قابلة لإعادة التوزيع مجاناً . [ 1 ]
يتم تخزين بيئة التشغيل في ملف تنفيذي واحد. يبلغ حجم Rebol/Core 2.7.8، إصدار سطر الأوامر، حوالي 300 كيلوبايت، بينما يبلغ حجم Rebol/View 2.7.8، إصدار واجهة المستخدم الرسومية ، حوالي 650 كيلوبايت.
يوفر برنامج Rebol/View إمكانية الوصول إلى الرسومات والصوت بشكل مستقل عن المنصة ، ويأتي مزودًا بمجموعة أدوات خاصة به لإدارة النوافذ ومجموعة قابلة للتوسيع من الأنماط ( عناصر واجهة المستخدم الرسومية ). تتطلب الإصدارات الموسعة، مثل Rebol/Command 2.7.8 أو Rebol/SDK 2.7.8، ترخيصًا مدفوعًا؛ حيث تضيف ميزات مثل الوصول إلى بيانات ODBC، وخيار إنشاء ملفات تنفيذية مستقلة.
إرث
- وقد ذكر دوغلاس كروكفورد أن ريبول كان أحد مصادر الإلهام لأسلوب كتابة كائنات جافا سكريبت . [ 5 ]
- استوحى مشروع Orca مفتوح المصدر من لغة Rebol، وهي لغة تفسيرية تشبه لغة Rebol. [ 14 ]
- بورون هي لغة تفسيرية متجانسة الرموز، مستوحاة من لغة ريبول ومشابهة لها، وهي مصممة لتضمين لغات خاصة بمجالات محددة. تم تطويرها كمكتبة C مرخصة بموجب شروط رخصة LGPLv3.
- استُلهمت لغة البرمجة Red بشكل مباشر من لغة Rebol، إلا أن خيارات التنفيذ في Red كانت موجهة تحديدًا للتغلب على القيود التي كانت تُعتبر عائقًا أمامها . [ 15 ]
انظر أيضاً
مراجع
- 1 2 شركة ريبول تكنولوجيز. ترخيص REBOL/View وREBOL/Core 2.7.8
- ↑ مصدر R3 على GitHub
- ↑ "مدونة كارل على موقع ريبول - لننتقل إلى لاحقة .reb" . Rebol.com. ١٨ أغسطس ٢٠١٣. تم الاطلاع عليه بتاريخ ٢٣ يناير ٢٠١٤ .
- 1 2 3 4 5 6 7 غولدمان، إي.، بلانتون، ج. (2000). ريبول: الدليل الرسمي. ماكجرو هيل أوزبورن ميديا. ISBN 0-07-212279-X.
- 1 2 3 كروكفورد، دوغلاس . ملحمة JSON ، jsonsaga.ppt أرشفة 4 أكتوبر 2012 في آلة Wayback .
- 1 2 3 4 5 6 7 8 9 10 11 12 روبرتس، رالف (2000). الثورة للمبتدئين. هانغري مايندز. ISBN 0-7645-0745-1.
- 1 2 أوفيرلوت، أوليفييه (2001). برمجة ريبول. إيرولز. رقم ISBN 2-212-11017-0.
- 1 2 ساسنراث، كارل (1 يوليو 2000). "داخل لغة برمجة REBOL" . مجلة دكتور دوبز .
- ↑ "REBOL ستصبح مفتوحة المصدر" . Rebol.com. 25 سبتمبر 2012. تم الاطلاع عليه في 23 يناير 2014 .
- ↑ ساسنراث، كارل (12 ديسمبر 2012). "تعليقات على: إصدار شفرة المصدر R3!" . مؤرشف من الأصل في 19 أغسطس 2014. تم الاطلاع عليه في 14 أغسطس 2014.
ربما ظننت أن إصدار شفرة المصدر لن يحدث أبدًا؟ أليس كذلك؟ حسنًا، ها هي متاحة الآن على GitHub على الرابط github.com/rebol/rebol.
- ↑ "هل يُطلق على ريبول اسم ريبول؟" . ١٤ ديسمبر ٢٠١٢. مؤرشف من الأصل في ٣ ديسمبر ٢٠١٣. تم الاطلاع عليه في ٢ ديسمبر ٢٠١٣ .
- ↑ ساسنراث، كارل. "الترجمة المتقاطعة لـ Rebol للوحة المدمجة المفضلة لديك" . تم الاسترجاع في 16 سبتمبر 2016 .
- ↑ "شفرة المصدر لمفسر Rebol" . rebol/rebol GitHub . تم الاطلاع عليه في 14 مارس 2017 .
- ↑ مشروع rebol-orca في Freecode
- ↑ مشروع Red على GitHub
للمزيد من القراءة
- مايكس، نورا (20 نوفمبر 1999). "غزو ريبول: إنها ليست لغة برمجة نصية، وليست لغة برمجة - وليست أميغا جديدة أيضًا. أم أنها كذلك؟" . لينكس وورلد . مؤرشف من الأصل في 24 مارس 2005.
- ستوري، ديريك (27 أغسطس 1999). "قد تكون الثورة لغةً لبقية الناس" . مراجعة على الإنترنت . مؤرشفة من الأصل في 12 أكتوبر 1999.
روابط خارجية
- لغات البرمجة
- برنامج AmigaOS 4
- لغات البرمجة الديناميكية
- لغات البرمجة ذات الكتابة الديناميكية
- اللغات الوظيفية
- لغات البرمجة القائمة على النماذج الأولية
- لغات البرمجة النصية
- لغات برمجة ذات بنية قابلة للتوسيع
- برامج مملوكة سابقًا
- لغات البرمجة التي تم إنشاؤها عام 1997
- لغات البرمجة عالية المستوى
- لغات البرمجة المتجانسة
