كائن REXX
أوبجكت ريكس هي لغة برمجة عالية المستوى ، متعددة الأغراض ، تفسيرية ، كائنية التوجه ( قائمة على الأصناف ) . ويُشار إليها اليوم عمومًا باسم ooRexx (اختصارًا لـ Open Object Rexx )، وهي البرنامج مفتوح المصدر الذي يُعدّ خليفةً مباشرًا ومُدارًا لأوبجكت ريكس.
يُعدّ ooRexx امتدادًا هامًا للغة البرمجة Rexx (المُشار إليها هنا باسم Rexx الكلاسيكية )، إذ يحتفظ بجميع ميزاتها وبنيتها، مع إضافة إمكانيات البرمجة الكائنية (OOP) الكاملة، فضلًا عن تحسينات جديدة أخرى. وبفضل تأثره بلغة Rexx الكلاسيكية، صُمم ooRexx ليكون سهل التعلم والاستخدام والصيانة. وهو متوافق بشكل أساسي مع معيار "تقنية المعلومات - لغة البرمجة REXX" الصادر عن المعهد الوطني الأمريكي للمعايير (ANSI) X3.274-1996 [ 1 ] ، ما يضمن التوافق مع مختلف منصات تطبيقات Rexx الأخرى المتوافقة. لذا، تعمل برامج Rexx الكلاسيكية عادةً على ooRexx دون أي تغييرات.
يوجد أيضًا Rexx Object Oriented (roo!)، والذي تم تطويره في الأصل بواسطة Kilowatt Software وهو تطبيق غير مدعوم للكائنات من Rexx الكلاسيكي. [ 2 ]
تاريخ
في عام ١٩٨٨، قام مشروع "أوريكس" في شركة آي بي إم ، تحت الإشراف التقني لسيمون سي. ناش، بتجربة دمج لغة ريكس الكلاسيكية مع نموذج الكائنات في لغة سمول توك . [ ٣ ] [ ٤ ] كان الدافع وراء المشروع هو نقل مزايا البرمجة الكائنية التوجه إلى لغة ريكس الكلاسيكية مع الحفاظ على التوافق، وبالتالي نقل سهولة استخدام لغة ريكس الكلاسيكية إلى البرمجة الكائنية التوجه. [ ٥ ] في البداية، ركزت المشاريع على جوانب البرمجة الكائنية التوجه مثل التعامل مع كل شيء ككائن ، والتغليف القائم على الكائنات ، وتمرير الرسائل ، والتزامن القائم على الكائنات ، والفئات ، والوراثة . [ ٦ ]

أدى هذا العمل الأولي، تحت إشراف ريك ماكغواير، إلى النموذج الأولي الأول لـ Object REXX، والذي عُرض عام 1992. وفي عام 1994، أعلنت شركة IBM أن Object REXX سيحل محل Rexx الكلاسيكي كمترجم REXX قياسي في الإصدار التالي من نظام التشغيل OS/2 . [ 4 ] وفي عام 1996، تم إصدار Object REXX كجزء من نظام التشغيل OS/2 Warp 4. [ 7 ] وفي عام 1997، صدرت نسخ لأنظمة Windows 95 و Windows NT و Linux . [ 8 ] [ 9 ] وفي عام 1999 ، صدرت نسخة من Object REXX لنظام AIX V4.1.5 أو أحدث. [ 10 ] وفي عام 2000، صدرت نسخ لأنظمة zLinux و Sun /Solaris . بالنسبة لأنظمة التشغيل Windows 2000 و Windows Me و Windows 98 و Windows NT 4.0 ، تم إصدار آخر تحديث رئيسي لـ Object REXX في عام 2001. [ 11 ]

في 12 أكتوبر 2004، أعلنت شركة IBM إيقاف تطوير لغة Object REXX، ونقلت شفرة المصدر وحقوق الترخيص [ ب ] إلى مجموعة المصالح الخاصة (SIG) غير الربحية ، جمعية لغة Rexx (RexxLA). لم تتضمن الشفرة التي نشرتها IBM كمصدر مفتوح فئات نموذج كائنات نظام IBM (SOM)، المعروف بإطار عمل الكائنات لبيئة سطح المكتب (WPS) لنظام التشغيل OS/2. [ 12 ] على الرغم من توقف IBM عن تطوير SOM في عام 1997، إلا أنه لا يزال إطار عمل أساسيًا لنظام التشغيل OS/2. [ 13 ] يتضمن إصدار OS/2 من Object REXX فئات لدعم SOM وWPS. [ 14 ] [ 15 ] هذه الفئات مُضمنة في المنتج اللاحق لنظام التشغيل OS/2، وهو eComStation ، وكذلك في نظام التشغيل ArcaOS ، الذي لا يزال مُفسِّر Object REXX الأصلي من IBM متاحًا له. [ 16 ]
في عام ٢٠٠٥، أصدرت RexxLA برنامج ooRexx كنسخة جديدة من Object REXX كبرنامج مجاني ومفتوح المصدر بموجب رخصة Common Public License . [ ١٧ ] خضعت النسخة الأولى من ooRexx 3.0.0 لإعادة هيكلة شاملة مقارنةً بشفرة المصدر الأصلية لشركة IBM بهدف تحسين سهولة قراءتها. لاحقًا، أُعيدت كتابة نواة ooRexx بلغة C++ خالصة، وصُممت ونُفذت بنية جديدة وواجهة أصلية تحت الإشراف التقني لريك ماكغواير. مكّن هذا العمل RexxLA من إصدار ooRexx 4.0.0 مع دعم 64 بت في عام ٢٠٠٩. وحتى يومنا هذا، تواصل RexxLA تطوير ودعم وصيانة ooRexx بالإضافة إلى Rexx الكلاسيكي و NetRexx . علاوة على ذلك، تنظم RexxLA ندوات دولية سنوية. [ ١٨ ]
الإصدارات
يحتوي الجدول التالي على أبرز الميزات والتغييرات في الإصدارات الرئيسية لمترجمي Object REXX وooRexx. جميع إصدارات ooRexx والوثائق اللازمة متاحة مجانًا على SourceForge . [ 19 ] [ 20 ] بالنسبة لتوزيعات Arch Linux ، يتوفر الإصدار الحالي وإصدار التطوير في مستودع مستخدمي Arch . منذ الإصدار 5.0.0، توجد إصدارات محمولة من المترجم يمكن استخدامها دون تثبيت، كما يوجد منفذ غير رسمي لنظام التشغيل OS/2 . تحتوي حزمة "net-oo-rexx" على أحدث إصدار محمول من ooRexx، وNetrexx ، وواجهة Netrexx، وجسر Java والحزم المرتبطة به ، وواجهة لـ ooRexx، بالإضافة إلى العديد من الحزم والبرامج الأخرى . [ 21 ]
بالنسبة لبيئة Intellij IDEA ، يُضيف الملحق ooRexxPlugin دعمًا لتلوين بناء الجملة ، والتحقق من صحة بناء الجملة، وإكمال التعليمات البرمجية ، ودعم التوثيق المُصمم على غرار Javadoc باستخدام التعليقات التوضيحية . [ 22 ] اعتبارًا من سبتمبر 2012، يتوفر دعم لتلوين بناء الجملة لميزات ooRexx 4.0 في Vim. [ 23 ] يُعد RexxCPS معيارًا لقياس عدد عبارات Rexx (وحدات بناء الجملة المستقلة في سطر واحد) التي يُعالجها المُفسِّر في الثانية الواحدة.
| الإصدارات الرئيسية | تاريخ الافراج عنه | أبرز الميزات والتغييرات |
|---|---|---|
| غير مدعوم: Object REXX 1.0.0 (OS/2) [ 7 ] | 25-09-1996 |
|
| غير مدعوم: Object REXX 1.0.0 (Windows) [ 8 ] | 28 فبراير 1997 |
|
| غير مدعوم: Object REXX 1.1.0 (AIX) [ 10 ] | 9 أبريل 1999 |
|
| غير مدعوم: Object REXX 2.1.0 (Windows) [ 11 ] | 2001-04-21 |
|
| غير مدعوم: ooRexx 3.0.0 [ 24 ] [ 25 ] | 30-03-2005 |
|
| غير مدعوم: ooRexx 3.1.0 [ 24 ] | 2006-08-21 |
|
| غير مدعوم: ooRexx 3.1.1 [ 24 ] | 23-11-2006 |
|
| غير مدعوم: ooRexx 3.1.2 [ 24 ] | 2007-09-17 |
|
| غير مدعوم: ooRexx 3.2.0 | 22-01-2008 |
|
| غير مدعوم: ooRexx 4.0.0 [ 26 ] | 30-09-2009 |
|
| غير مدعوم: ooRexx 4.1.0 [ 27 ] | 2011-09-28 |
|
| غير مدعوم: ooRexx 4.2.0 [ 29 ] | 2014-02-23 |
|
| غير مدعوم: ooRexx 5.0.0 [ 30 ] | 2022-12-22 |
|
| غير مدعوم: ooRexx 5.1.0 [ 31 ] | 2025-05-02 |
|
| أحدث إصدار: ooRexx 5.2.0 [ 33 ] | 2026-04-18 |
|
| نسخة تجريبية: ooRexx 5.3.0beta | 2026-04-25 |
فلسفة التصميم
تتبع لغة ooRexx فلسفة تصميم لغة Rexx الكلاسيكية لإنشاء لغة برمجة " محورية حول المستخدم " سهلة التعلم والكتابة والتذكر والصيانة. ويتحقق ذلك جزئيًا من خلال الحفاظ على حجم اللغة صغيرًا واتباع مبدأ البساطة . [ 2 ] [ 34 ] كما تتميز ببنية سهلة القراءة بفضل كونها غير حساسة لحالة الأحرف، ومرنة، وتتطلب أقل قدر ممكن من علامات الترقيم، وتستخدم تعليمات باللغة الإنجليزية الواضحة. [ 34 ] إضافةً إلى ذلك، فهي لغة برمجة ديناميكية توفر المرونة وتسمح بالتركيز على التطوير بدلًا من قيود اللغة.
اتباعاً لمبدأ تصميم "التوثيق قبل التنفيذ" الخاص بلغة Rexx الكلاسيكية، توفر ooRexx توثيقاً شاملاً وفقاً لدليل أسلوب IBM، والذي يتضمن مخططات بناء الجملة وأمثلة توضيحية. [ 34 ] [ 32 ]
تعليمات
كما هو الحال في لغة Rexx الكلاسيكية، توجد تعليمات إسناد، وتعليمات كلمات مفتاحية، وتعليمات أوامر. وحرصًا على إبقاء اللغة مختصرة، تحتوي ooRexx على ثلاثين تعليمة كلمات مفتاحية فقط. [ 32 ] على عكس العديد من اللغات الأخرى، لا توجد كلمات مفتاحية محجوزة، لذا يمكن استخدام تعليمات الكلمات المفتاحية مثل `<sup>-</sup>` و`<sup >- DO</sup> ` و`<sup>-</sup>` كأسماء متغيرات أثناء الإسناد. هذا يُغني عن حفظ قائمة طويلة من الكلمات المحجوزة . [ 35 ] يُستخدم الإسناد لتعيين قيمة متغير أو تغييرها. تُستخدم علامة المساواة (=) لإنشاء تعليمة إسناد يمكن استخدامها مع أحد عشر عاملًا لتسلسلات إسناد موسعة مثل `<sup> -</sup> ` و`< sup>-</sup>` وغيرها. تعليمات الكلمات المفتاحية مثل ` <sup>-</sup> ` و` <sup>-</sup>` أو `<sup>-</sup>` لها نفس تأثير الإسناد. [ 32 ]SAYENDIF=+=-=*=ARGPARSEPULLUSE
في الحالات التي لا تكون فيها التعليمات عبارة عن تعيين أو تعليمات كلمات مفتاحية، يجب أن تكون تعبيرًا صحيحًا، مثل رمز أو سلسلة نصية حرفية، تُعتبر تعليمات أمر، حيث يمرر المفسر قيمتها إلى بيئة الأوامر الحالية، مثل المحرر أو نظام التشغيل، للتنفيذ؛ ويقوم المفسر بتعيين متغير RCلرمز الإرجاع. بالإضافة إلى ذلك، ADDRESSتسمح هذه التعليمات بإعادة توجيه الأوامر إلى بيئات أوامر محددة مثل Bourne Shell و Bash و Z-Shell وموجه الأوامر وغيرها، وبعض المحررات بما في ذلك ISPF و TSO EDIT و XEDIT وتطبيقاتها ، فضلاً عن اعتراض الأخطاء.
a = "hello world" /* تعليمات التعيين */do i = 1 to 2 /* تعليمة الكلمة المفتاحية "DO" */قل "الجولة رقم" أنا + a /* تعليمة الكلمة المفتاحية "قل" */نهاية /* تعليمة الكلمة المفتاحية "END" */"echo Hello World" /* أمر لنظام التشغيل */قل "RC:" rc /* رمز الإرجاع الرقمي للأمر */بالإضافة إلى أنواع التعليمات الثلاثة في لغة Rexx الكلاسيكية، تُضيف لغة ooRexx تعليمات توجيهية [ c ] يجب وضعها في نهاية البرنامج. بعد التحميل والتحقق من بناء الجملة، يُنفّذ المُفسّر جميع التوجيهات المُعرّفة لتهيئة بيئة التنفيذ للبرنامج قبل تنفيذ أي تعليمات أخرى. يُمكن استخدام التوجيهات لتعريف الإجراءات ، والفئات ، والأساليب ، والخصائص، أو خيارات التنفيذ مثل عدد الأرقام المُستخدمة في العمليات الحسابية. ولتسهيل التعرّف على التعليمات التوجيهية، تُقدّم بنقطتين رأسيتين متتاليتين ( ::). [ 32 ]
لتسهيل إعادة استخدام الكود، ::REQUIRESيسمح هذا التوجيه بدمج برنامج Rexx آخر (يُعرف أيضًا باسم حزمة) أو مكتبة خارجية (أصلية). يُتيح هذا التوجيه للمفسر PUBLICالوصول المباشر إلى كل روتين وفئة تُحدد خيار برنامج Rexx (الحزمة) المُشار إليه. عادةً ما تستخدم الحزم الخارجية امتداد الملف .rexx .cls، على سبيل المثال .rexx ::requires "csvstream.cls"أو .rexx. تُرفق ::requires "json.cls"بعض الحزم والمكتبات الخارجية مع مفسر ooRexx.
حر الشكل
تتميز لغة ooRexx ببنية حرة لا يشترط فيها ترتيب أجزاء الكود، مما يتيح مرونة عالية. قبل التنفيذ، يدمج المفسر عدة مسافات غير مُقتبسة في مسافة واحدة، بينما لا تتغير السلاسل النصية المُحاطة بعلامات اقتباس (مفردة أو مزدوجة). يمكن طلب دمج الأسطر صراحةً باستخدام خطين عموديين ( ||)، أو ضمنيًا بفصل الأسطر بمسافات أو بتجاورها. اختياريًا، يمكن توزيع الأسطر على عدة أسطر باستخدام الفاصلة ( ,) أو علامة الطرح ( -) كرمز استمرار، أو يمكن استخدام عدة أسطر في سطر واحد، مفصولة بفاصلة منقوطة ( ;). [ 32 ] نظرًا لأن اللغة الحرة توفر مرونة وتتطلب مراعاة قواعد نحوية أقل، يُفترض أنها تُسهّل عملية التعلم بتقليل العبء المعرفي . [ 36 ]
قل "مرحباً بالعالم!" /* الناتج: مرحباً بالعالم! */قل "هذا" 'هو' - /* شرطة في النهاية للمتابعة */"REXX" || "!" /* الناتج: هذا هو REXX! */غير حساس لحالة الأحرف
كما هو الحال في لغة Rexx الكلاسيكية، فإن ooRexx لغة برمجة غير حساسة لحالة الأحرف . وعليه، يقوم مترجم ooRexx بكتابة جميع الأحرف خارج علامات الاقتباس (سواء كانت مفردة أو مزدوجة) بأحرف كبيرة، ويتجاهل حالة الأحرف في التعليمات وأسماء المتغيرات وجميع جوانب اللغة الأخرى. تُعامل التسلسلات الموجودة داخل علامات الاقتباس فقط كسلاسل نصية حرفية ولا يتم تغييرها أثناء المعالجة. [ 32 ] ولأن حالات الأحرف لا تحتاج إلى التمييز، تقل الحاجة إلى تعلم تفاصيل إضافية، ويتم تجنب أخطاء بناء الجملة المُحبطة. [ 36 ]
أ = "هذا هو" ريكس !قل A /* الناتج: هذا هو REXX! */قل / * الناتج: هذا هو REXX! */كل شيء عبارة عن كائن
بينما تتبع لغة Rexx الكلاسيكية فلسفة "كل شيء عبارة عن سلسلة نصية" وتعتبر السلسلة النصية هي نوع البيانات الوحيد فيها، فإن لغة ooRexx تعتبر كل شيء كائنات، بما في ذلك الكائنات غير النصية مثل المصفوفات والجداول وغيرها الكثير. ويتم التعامل مع الكائنات باستخدام الأساليب بدلاً من الدوال التقليدية.
في لغة ooRexx، يُعدّ متغير السلسلة مرجعًا لكائن سلسلة نصية، ولا يحتاج إلى تعريف، مما يُسهّل على المبرمجين العمل مقارنةً باللغات ذات الكتابة الصارمة . [ 37 ] يمكن أن يكون لكائن السلسلة النصية أي طول وأن يحتوي على أي أحرف، بما في ذلك القيم العددية. وبالتالي، يُمكن تغيير القيم العددية باستخدام عمليات معالجة السلاسل النصية وأساليب الفئة String. إضافةً إلى ذلك، يُمكن أن يحتوي متغير السلسلة النصية على أي نوع من التعبيرات، بما في ذلك التعليمات القابلة للتنفيذ، والتي يُمكن تقييمها أو تنفيذها باستخدام INTERPRETالكلمة المفتاحية `instruction`. [ 32 ]
a = 2 /* سلسلة نصية تحتوي على قيمة عددية */a = a || '0' /* السلسلة الناتجة: 20 */str = "do i = 1 to " a "; say i; end" /* السلسلة تحتوي على تعليمات حلقة تكرارية */تفسير السلسلة النصية /* تفسير السلسلة النصية: العد حتى 20 */نموذج الرسائل
على غرار نموذج المراسلة الذي طبقه آلان كاي في لغة سمول توك، كل شيء في ooRexx عبارة عن كائن قابل للتواصل. يساعد مفهوم إرسال الرسائل إلى الكائنات كما لو كانت كائنات حية المبتدئين على تعلم مفاهيم البرمجة الكائنية التوجه. [ 35 ] على عكس سمول توك، يوجد عامل مراسلة صريح، وهو علامة التلدة ( ~~)، حيث يُوضع الكائن المُستقبِل على يساره، وتُعاد نتيجة العملية. يؤدي إرسال رسالة إلى تفعيل دالة تحمل اسم الدالة المُطابق، وإلى معالجة الكائن المُستقبِل. كما هو الحال في سمول توك، يمكن ربط رسائل ooRexx بشكل متتالي ~~باستخدام علامتي تلدة (~) بدلاً من واحدة، مما يُعيد الكائن الذي استقبل الدالة بدلاً من النتيجة المُنتجة. [ 38 ]
يمكن تغيير السلوك الافتراضي لمعظم الدوال بتحديد خيار، سواءً كان مكتوبًا كاملاً أو مختصرًا، وهو غير حساس لحالة الأحرف. عند قراءة الشفرة، يُسهّل هذا الفهم الحرفي ويُقلل من جهد التعلم للمبتدئين، إذ لا حاجة لتعلم معاني الاختصارات. [ 36 ] على سبيل المثال، تقوم الدالة التي تحمل الاسم stripبإزالة المسافات البادئة واللاحقة افتراضيًا. يمكن تغيير هذا السلوك، على سبيل المثال، بتحديد "leading"خيار "l". بينما تكون الدوال متداخلة في Rexx الكلاسيكي، يمكن ربط الرسائل في ooRexx، مما يُحسّن من سهولة قراءة العبارة . [ 35 ]
أ = "أنا أوريكس!"قل / * الناتج: أنا ooRexx! */قل ~ Strip ( "Leading" ) /* الناتج: أنا ooRexx! * /قل ~ strip ( "l" ) ~ reverse / * الناتج: !xxeRoo ma I */التوافق
صُممت لغة ooRexx للاحتفاظ بجميع ميزات لغة Rexx الكلاسيكية ، وهي متوافقة بشكل أساسي مع معيار ANSI للغة Rexx (X3.274-1996، "لغة البرمجة REXX"). [ 1 ] على عكس المواصفات الاختيارية في معيار ANSI، لا تسمح ooRexx باستخدام أحرف مثل @و #و في الرموز. فبينما في Rexx الكلاسيكية $، ينتج عن ¢التعبير القيمة الافتراضية ، يقوم المفسر بإنشاء اسم بديل لـ . بالإضافة إلى ذلك، تسمح ooRexx باستخدام كعلامة تعليق وكسلسلة أسطر متصلة، وهما غير محددين في المعيار. [ 1 ]b. = a.b.a.b.a.---
عادةً ما تعمل نصوص Rexx الكلاسيكية دون تغييرات في بيئة ooRexx، مما يُسهّل الانتقال إلى ميزات البرمجة الكائنية بالسرعة المطلوبة مع الحفاظ على الوقت المُستثمر في الكود الأصلي. [ 2 ] توجد بعض حالات عدم التوافق مع بعض التطبيقات الخاصة بأنظمة تشغيل مُحددة، مثل Rexx لنظام z/VM (على سبيل المثال، PARSE EXTERNALلا يدعم ooRexx هذه الميزة). بينما يسمح Rexx الكلاسيكي بتعيين قيم فارغة ، فإن علامات الاقتباس ضرورية في ooRexx. [ 39 ]x = ;x = "";
التخصيص
يوفر ooRexx آليات تخصيص متنوعة، مثل توسيع الوظائف والفئات المدمجة ، واستخدام طرق غير محددة، وإضافة بيئات أوامر ومفاتيح استدعاء أو إنشاء إصدارات خاصة. [ 40 ]
يمكن تغيير السلوك الافتراضي للدوال المدمجة بإضافة تسمية تحمل نفس اسم الدالة المراد إعادة تعريفها (مثلاً date) في نهاية نطاق البرنامج، أو بإضافة ::routineتوجيه. يمكن للبرنامج حساب النتائج بنفسه أو تعديل نتائج الدالة المدمجة الأصلية.
قل التاريخ () /* الناتج، على سبيل المثال: 16 يونيو 2025 */مخرجالتاريخ : إرجاع newDate () /* تسمية تشير إلى روتين "newDate" */:: روتين التاريخ الجديد newDate = date () ~ upper /* استخدام دالة date() BIF، ولكن بأحرف كبيرة */إرجاع التاريخ الجديد منذ إصدار ooRexx 5.0.0، أُضيفت مساحات أسماء تسمح بإنشاء فئات فرعية من الفئات المدمجة. [ 40 ] [ 32 ] وهذا يُتيح إمكانية توسيع الفئات المدمجة، على سبيل المثال بإضافة دالة إلى ArrayInCloseفئة stream ، والتي تفتح التدفق، وتقرأ المحتوى، ثم تغلقه، بدلاً من القيام بذلك ضمن نطاق البرنامج.
قل . stream ~ new ( "someFile.txt" ) ~ ArrayInClose:: فئة فرعية من stream rexx : stream /* إنشاء فئة فرعية من stream */:: الدالة ArrayInClose /* إضافة دالة جديدة إلى فئة التدفق */self ~ open /* فتح البث */FileContent = self ~ ArrayIn /* قراءة المحتوى */self ~ close /* إغلاق التدفق */إرجاع محتوى الملف /* إرجاع المحتوى */يُمكّن تعريف الدالة UNKNOWNالكائنات من استقبال رسائل غير محددة. يتم تمرير وسيطين، أولهما اسم الدالة غير المحددة، وثانيهما مصفوفة من الوسائط من الرسالة الأصلية. [ 32 ] هذه آلية أساسية في Java Bridge ، والتي تُمكّن، من بين أمور أخرى، من استخدام جميع دوال Java المتاحة. [ 41 ]
PackageObj = . Package ~ new PackageObj ~ SomeMethod ( "First" , "Second" , "Third" ):: حزمة الفئاتتهيئة الطريقةطريقة غير معروفة استخدم arg MethodName و ArgArr قل "الطريقة هي:" اسم الطريقة /* الناتج: الطريقة هي: SOMEMETHOD */قل ArgArr /* الناتج: الأول، الثاني، الثالث */سمات
قبل كل شيء، يوفر ooRexx ميزات البرمجة الكائنية مثل التوريث ، وتعدد الأشكال ، وتغليف البيانات ، والوراثة المتعددة عبر فئات المزج . يتضمن المفسر أداةً تُمكّن من تجميع برامج ooRexx، مع إمكانية ترميز النتيجة كملف base64 ، وهو ملف بدون مصدر يبدأ تشغيله بشكل أسرع نظرًا لأن التحليل والتجميع الأوليين قد تمّا مسبقًا. [ 38 ]rexxc
التحليل
PARSEتُمكّن تعليمة الكلمة المفتاحية من تحليل سلسلة نصية بسرعة ومرونة، وتعيين أجزاء منها لمتغيرات في خطوة واحدة. [ 2 ] تُستخدم التعليمة اللاحقة لتحديد مصدر السلسلة النصية، على سبيل المثال ARGللوسائط المُدرجة عند استدعاء البرنامج أو الدالة، أو VARللمتغيرات ، أو PULLلقوائم انتظار البيانات، أو للإدخال القياسي (عادةً لوحة المفاتيح)، VALUEأو لأي تعبير. عند استخدام VALUE، WITHتُعدّ الكلمة المفتاحية ضرورية لتحديد نهاية التعبير، متبوعة بنمط تحليل. يمكن أن يكون هذا النمط قائمةً من المتغيرات، أو رقم موضع، أو محددات حرفية؛ ومن الممكن استخدام هذه الأنماط مجتمعةً. اختياريًا، يمكن تحويل حالة الأحرف (كبيرة أو صغيرة) للسلسلة النصية قبل التحليل. [ 32 ]
str = "الشخص: ريك ماكغواير"/* تحليل السلسلة باستخدام الحرف ":" والفراغات بين الكلمات إلى المتغيرات أ ("شخص")، ب ("ريك")، و ج ("ماكغواير") */parse var str a ":" b c /* parse by literal and blank */قل ب ج /* الناتج: ريك ماكغواير */الإجراء والوظيفة
توفر لغة ooRexx طريقة جديدة لتعريف الإجراءات والدوال غير المخصصة لفئة معينة باستخدام ::ROUTINEالتوجيه `<project> `. على عكس التوجيه القديم `<project>` PROCEDURE، يحتوي الكود المُعرَّف باستخدام `<project>` ::ROUTINEعلى `<project>` ضمنيًا RETURNفي النهاية. CALLيمكن استخدام هذا التوجيه لاستدعاء روتين كإجراء. بالإضافة إلى ذلك، RETURNيمكن استدعاء الروتينات التي تُرجع قيمًا عبر تعليمات الكلمات المفتاحية باستخدام استدعاءات الدوال عن طريق تحديد اسم الروتين متبوعًا بأقواس. يتم تمرير المحتوى الموجود داخل الأقواس كوسائط إلى الروتين. بينما PARSE ARGيمكن استخدام التوجيه `<project>` لتحليل وسائط السلسلة النصية المُستلمة وتعيينها لمتغيرات، USE ARGيجب استخدام التوجيه الأحدث للكائنات من أنواع أخرى. علاوة على ذلك، STRICTيمكن استخدام الخيار `<project>` لتقييد عدد الوسائط التي يجب أن تتطابق مع عدد الأسماء المُحددة. [ 32 ]
استدعاء DoSomething /* تعليمات الكلمة المفتاحية "CALL" */table = . stem ~ new /* كائن جذعي لـ indsum */الجدول [ 1 ] = 2 ؛ الجدول [ 2 ] = 4say indsum { table , 1.2 ) /* استدعاء دالة يتطلب استخدام الوسيطة */say dirsum ( 2 , 4 ) /* إما تحليل arg أو استخدام arg okay */:: روتين DoSomething /* توجيه "ROUTINE" (إجراء) */قل "لقد فعلت شيئًا!" /* الناتج: لقد فعلت شيئًا! *//* إرجاع ضمني بسبب التالي *//* العبارة عبارة عن توجيه. */:: توجيه الروتين /* توجيه "ROUTINE" (دالة) */تحليل الوسيط الأول والثاني /* صحيح لأن كلاهما سلاسل نصية. */العودة الأولى + الثانية: : روتين indsum /* توجيه "ROUTINE" (دالة) */استخدم جدول الوسائط الصارم ، الأول ، الثاني /* لا يمكن استخدام تحليل الوسائط مع وسيط الجذر */المجموع = الجدول { الأول } + الجدول [ الثاني ] /* إجراء العملية الحسابية */إرجاع المجموع /* "إرجاع" النتيجة */الفئة والطريقة
يؤدي التوجيه المتبوع باسم فئة إلى تعريف المفسر لفئة جديدة. بعد اسم الفئة، يمكن ضبط خيارات مثل `<class>` و`<class>` و` ::CLASS< class > ` و` <class>` لاستخدام ميزات البرمجة الكائنية. يمكن استخدام التوجيه `<class>` لتعريف دالة فئة جديدة مرتبطة بالتوجيه الأخير . يُستخدم التوجيه `<class>` لتعريف دالة وصول يمكنها استرجاع أو تعيين متغير كائن. باستخدام هذه التعليمات، يمكن عرض متغير كائن مباشرةً لدالة. [ 32 ]METACLASSSUBCLASSMIXINCLASSABSTRACTINHERIT::METHOD::CLASS::ATTRIBUTEEXPOSE
d = . dog ~ new ( "Bella" ) /* إنشاء كلب وتعيينه */d ~ bark /* إرسال رسالة نباح */قل د ~ الاسم /* الناتج: بيلا */:: كلب الفئة /* توجيه الفئة */:: اسم الخاصية /* توجيه الخاصية */:: طريقة التهيئة /* طريقة تهيئة الكائن */إظهار الاسم /* يكشف اسم الكلب */استخدم اسم الوسيطة /* يُسند "بيلا" إلى الاسم */:: method bark /* توجيه الأسلوب */كشف الاسم قل اسم "ينبح!" /* الناتج: بيلا تنبح! */معالجة الأخطاء
يمكن استخدام تعليمة الكلمة SIGNALالمفتاحية لتغيير آلية اعتراض حالات معينة ONأو OFFتحديد وقت حدوثها. يمكن تحديد عدة مصائد للحالاتERROR ، على سبيل المثال ، FAILUREيتم تفعيلها بواسطة تعليمة أمر تشير إلى خطأ أو فشل عند العودة، أو SYNTAXبسبب بناء جملة برنامج غير صالح أو حالات خطأ أخرى، HALTأو يتم تفعيلها بواسطة محاولة مقاطعة خارجية (مثل اختصار لوحة المفاتيح Ctrl+C ). ANYيمكن استخدامها لاعتراض أي شيء لا تعترضه مصائد الحالات الأكثر تحديدًا. من مصائد الحالات الأكثر تحديدًا الأخرى: LOSTDIGITS(تحتوي العملية الحسابية على أرقام أكثر مما هو محدد في الإعداد الحالي)، NOMETHOD(لم يتم تحديد الطريقة المستخدمة ولا يحتوي الكائن على UNKNOWNطريقة)، NOSTRING(لا يُرجع الكائن قيمة سلسلة مطلوبة)، NOTREADY(خطأ أثناء عملية إدخال أو إخراج)، أو NOVALUE(استخدام متغير غير مهيأ). [ 32 ]
يمكن استخدام الوظيفة المدمجةCONDITION لاسترجاع معلومات مثل اسم الحالة المعترضة الحالية وعملية التعليمات الناتجة، وحالة الحالة المعترضة، وسلسلة وصفية، ومعلومات إضافية عن الكائن. [ 32 ]
إشارة على بناء الجملة /* تشغيل مصيدة بناء الجملة */قل 1 + "AString" /* عملية حسابية مستحيلة */مخرجبناء الجملة :ConditionObject = Condition ( Object ) /* الحصول على معلومات إضافية */قل "رمز الخطأ هو" ConditionObject ~ Code /* الناتج: رمز الخطأ هو 41.1 */say ConditionObject ~ ErrorText /* الناتج: تحويل حسابي خاطئ. */وبالمثل، CALLيمكن استخدام تعليمة الكلمة المفتاحية ليس فقط لاستدعاء روتين ، بل أيضًا للتحكم في معالجة حالات معينة عند ONتحديدها OFFمع معالجة حالة محددة (مثلًا، CALL ON HALTو CALL OFF HALT). لا تُفرغ هذه التعليمات مكدس التحكم ، ويستأنف التنفيذ العادي عند عودة معالج الحالة. [ 32 ]
تعدد الخيوط
من الناحية المفاهيمية، يوفر ooRexx التزامن القائم على الكائنات ، حيث تمتلك الكائنات موارد مستقلة لتنفيذ الدوال، ويمكنها التواصل فيما بينها باستخدام نموذج المراسلة. يمكن أن تكون عدة كائنات نشطة في الوقت نفسه، وتتبادل الرسائل لتحقيق التزامن . [ 32 ] يمكن تحقيق التزامن باستخدام REPLYتعليمة الكلمة المفتاحية، التي تُنهي تنفيذ الدالة مبكرًا بينما يستمر تنفيذها في سلسلة عمليات جديدة. بدلاً من ذلك، GUARDيمكن استخدام تعليمة الكلمة المفتاحية لتمييز دالة على أنها غير محمية، بحيث يمكن تنفيذها مع دوال أخرى من نفس الفئة. أخيرًا، STARTيؤدي استخدام الدالة (من فئة الكائن أو الرسالة) إلى معالجة المُستقبِل للرسالة المُستلمة في سلسلة عمليات منفصلة، مما يُتيح التزامن أيضًا. [ 32 ]
التتبع
كما هو الحال في لغة Rexx الكلاسيكية، تُسهّل TRACEعبارة الكلمة المفتاحية والدالة المدمجة TRACE()عملية تصحيح الأخطاء. إذ يُتيح كلاهما التحكم في مستوى التفاصيل، ويُمكّنان من تصحيح الأخطاء التفاعلي أثناء التشغيل. [ 42 ] عند تصحيح الأخطاء التفاعلي، يتوقف المفسر مؤقتًا بعد معظم التعليمات التي يتم تتبعها. [ 32 ] يُقدّم الإصدار ooRexx 5.1.0 TraceObjectفئةً تُسهّل تتبع البرامج متعددة الخيوط، على سبيل المثال من خلال تسهيل تحديد الطريقة التي يتم حمايتها وحظرها حاليًا. [ 32 ] [ 42 ]
يمكن تحديد كمية المعلومات الإضافية المُقدمة باستخدام أحد الخيارات التالية: أو ، "Thread"أو . على سبيل المثال، يُظهر الخيار ، معرّفات مثيل التفسير، والخيط، والاستدعاء، ومجموعة السمات، بالإضافة إلى حالة الحماية الحالية، وعدد الأقفال، ومؤشر حجز قفل الحماية، وحالة الانتظار. [ 42 ] [ 43 ]"Standard""Full""Profiling""Full"
إيقاف التتبع /* لا تقم بتتبع المقدمة */TraceObject ~ option = "Full" /* اضبط الخيار على "Full" * /TraceObject ~ collector = array ~ new o = . Test ~ new /* إنشاء نسخة */قل "بدء تشغيل العامل بشكل غير متزامن ..."o ~ start ( "do" ) /* يتم إرسالها على سلسلة عمليات جديدة */قل "على وشك انتظار انتهاء عمل العامل ..."o ~ انتظر /* تزامن مع العامل */قل "انتهى الانتظار":: اختبار الفئة:: دالة التهيئة / * الدالة البانية */كشف القفل /* سمة الوصول */lock = . true /* تعيين القيمة الافتراضية */:: انتظار الطريقة بدون حماية كشف القفل /* سمة الوصول */الحماية مفعلة عندما يكون القفل = خطأ: : طريقة do /* قم ببعض العمل */كشف القفل /* سمة الوصول */t = عشوائي ( 1 ، 999 ) / 1000قل "افعل: العمل لمدة " ثانيةاستدعاء sysSleep t قل "افعل: إنهاء العمل"lock = . false /* تحرير القفل */:: نتائج تتبع الخياراتيعتمد مصحح الأخطاء ooRexx، المضمن أيضًا في حزمة "net-oo-rexx"، على Trace ويوفر واجهة مستخدم رسومية (GUI) تستخدم جسر Java لتسهيل تصحيح الأخطاء على جميع المنصات. [ 21 ] [ 44 ]
الوظائف والفئات المدمجة
بما أن ooRexx يهدف إلى التوافق مع Rexx الكلاسيكي، فإن الوظائف المدمجة التقليدية لا تزال متاحة. [ 38 ] يوفر الإصدار 5.1.0 اثنتين وثمانين وظيفة مدمجة، تشمل وظائف معالجة الأحرف والتحويل والمعلومات، ويستدعي العديد منها توابع الفئة . بالإضافة إلى ذلك، توفر مكتبة الارتباط الديناميكيString المدمجة RexxUtil تسعًا وعشرين وظيفة متعددة المنصات، وخمسًا وعشرين وظيفة خاصة بنظام Windows، وأربع وظائف خاصة بنظام Unix لمعالجة ملفات النظام والمجلدات والفئات والكائنات. [ 32 ]
تماشياً مع جذورها الكائنية التوجه، توفر ooRexx معظم وظائفها عبر فئات وأساليب مدمجة. يأتي الإصدار ooRexx 5.1.0 مزوداً بـ 58 فئة مدمجة، مقسمة إلى مجموعات الفئات الأساسية، والتدفق، والمجموعات، والأدوات المساعدة. [ 32 ]
الصفوف الأساسية
تُعدّ الفئات الأساسية اللبنات الأساسية لجميع الفئات الأخرى. Objectتُمثّل الفئة جذر التسلسل الهرمي للفئات ، بحيث تكون أساليبها وخصائصها متاحة لجميع الكائنات المُنشأة من كل فئة. Classتُستخدم الفئة (المعروفة أيضًا بالفئة الوصفية) للحفاظ على خصائص الفئة (مثل كائنات أساليبها) وتُستخدم لإنشاء مثيلات (أي كائنات أو قيم). لذلك، يتم إنشاء مثيل لهذه الفئة (أي كائن الفئة) لكل ::CLASSتوجيه. [ 32 ] الغرض من Methodالفئة Routineوالفئة هو إنشاء كائنات الأساليب أو الروتينات. تُوفّر Stringالفئة أساليب للتعامل مع السلاسل النصية، مثل العمليات المنطقية، والدمج، والنسخ، والربط، والتقسيم، والعكس، والعمليات الحسابية، والتحويل، وغيرها. [ 38 ] يحتوي مثيل Packageالفئة على جميع الروتينات والفئات والأساليب المُنشأة، ويُدير التبعيات الخارجية المُشار إليها بواسطة ::REQUIRESالتوجيهات. Messageتُمكّن الفئة من إرسال الرسائل بشكل غير متزامن، مما يُتيح التنفيذ المتزامن للأساليب. [ 32 ] [ 38 ]
فئات التدفق
تُسهّل فئات التدفق التواصل مع الكائنات الخارجية مثل الملفات، وقوائم الانتظار، والواجهات التسلسلية ، والأجهزة، وما إلى ذلك. Streamالفئة نفسها هي فئة مُدمجة قابلة للتوريث، وهي فئة فرعية من InputOutputStreamالفئات InputStream,الأخرى OutputStream. [ 32 ]
تُوفّر هذه Streamالفئة طرقًا لفتح وقراءة وكتابة وإغلاق التدفقات، وتفريغ المخازن المؤقتة، وتحديد موقع الملف، واسترجاع المعلومات، وغيرها من العمليات المتعلقة بالتدفقات. بينما OPENتفتح الطريقة التدفق، ARRAYINيمكن استخدام طريقة أخرى لقراءة محتواه في كائن مصفوفة. CLOSEوتُغلق الطريقة التدفق صراحةً قبل أن يستعيد جامع البيانات المهملة كائن التدفق . [ 32 ] [ 38 ]
StreamObj = .stream ~ new ( "someFile.txt" ) / * إنشاء كائن دفق */StreamObj ~ open /* فتح البث */FileContent = StreamObj ~ ArrayIn /* قراءة المحتوى */StreamObj ~ close /* إغلاق التدفق */قل FileContent /* يُخرج المحتوى */فصول دراسية جماعية
المجموعة هي كائن يحتوي على عناصر متعددة ذات فهارس مرتبطة بها، مما يُمكّن من استرجاع العناصر باستخدام طرق ATمثل []`mapCollection` و`setCollection` و`OrderedCollection`. توجد فئات مثل `MapCollection` و`SetCollection` و`OrderedCollection`، وكلها تسمح بالتعامل مع نوع مجموعة محدد. [ 38 ]
مجموعة الخرائط (MapCollection) هي فئة مُدمجة تُعرّف مجموعة الدوال الأساسية التي تُنفذها جميع المجموعات التي تربط بين فهرس وقيمة. ترث الفئات Directory`<mapCollection> StringTable` و` IdentityTable< mapCollection>` Propertiesو` <mapCollection>` Tableو` <mapCollection>` Relationو` <mapCollection>` هذه الدوال. [ 32 ] كائن الدليل (Directory) أو كائن جدول السلاسل النصية (StringTable) هو مجموعة من فهارس السلاسل النصية الفريدة. في كائن جدول الهوية (IdentityTable)، يرتبط كل عنصر بفهرس واحد فقط، ولا يمكن أن يكون هناك سوى عنصر واحد لكل فهرس. يوفر كائن الخصائص (Properties) دوالًا مُحددة لحفظ وتحميل الخصائص في الملفات. على عكس كائن الجدول (Table)، الذي لا يمكن أن يحتوي على فهارس مُكررة، فإن كائن العلاقة (Relation) هو مجموعة يمكن أن تحتوي عناصرها على نفس الفهرس، والذي يمكن أن يكون من أي نوع كائن.Stem
يُنشأ كائن Stem تلقائيًا عند استخدام متغير مُركّب. وكما هو الحال في لغة Rexx الكلاسيكية، يتكون هذا المتغير من جذر وذيل، يفصل بينهما نقطة ( .). يجب أن يبدأ الجذر بحرف، بينما يمكن أن يكون الذيل أي رمز. استخدام ذيل رقمي واحد يُعطي نفس تأثير المصفوفة ، بينما يمكن استخدام عدة ذيول رقمية لإنشاء مصفوفة متعددة الأبعاد. [ 32 ] [ 38 ]
الفواكه . 1 = "تفاحة" /* تعيين قيمة لمتغير الجذر */الفواكه . 4 = "برتقال" /* تعيين قيمة لمتغير الساق */قل الفواكه . 4 /* الناتج: برتقال */قل الفواكه . [ 1 ] /* الناتج: تفاحة */تُعدّ مجموعات SetCollections أنواعًا خاصة من مجموعات MapCollections حيث يكون الفهرس والعنصر هما نفس الكائن. وعلى الرغم من أن الفهارس في Setالكائن فريدة، إلا أن كل فهرس في Bagالكائن يمكن أن يظهر أكثر من مرة. [ 32 ]
المجموعة المرتبة (OrderedCollection) هي فئة مُدمجة تُعرّف الطرق الأساسية لجميع المجموعات التي لها ترتيب فهرس مُضمّن، مثل الفئات List`OrderedCollection` Queueو` CircularQueueOrderedCollection` و`OrderedCollection` Array. يسمح كائن القائمة (List) بإضافة عناصر جديدة، مع إنشاء فهرس جديد لكل عنصر، في أي موضع ضمن المجموعة. ويظل الفهرس المرتبط بهذا العنصر صالحًا بغض النظر عن أي إضافات أو عمليات حذف أخرى. يسمح كائن الطابور (Queue) بإزالة العناصر من بداية الطابور وإضافتها إلى نهايته أو بدايته. أما كائن الطابور الدائري (CircularQueue) فهو طابور ذو حجم مُحدد مُسبقًا. عند الوصول إلى نهاية الطابور الدائري، تُضاف العناصر الجديدة من البداية لتحل محل العناصر السابقة. [ 32 ] [ 38 ]
المصفوفة عبارة عن مجموعة متسلسلة مرتبة بفهارس أعداد صحيحة. ومثل بعض فئات المجموعات الأخرى، Arrayتوفر هذه الفئة MAKESTRINGطريقة لترميز عناصرها ككائن نصي. [ 32 ]
ArrayObj = .array ~ of ( "One" , "Two" , "Three" ) / * مصفوفة تحتوي على 3 عناصر */say ArrayObj ~ at ( 2 ) /* الناتج: اثنان */say ArrayObj ~ makeString (, "; " ) /* الناتج: واحد؛ اثنان؛ ثلاثة */فئات المرافق
تُعدّ فئات الأدوات المساعدة مجموعةً من 31 فئةً تُوفّر تطبيقاتٍ للمهام الشائعة. MutableBufferتُتيح هذه الفئة كفاءةً أكبر في عمليات السلاسل النصية، مثل دمج النصوص، إذ لا حاجة لتعيين كائن جديد. Fileكما تُوفّر الفئة طرقًا لعرض الملفات في دليلٍ ما أو لاسترجاع معلوماتٍ حول الملفات والأدلة. [ 32 ]
FileObj = .File ~ new ( "~/someFolder/" ) / * إنشاء كائن ملف للمجلد */FileArr = FileObj ~ ListFiles /* استرجاع مصفوفة الملفات */قم بتنفيذ FilePath على FileArr /* التكرار على عناصر المصفوفة */قل مسار الملف /* الناتج: عنصر مسار الملف */نهايةتدعم فئات DateTimeالمقارنة TimeSpanاسترجاع وتنسيق التاريخ والوقت والطابع الزمني بتنسيقات متنوعة، كما تُمكّن من إجراء العمليات الحسابية بينها. وتُسهّل العديد من فئات المقارنة عملية الفرز للفئات المُدمجة مثل File وDateTime وغيرها. وتُمكّن الفئة Supplierوفئتها الفرعية StreamSupplierمن تعداد مجموعة عناصر بالإضافة إلى مجموعة فهارس. Validateوتُوفّر الفئة طرقًا يُمكن استخدامها للتحقق مما إذا كانت الوسائط المُعطاة من الفئة والنوع الصحيحين، أو ضمن نطاق عددي مُحدد. VariableReferenceيحتفظ مثيل مرجعي، بينما WeakReferenceيُنشئ مثيل مرجعًا لكائن آخر غير مُثبّت. [ 32 ]
التعبير النمطي هو نمط يُستخدم لمطابقة السلاسل النصية. ولزيادة وضوح الأنماط في الكود، RegularExpressionتسمح الفئة باستخدام أسماء رمزية محصورة بين نقطتين رأسيتين ( ) للمجموعات الشائعة. على سبيل المثال، يمكن اختصار :مطابقة سلسلة نصية تحتوي على أحرف فقط، والتي تُوصف عادةً بأنها ، باستخدام . [ 32 ][A-Za-z][:alpha:]
تساعد فئات أخرى في الحصول على معلومات حول سياق الكود المُنفَّذ حاليًا RexxContext، ولغة Rexx أو منصة التنفيذ، RexxInfoوتفاصيل التنفيذ StackFrameعبر رموز البيئة. صُممت Bufferالفئتان و Pointerخصيصًا لدعم كتابة الدوال والأساليب في الكود الأصلي باستخدام واجهات برمجة تطبيقات C/C++. توفر الفئتان و وظائف الإشعارات، بينما Alarmتُنفِّذ الفئتان و آليات التزامن لأنشطة تعدد الخيوط. تُمكِّن الفئة من إعادة توجيه الرسائل إلى كائنات مستهدفة مختلفة، وتوفر الفئة وصولًا شبيهًا بالكائنات إلى قوائم انتظار بيانات Rexx الخارجية. [ 32 ]TickerEventSempahoreMutexSempahoreMonitorRexxQueue
الحزم والمكتبات الخارجية
باستخدام ::REQUIRESالتوجيه وتحديد LIBRARYالخيار، يمكن دمج المكتبات الخارجية لكل برنامج. وعادةً ما تُنظَّم هذه المكتبات حول وظائف خاصة بالمجال. [ 32 ]
مزود بمترجم
توفر مكتبة Rexx الإضافية فئات لقراءة وكتابة ملفات القيم المفصولة بفواصل (CSV)، بالإضافة إلى إنشاء ومعالجة بيانات JSON. كما تتضمن مكتبة "hostemenu" التي تحاكي جزئيًا بيئة TSO / CMS . [ 45 ] تُمكّن مكتبة RxSock الأصلية من دمج بروتوكولات TCP/IP ، [ 46 ] بينما توفر مكتبة RxFtp الأصلية [ 47 ] الوصول إلى بروتوكول نقل الملفات ( FTP) تحديدًا . أما مكتبة RxMath الأصلية، فتُقدم دوال رياضية متقدمة مثل حساب الجذر التربيعي، والدالة الأسية، واللوغاريتم، والجيب، وجيب التمام، والظل، وجيب الزاوية العكسي، وحساب القوى. [ 48 ]
قل rxcalcsin ( 1 ) /* الناتج: 0.0174524064 */:: يتطلب مكتبة 'rxmath' /* تحميل مكتبة أصلية */بالنسبة لنظام التشغيل ويندوز، يتضمن ooRexx إطار عمل ooDialog الذي يسمح بإنشاء مربعات حوار ويندوز ، وبالتالي واجهات مستخدم رسومية . [ 49 ] يأتي المفسر مزودًا بالعديد من البرامج النموذجية وحزم الدوال التي توضح استخدام هذا الإطار. [ 38 ] بالنسبة لأنظمة التشغيل المتوافقة مع POSIX ، تُمكّن مكتبة فئات orxnCurses من كتابة واجهات مستخدم نصية باستخدام مكتبة البرمجة ncurses . [ 50 ] توفر مكتبة RxUnixSys دوالًا على معظم أنظمة يونكس للتفاعل مع العمليات والخيوط، والمستخدمين ومجموعات المستخدمين، والملفات وأنظمة الملفات ، وغيرها. [ 51 ] العديد من هذه الحزم والمكتبات الخارجية متوافقة أيضًا مع تطبيقات Rexx الأخرى .
لا يتم توفير مترجم فوري
توجد أيضًا حزم تتطلب التنزيل والإضافة يدويًا. وكجزء من حزمة Net-oo-rexx، تُمكّن حزمة Regex من التعامل مع التعابير النمطية، بينما توفر Log4rexx إطار عمل للتسجيل، وOorexxshell واجهة تفاعلية لـ ooRexx. [ 21 ] أما ooRexxUnit فهو إطار عمل للاختبار مستوحى من JUnit ، يُمكّن من تنفيذ حالات اختبار ooRexx التي تساعد في التحقق من استيفاء مواصفات التطبيق. [ 52 ]
توفر حزمة Rexx Parser محللًا لشجرة بناء الجملة المجردة لـ Rexx و ooRexx، حيث تُصنّف جميع عناصر النص البرمجي، بينما تُوسّع حزمة Rexx Highlighter نطاق المحلل وتُمكّن من إخراج التمييز بصيغ HTML وألوان ANSI و LuaTex و LaTeX . [ 53 ] [ 54 ] يُمكّن محلل Rexx XML من تحليل ملفات XML إلى نموذج في الذاكرة والوصول إلى هذا النموذج عبر واجهة برمجة تطبيقات شبيهة بـ DOM . [ 55 ] يوجد أيضًا محلل XML DOM بدون وظيفة تحقق، يتضمن مُنشئ DOM وطرق الوصول إليه. [ 56 ]
على الرغم من أن RexxGTK لا يغطي مجموعة أدوات GTK بالكامل ، إلا أنه يغلف مكتبة GTK بمجموعة من فئات ووظائف ooRexx لتوفير وظائف واجهة مستخدم رسومية مستقلة عن النظام الأساسي. [ 57 ] [ 58 ] تتوفر حزمة تجريبية مع دعم مُختَبَر لنظام Linux للإصدارات الأحدث من GTK. [ 56 ] يوفر Rexx/Tk واجهة لمكتبة Tk تسمح بإنشاء تطبيقات واجهة مستخدم رسومية محمولة ومتعددة المنصات. [ 59 ]
تم إصدار RexxHTTP لأول مرة عام 2006، وهو برنامج CGI يُستخدم لإنشاء تطبيقات الويب. يقوم البرنامج بتحويل بيئة CGI الخام إلى مجموعة صغيرة من الكائنات لكل طلب وارد، ثم يُنفذ عليها برنامج ooRexx. يتم إنتاج المخرجات باستخدام تعليمات عادية Sayأو CharOutتعليمات أخرى. يتطلب RexxHTTP الإصدار 5.2.0 من ooRexx أو أحدث، بالإضافة إلى Apache 2.4. [ 60 ] تتبنى حزمة Mod_Rexx نهجًا مختلفًا في تطوير الويب، حيث توفر وحدة نمطية لـ Apache 2.4 تُتيح واجهة لـ ooRexx على أنظمة Windows وAIX وLinux، وتُمكّن من معالجة جميع مراحل الطلب. [ 61 ]
الجسور
على الرغم من أن ooRexx، مقارنةً بـ Object REXX، لم يعد يحتوي على فئات لدعم SOM وWPS، إلا أنه يوفر واجهات برمجة تطبيقات (APIs) للتفاعل مع التعليمات البرمجية المكتوبة بلغة C أو C++ . [ 62 ] كما توجد مكتبة خارجية تُنفذ جسر Java ثنائي الاتجاه ، مما يُتيح التفاعل بين ooRexx وJava. [ 35 ] وتوجد أيضًا فئات تُتيح التفاعل مع قواعد بيانات SQL وأتمتة تطبيقات Windows. وفي ندوة Rexx السادسة والثلاثين، عُرض جسر تجريبي إلى Python . [ 63 ]
واجهات برمجة تطبيقات C/C++
كما هو الحال في لغة Rexx الكلاسيكية، تتضمن ooRexx واجهات برمجة تطبيقات (APIs) لتوسيع Rexx باستخدام تطبيقات مكتوبة بلغة C والعكس صحيح. وهذا يُمكّن من إنشاء معالجات للأوامر الفرعية المستخدمة في برامج Rexx التي تعمل كوحدات ماكرو للتطبيق ، ووظائف خارجية تسمح بتوسيع مجموعة وظائف ooRexx بشكل مباشر، ووظائف نظام تسمح بتخصيص سلوك المفسر. [ 62 ]
مع إصدار ooRexx 4.0.0، تم تقديم واجهات برمجة تطبيقات (APIs) تُمكّن تطبيقات C++ من توسيع ooRexx والعكس صحيح. يشمل ذلك معالجات للطرق والدوال المكتوبة بلغة C++ والتي تُوسّع ooRexx، وكلاهما مُغلّف كمكتبات خارجية. هذه المكتبات هي مكتبات ارتباط ديناميكي على نظام Windows أو مكتبات مشتركة على أنظمة Unix. يمكن تحميل مكتبة خارجية باستخدام التوجيه `--load` ::REQUIRESأو باستخدام EXTERNALتعليمة الكلمة المفتاحية `--load` كجزء من توجيه `--load` ::ROUTINEأو ::METHOD` --load` أو ::ATTRIBUTE`--load`.
جافا

تم تطوير BSF4ooRexx باستخدام واجهات برمجة تطبيقات C++ كجسر جافا ثنائي الاتجاه يعتمد على إطار عمل Bean Scripting Framework . يُمكّن هذا الجسر ooRexx من التواصل مع كائنات جافا، كما يُمكّن جافا من التفاعل مع تطبيقات Rexx. [ 64 ] [ 41 ] يتم إنشاء هذا الجسر من خلال استدعاء حزمة ooRexx BSF.CLS، التي تُعرّف الإجراءات العامة والفئات ورمز البيئة .BSF4REXX. [ 41 ] تُقدّم أمثلة لاستخدام فئات جافا مع AWT و Swing و JavaFX و JDBC و Java 2D وغيرها. [ 64 ]
/* إنشاء كائن جافا */frame = .bsf ~ new ( "javax.swing.JFrame" , "مرحباً يا عالمي الحبيب - من ooRexx!" )frame ~ setSize ( 410 , 20 ) /* تحديد العرض والارتفاع */frame ~ visible =. true /* اجعل JFrame مرئيًا */استدعاء SysSleep 10 /* الانتظار لمدة عشر ثوانٍ */:: يتطلب "BSF.CLS" /* الحصول على دعم جافا */يدعم هذا البرنامج التفاعل مع كائنات الشبكة العالمية (UNO)، المستخدمة في OpenOffice و LibreOffice ، وذلك بالاعتماد على BSF4ooRexx UNO.CLS. [ 65 ] كما يُمكّن البرنامج CLR.CLS، بالاشتراك مع Jini4Net ، من استخدام إطار عمل .NET . [ 66 ] ويتيح البرنامج أيضًا التواصل مع العمليات عبر وسيط D-Bus في نظام Linux . [ 67 ] ويوفر البرنامج معالج أوامر يستفيد من فئات Java2D (المبنية على AWT) لعرض الرسومات. [ 68 ] وبالاعتماد على معالج أوامر JDOR، يُمكّن البرنامج التجريبي من عرض الرسومات ثلاثية الأبعاد باستخدام فئات JavaFX ثلاثية الأبعاد. [ 69 ]DBUS.CLSJDOR.CLSJDORFX.CLS
SQL
توفر فئة ooSQLite واجهةً لـ SQLite ، وهي مكتبةٌ تعمل داخل العملية تُنفِّذ محرك قاعدة بيانات SQL مُكتفيًا ذاتيًا، ولا يتطلب خادمًا، ولا يحتاج إلى أي إعدادات، ويدعم المعاملات . [ 70 ] وهي تسمح بالتفاعل مع العديد من أنواع قواعد بيانات SQL دون الحاجة إلى تغيير البرنامج النصي، ولكنها لا تدعم تعدد الخيوط. [ 71 ]
تتيح حزمة Rexx/SQL الخارجية الوصول إلى قواعد بيانات SQL من مختلف الموردين عبر بروتوكول ODBC. [ 72 ] وبهدف توفير وظائف أكثر من مجرد مجموعة فرعية من وظائف ODBC، وضمان سلامة الاستخدام المتزامن ، توفر مكتبة Rexx MySQL غلافًا برمجيًا بلغة C لإضافة دعم MySQL . [ 73 ]
أتمتة ويندوز
يتضمن ملحق ويندوز محرك برمجة Windows Script Host (WSH) الذي يُستخدم لتنفيذ مهام الأتمتة العامة. كما يتضمن دعم ربط وتضمين الكائنات / ActiveX (OLE) مما يسمح بالتفاعل مع برامج ويندوز عبر OLE OLEObject. [ 74 ] أتمتة OLE هي آلية اتصال بين العمليات طورتها مايكروسوفت ، وتعتمد على مجموعة فرعية من نموذج كائنات المكونات (COM). تُمكّن هذه الآلية، من بين أمور أخرى، من استدعاء وظائف البرنامج، والاستعلام عن السمات وتعيينها، واعتراض أحداث المكونات. يأتي مُفسّر ooRexx مزودًا بأمثلة توضح تفاعل OLE مع Access و Word و Excel و OpenOffice / LibreOffice و ActiveDirectory و WMI وغيرها من البرامج. علاوة على ذلك، يتضمن برنامجًا مساعدًا للبحث عن كائنات OLE المتاحة. [ 38 ]
exc = . OLEObject ~ new ( "Excel.Application" ) /* إنشاء كائن لبرنامج Excel */exc ~ visible = . true /* اجعل برنامج Excel مرئيًا */ورقة عمل = استثناء ~ دفاتر العمل ~ إضافة ~ أوراق العمل [ 1 ] /* إضافة ورقة عمل */ورقة العمل ~ الخلايا ( 1 ، 1 ) ~ القيمة = "الخلية الأولى" /* أدخل السلسلة في الخلية */بالإضافة إلى دعم OLE، يتيح ملحق Windows التفاعل مع مدير برامج Windows، وسجل أحداث النظام ، والحافظة ، والسجل، فضلاً عن الاستعلام عن النوافذ والقوائم والقوائم الفرعية وتحريرها والتفاعل معها. [ 74 ]
ملحوظات
- ↑ بما في ذلك واجهات لنموذج كائن النظام (SOM) وواجهة بيئة العمل (WPS)
- ↑ باستثناء حزم SOM و WPS
- ↑ اعتبارًا من الإصدار 5.0.0، يحتوي ooRexx على التوجيهات التالية
::ANNOTATE:::ATTRIBUTE، ،::CLASS،::CONSTANT،::METHOD،::OPTIONS،::REQUIRES،::RESOURCEو::ROUTINE.
انظر أيضاً
مراجع
- 1 2 3 "X3.274-1996 المعهد الوطني الأمريكي للمعايير للغة البرمجة Rexx" (PDF) .
- 1 2 3 4 فوسديك، هوارد (2024). مرجع مبرمج ريكس (ملف PDF) ( الطبعة الثانية). جمعية لغة ريكس. ISBN 979-898611913-7.
- ↑ "7 أسباب تجعل ريكس لا يزال مهمًا" . SmartBear.com . تم الاطلاع عليه بتاريخ 19-06-2024 .
- 1 2 "IBM Object REXX – EDM2" . www.edm2.com . تم الاطلاع عليه بتاريخ 19-06-2024 .
- ↑ ناش، سيمون سي. (11-06-1990). "REXX الموجهة للكائنات" (ملف PDF) . وقائع ندوة REXX للمطورين والمستخدمين : 76-100 .
- ↑ ناش، سيمون سي. (2009-05-21). "نظرة استعادية على لغة ريكس الكائنية" (ملف PDF) . وقائع ندوة لغة ريكس العشرين .
- 1 2 "IBM Object REXX لنظام التشغيل OS/2 – EDM2" . www.edm2.com . تاريخ الاسترجاع: 19-06-2024 .
- 1 2 "يعمل برنامج IBM Object REXX الآن على نظامي التشغيل Windows NT وWindows 95" . IBM. 25-02-1997.
- ↑ شفايتزر، مانفريد؛ بيرغر، أوفه (21-04-2005). "من Object REXX إلى ooRexx" (ملف PDF) . وقائع ندوة لغة Rexx السادسة عشرة .
- 1 2 "IBM Object REXX لنظام AIX - لغة برمجة نصية كائنية التوجه للمبتدئين والمبرمجين المتقدمين" . IBM. 1999-03-30.
- 1 2 "IBM Object REXX لنظام التشغيل Windows V2R1 - البرمجة الكائنية التوجه للمبتدئين والمستخدمين المتقدمين" . IBM. 2001-03-20.
- ↑ أين ذهب دعم SOM في الإصدار 4.0.0؟
- ↑ "SOM و Object REXX – EDM2" . www.edm2.com . تاريخ الاسترجاع: 11 ديسمبر 2024 .
- ↑ ويليس بوتون (2004). "SOM و Object REXX" . EDM/2 . تم الاسترجاع في 2014-02-02 .
- ↑ "الوصول إلى كائنات بيئة العمل". مرجع Object REXX . شركة IBM.
- ↑ "هل يدعم نظام ArcaOS لغة REXX؟" . تم الاطلاع عليه بتاريخ 2020-09-03 .
- ↑ "سحب البرامج وإيقاف الخدمة: IBM Object REXX" . IBM. 2004-10-12.
- ↑ "RexxLA – Rexx Symposia" . www.rexxla.org . تم الاطلاع عليه بتاريخ 17-05-2024 .
- ↑ "ooRexx (Open Object Rexx) - تصفح /oorexx على SourceForge.net" . sourceforge.net . تم الاطلاع عليه بتاريخ 18-05-2024 .
- ↑ "ooRexx (Open Object Rexx) - تصفح /oorexx-docs على موقع SourceForge.net" . sourceforge.net . تم الاطلاع عليه بتاريخ 18-05-2024 .
- 1 2 3 "Net-oo-rexx Readme" . 1 ديسمبر 2024.
- ↑ فلاتشر، روني ج. (2023). "إضافة IntelliJ IDEA ooRexxPlugin 2.2 لـ Rexx و ooRexx 5.0" (PDF) .
- ↑ Geulig, Thomas (2012). "ملف بناء جملة Vim: Rexx" .
- 1 2 3 4 "أخبار ooRexx" . سورس فورج . تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ مرجع Open Object Rexx الإصدار 3.0.0 (ملف PDF) . RexxLA. 24 مارس 2005. تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ "ooRexx 4.0.0: Readme" (ملف PDF) . تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ "ooRexx 4.1.0: ملاحظات الإصدار" . تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ "ooSQLite: Readme" . تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ "ooRexx 4.2.0: التغييرات" . تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ "ooRexx 5.0.0: التغييرات" . تم الاطلاع عليه بتاريخ 18 مايو 2024 .
- ↑ فلاتشر، روني ج. (2025). "تحديث إصدار OoRexx 5.1.0" (ملف PDF) . وقائع الندوة الدولية السادسة والثلاثين لـ Rexx .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع Open Object Rexx (PDF) . RexxLA.
- ↑ فلاتشر، روني ج. (2026). "إصدار ooRexx 5.2" (ملف PDF) . وقائع الندوة الدولية السابعة والثلاثين لـ Rexx .
- 1 2 3 كوليشو، مايك (1987). "تصميم لغة REXX" . إشعارات ACM SIGPLAN . 22 (2): 26-35 . doi : 10.1145/24686.24687 .
- 1 2 3 4 فلاتشر، روني ج.؛ وينكلر، تيل. "توظيف نموذج الرسائل لتسهيل تعلم مفاهيم البرمجة الكائنية التوجه" (ملف PDF) . في المؤتمر السابع والأربعين لتقنية المعلومات والاتصالات والإلكترونيات (MIPRO) لعام 2024 : 1244-1249 .
- 1 2 3 وينكلر، تيل؛ فلاتشر، روني ج. "العبء المعرفي في تعليم البرمجة: تخفيف العبء على المبتدئين باستخدام REXX" (ملف PDF) . المؤتمر الأوروبي المركزي للمعلومات والأنظمة الذكية .
- ↑ ستيفيك، أندرياس؛ سيبرت، سوزانا (2013). "دراسة تجريبية في بناء جملة لغة البرمجة" . معاملات ACM في تعليم الحوسبة . 13 (4): 1-40 . doi : 10.1145/2534973 .
- 1 2 3 4 5 6 7 8 9 10 11 أشلي، دبليو ديفيد؛ فلاتشر، روني ج. هيسلينج، مارك؛ ماكغواير، ريك؛ بيدين لي. سيمز، أوليفر. ولفرز، جون (2025). وثائق ooRexx 5.1.0 دليل المبرمج (PDF) . ريكسلا.
- ↑ "ooRexx (Open Object Rexx) / مناقشة / مساعدة: "... وسيقوم بتشغيل برامج REXX الكلاسيكية دون تغيير"" . sourceforge.net . تم الاطلاع عليه بتاريخ 17-06-2025 .
- 1 2 بارمووتر، جيل (2025). "تخصيص ooRexx" (ملف PDF) . وقائع الندوة الدولية الخامسة والثلاثين لـ Rexx .
- 1 2 3 فلاتشر، روني ج. (2009). "إصدار 2009 من BSF4Rexx الجزء الأول" (ملف PDF) . ندوة لغة ريكس العشرون . RexxLA.
- 1 2 3 فلاتشر، روني ج.؛ وينكلر، تيل (2024). "ابتكار فئة TraceObject لتحسين مراقبة وقت التشغيل لتطبيقات ooRexx" . وقائع ورشة العمل الدولية السابعة لجمعية ACM حول التحقق والمراقبة أثناء التنفيذ . الصفحات 19-24 . doi : 10.1145/3679008.3685543 . ISBN 979-8-4007-1119-0.
- ↑ فلاتشر، روني ج. (2025). "تحديث إصدار OoRexx 5.1.0" (ملف PDF) . وقائع الندوة الدولية السادسة والثلاثين لـ Rexx .
- ↑ "مصحح أخطاء ooRexx" . سورس فورج . 2025-01-26 . تم الاسترجاع في 2025-02-02 .
- ↑ آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). توثيق ooRexx 5.1.0 مرجع مكتبة ملحقات Rexx (ملف PDF) . RexxLA.
- ↑ آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع وظائف مقبس RxSock TCP/IP (ملف PDF) . RexxLA.
- ↑ آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). توثيق ooRexx 5.1.0 مرجع مكتبة فئات RxFtp (ملف PDF) . RexxLA.
- ^ اشلي، دبليو ديفيد؛ فلاتشر، روني ج. هيسلينج، مارك؛ ماكغواير، ريك؛ بيدين لي. سيمز، أوليفر. ولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع وظائف الرياضيات RxMath (PDF) . ريكسلا.
- ^ اشلي، دبليو ديفيد؛ فلاتشر، روني ج. ماكغواير، ريك؛ بيدين لي. سيمز، أوليفر. ولفرز، جون (2025). وثائق ooRexx 4.2.4 مرجع الحوار (PDF) . ريكسلا.
- ^ اشلي، دبليو ديفيد؛ فلاتشر، روني ج. هيسلينج، مارك؛ ماكغواير، ريك؛ بيدين لي. سيمز، أوليفر. شتاينبوك، إريك. ولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع مكتبة فئة nCurses (PDF) . ريكسلا.
- ↑ آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ شتاينبوك، إريك؛ وولفرز، جون (2025). توثيق ooRexx 5.1.0 مرجع وظائف امتدادات يونكس (PDF) . RexxLA.
- ↑ فلاتشر، روني ج. (2006). "ooRexxUnit: إطار اختبار متوافق مع JUnit لبرامج ooRexx" . ندوة Rexx الدولية لعام 2006 .
- ↑ "محلل ريكس" . rexx.epbcn.com . تم الاطلاع عليه بتاريخ 4 فبراير 2025 .
- ↑ "قلم التظليل ريكس" . rexx.epbcn.com . تم الاطلاع عليه بتاريخ 4 فبراير 2025 .
- ↑ أرمسترونغ، أندرو (2024-12-02)، abend0c1/rexxxmlparser ، تم استرجاعه في 2025-02-14
- 1 2 "(oo)Rexx - نماذج قيد التطوير" . www.idenburg.net . تم الاطلاع عليه بتاريخ 30-04-2026 .
- ↑ "ooRexx (Open Object Rexx) - تصفح /RexxGTK على SourceForge.net" . sourceforge.net . تم الاطلاع عليه بتاريخ 30 أبريل 2026 .
- ↑ آشلي، ديفيد (2008). "Open Object RexxGTK - واجهة مستخدم رسومية مستقلة عن النظام الأساسي" (ملف PDF) . ندوة لغة Rexx التاسعة عشرة .
- ↑ "Rexx/Tk" . rexxtk.sourceforge.net . تم الاطلاع عليه بتاريخ 17-07-2026 .
- ^ بلاسكو ، جوزيب ماريا (2026). وثائق ooRexx 1.0 RexxHTTP (PDF) .
- ↑ "Mod_rexx" . SourceForge . 2022-01-17 . تم الاسترجاع في 2025-02-04 .
- 1 2 آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 واجهات برمجة التطبيقات (PDF) . RexxLA.
- ↑ كوزوغودينلي، كان (2025). "بايثون لـ ooRexx" (ملف PDF) . وقائع الندوة الدولية السادسة والثلاثين لـ Rexx .
- 1 2 "BSF4ooRexx" . sourceforge.net . 12 أغسطس 2024. تم الاسترجاع في 10 نوفمبر 2024 .
- ↑ واغلشنر، كريستوف (2009). أتمتة OpenOffice.org باستخدام لغة البرمجة النصية ooRexx من خلال أمثلة موجزة مختارة بقلم أندرو بيتوناك (PDF) .
- ↑ باجينسكي، أدريان (2016). كتاب طبخ .NET باستخدام ooRexx.NET (PDF) .
- ↑ لاغلر، ريتشارد (2015). ربط لغة D-Bus لـ ooRexx: مقدمة حول أمثلة موجزة (PDF) .
- ↑ ديغر، إليف (2025). "BSF4ooRexx850 JDOR: رسم ثنائي الأبعاد بلغة جافا لـ ooRexx" (ملف PDF) . وقائع الندوة الدولية السادسة والثلاثين لـ Rexx .
- ↑ شالر، فيليب (2025). "JDORFX: توفير رسومات ثلاثية الأبعاد لـ ooRexx" (ملف PDF) . وقائع الندوة الدولية السادسة والثلاثين لـ Rexx .
- ^ اشلي، دبليو ديفيد؛ فلاتشر، روني ج. ماكغواير، ريك؛ ميسفيلد، مارك. بيدين لي. سيمز، أوليفر. ولفرز، جون (2025). وثائق ooRexx 1.0.1 مرجع ooSQLite (PDF) . ريكسلا.
- ↑ "إطار عمل كائنات OREXX/SQL - EDM2" . www.edm2.com . تاريخ الاسترجاع: 11 ديسمبر 2024 .
- ↑ "Rexx/SQL" . SourceForge . 19-06-2013 . تم الاطلاع عليه بتاريخ 03-02-2025 .
- ↑ "مكتبة REXX MySQL" . SourceForge . 2013-04-25 . تم الاطلاع عليه بتاريخ 2025-02-03 .
- 1 2 آشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع ملحقات ويندوز (PDF) . RexxLA.
للمزيد من القراءة
- أشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع Open Object Rexx (ملف PDF) . RexxLA.
- اشلي، دبليو ديفيد؛ فلاتشر، روني ج. هيسلينج، مارك؛ ماكغواير، ريك؛ بيدين لي. سيمز، أوليفر. ولفرز، جون (2025). وثائق ooRexx 5.1.0 دليل المبرمج (PDF) . ريكسلا.
- أشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 مرجع ملحقات ويندوز (ملف PDF) . RexxLA.
- أشلي، دبليو. ديفيد؛ فلاتشر، روني جي.؛ هيسلينج، مارك؛ ماكجواير، ريك؛ بيدين، لي؛ سيمز، أوليفر؛ وولفرز، جون (2025). وثائق ooRexx 5.1.0 واجهات برمجة التطبيقات (PDF) . RexxLA.
- فوسديك، هوارد (2024). مرجع مبرمج ريكس (ملف PDF) ( الطبعة الثانية). جمعية لغة ريكس. رقم ISBN 979-898611913-7.
- فلاتشر، روني ج. (2024). مقدمة إلى Rexx و ooRexx: من Rexx إلى Open Object Rexx (ooRexx) . من أكثر الكتب مبيعًا. ISBN 978-9403755038.
روابط خارجية
- لغات البرمجة النصية
- لغات البرمجة عالية المستوى
- لغات البرمجة متعددة الأنماط
- لغات البرمجة القائمة على الفئات
- لغات البرمجة الكائنية التوجه
- لغات البرمجة الهيكلية
- لغات البرمجة ذات الكتابة الديناميكية
- مترجمون فوريون مجانيون ومفتوحو المصدر
- لغات البرمجة النصية
- برنامج IBM
- برامج متعددة المنصات
- ريكس
- لغات البرمجة التي تم إنشاؤها عام 1988
