لغة البرمجة RPL

RPLهو نظام تشغيل ولغة برمجة تطبيقات للآلات الحاسبة المحمولة ، يُستخدم في آلات حاسبة الرسم البياني العلمي من هيوليت-باكارد ، من سلسلة HP 28 و 48 و 49 و 50 ، والتي تعمل بنظام RPN (التدوين البولندي العكسي) ، ولكنه قابل للاستخدام أيضًا في آلات حاسبة لا تعمل بنظام RPN، مثل سلسلة 38 و 39 و40 . كما استُخدم داخليًا في آلات 17B و 18C و 19B و 27 S. [ 3 ]
لغة RPL هي لغة برمجة هيكلية مبنية على RPN، لكنها قادرة بنفس القدر على معالجة التعبيرات والصيغ الجبرية ، وتُنفذ كمفسر متعدد الخيوط . [ 4 ] تتشابه RPL مع لغة Forth في العديد من الجوانب ، فكلتاهما تعتمدان على المكدس ، وكذلك مع لغة LISP القائمة على القوائم . على عكس آلات حاسبة HP RPN السابقة، التي كانت تحتوي على مكدس ثابت من أربعة مستويات ، فإن المكدس الديناميكي المستخدم في RPL محدود فقط بذاكرة الوصول العشوائي (RAM) المتاحة ، حيث تعرض الآلة الحاسبة رسالة خطأ عند نفاد الذاكرة بدلاً من حذف الوسائط من المكدس بصمت كما هو الحال في مكدسات RPN ذات الحجم الثابت. [ 5 ]
نشأت لغة RPL من مركز تطوير HP في كورفاليس، أوريغون عام 1984 كبديل للممارسة السابقة المتمثلة في تنفيذ أنظمة تشغيل الآلات الحاسبة بلغة التجميع . [ 3 ] كانت أول آلة حاسبة تستخدمها داخليًا هي HP-18C، وأول آلة حاسبة تتيحها للمستخدمين هي HP-28C، وكلاهما صدر عام 1986. [ 6 ] [ 3 ] تم إيقاف إنتاج آخر آلة حاسبة جيبية تدعم RPL، وهي HP 50g، عام 2015. [ 7 ] [ 8 ] [ 9 ] ومع ذلك، توجد العديد من برامج المحاكاة التي يمكنها محاكاة آلات حاسبة HP التي تعمل بلغة RPL، والتي تعمل على مجموعة متنوعة من أنظمة التشغيل والأجهزة، بما في ذلك الهواتف الذكية التي تعمل بنظامي iOS وAndroid.يوجد أيضاً عدد من المشاريع المجتمعية لإعادة إنشاء وتوسيع RPL على الآلات الحاسبة الأحدث، مثل newRPL [ 10 ] [ 11 ] أو DB48X [ 12 ] [ 13 ] ، والتي قد تضيف ميزات أو تحسن الأداء. [ 14 ]
المتغيرات
يُستخدم الإصدار الداخلي منخفض إلى متوسط المستوى من لغة RPL، والذي يُسمى System RPL (أو SysRPL )، في بعض آلات حاسبة HP القديمة، بالإضافة إلى الآلات المذكورة سابقًا، كجزء من لغة تنفيذ نظام التشغيل الخاص بها . في سلسلة HP 48، لا يمكن لمستخدم الآلة الحاسبة الوصول إلى هذا الإصدار من RPL إلا باستخدام أدوات خارجية، بينما في سلسلة HP 49/50، يوجد مُترجم مُدمج في ذاكرة القراءة فقط (ROM) لاستخدام SysRPL. من الممكن التسبب في عطل خطير أثناء البرمجة بلغة SysRPL، لذا يجب توخي الحذر عند استخدامها. يتوفر الإصدار عالي المستوى من لغة User RPL (أو UserRPL ) في آلات الحاسبة البيانية المذكورة لتطوير برامج التطبيقات النصية والرسومية. تُمثل جميع برامج UserRPL داخليًا كبرامج SysRPL، ولكنها تستخدم فقط مجموعة فرعية آمنة من أوامر SysRPL المتاحة. مع ذلك، فإن التحقق من الأخطاء، الذي يُعد جزءًا من أوامر UserRPL، يجعل برامج UserRPL أبطأ بشكل ملحوظ من برامج SysRPL المكافئة. يُخبر أمر UserRPL المسمى SYSEVAL الآلة الحاسبة بمعالجة أجزاء محددة من برنامج UserRPL كشفرة SysRPL.
كتل التحكم
لا تُعدّ كتل التحكم في لغة RPL من النوع اللاحق تمامًا . مع وجود بعض الاستثناءات البارزة، تظهر هياكل كتل التحكم كما لو كانت في لغة قياسية من النوع الوسطي. وتتعامل الآلة الحاسبة مع هذا الأمر من خلال السماح بتنفيذ هذه الكتل في مسار البرنامج حسب الحاجة.
العبارات الشرطية
إذا/ثم/وإلا/نهاية
يدعم RPL الاختبارات الشرطية الأساسية من خلال بنية IF/THEN/ELSE. الصيغة الأساسية لهذه الكتلة هي:
إذا تحقق الشرط، فإن الشرط صحيح [وإلا إذا كان الشرط خاطئًا] انتهى
يختبر المثال التالي ما إذا كان الرقم الموجود في أسفل المكدس هو "1"، وإذا كان الأمر كذلك، فإنه يستبدله بـ "يساوي واحدًا":
« إذا كان 1 يساوي واحدًا، فهذا يعني "يساوي واحدًا" انتهى »
تقوم بنية IF بتقييم الشرط ثم تختبر أسفل المكدس للحصول على النتيجة. ونتيجة لذلك، يمكن لـ RPL دعم كتل IF على غرار FORTH، مما يسمح بتحديد الشرط قبل تنفيذ الكتلة. عند ترك الشرط فارغًا، لن تُجري عبارة IF أي تغييرات على المكدس أثناء تنفيذ الشرط، وستستخدم النتيجة الموجودة في أسفل المكدس للاختبار.
« 1 == IF THEN "يساوي واحدًا" END »
IFT/IFTE
يمكن إنجاز اختبار الشرط اللاحق باستخدام وظائف IFT ("if-then") و IFTE ("if-then-else").
تقوم أوامر IFT وIFTE بإزالة أمرين أو ثلاثة أوامر من المكدس، على التوالي. يتم تقييم القيمة العلوية كقيمة منطقية، وإذا كانت صحيحة، تُعاد القيمة الثانية إلى المكدس. يسمح أمر IFTE بقيمة ثالثة "else" تُعاد إلى المكدس إذا كانت القيمة المنطقية خاطئة.
يستخدم المثال التالي دالة IFT لإزالة عنصر من أسفل المكدس، وإذا كانت قيمته تساوي 1، فإنه يستبدله بـ "واحد":
« 1 == "واحد" IFT »
يستخدم المثال التالي دالة IFTE لسحب عنصر من أسفل المكدس، وإذا كانت قيمته تساوي 1، يتم استبداله بـ "واحد". أما إذا كانت قيمته لا تساوي 1، فيتم استبداله بالسلسلة "ليس واحدًا".
« 1 == "واحد" "ليس واحدًا" IFTE »
تقوم الدالتان IFT و IFTE بتقييم كتلة برمجية مُعطاة كأحد وسائطها، مما يسمح بصيغة أكثر إيجازًا للمنطق الشرطي من بنية IF/THEN/ELSE/END. يُظهر المثال التالي كيفية إزالة عنصر من أسفل المكدس، واستبداله بـ "واحد" أو "أقل" أو "أكثر"، بناءً على ما إذا كان يساوي 1 أو أقل منه أو أكبر منه.
« DUP 1 == « إسقاط "واحد" » « 1 < "أقل" "أكثر" IFTE » IFTE »
حالة/ثم/نهاية
لدعم منطق شرطي أكثر تعقيدًا، توفر لغة RPL بنية CASE/THEN/END للتعامل مع اختبارات حصرية متعددة. سيتم تنفيذ فرع واحد فقط من الفروع داخل عبارة CASE. الصيغة الأساسية لهذه الكتلة هي:
قضية الشرط_1 ثم إذا-الشرط_1 انتهى ... الشرط_ن ثم إذا-الشرط_ن نهاية إذا لم يكن هناك شيء نهاية
يوضح الكود التالي استخدام كتلة CASE/THEN/END. عند إدخال حرف في أسفل المكدس، يتم استبداله بنصه المكافئ أو بعبارة "حرف غير معروف".
« قضية DUP "A" == THEN "Alpha" END DUP "B" == THEN "Beta" END DUP "G" == THEN "Gamma" END "رسالة غير معروفة" نهاية تبديل الرسائل @ تخلص من الرسالة الأصلية »
هذا الكود مطابق تمامًا للكتلة المتداخلة التالية IF/THEN/ELSE/END:
« إذا كانت القيمة المكررة "A" تساوي ثم "ألفا" آخر إذا كان DUP "B" يساوي THEN "بيتا" آخر إذا كان DUP "G" يساوي THEN "غاما" آخر "رسالة غير معروفة" نهاية نهاية نهاية تبديل الرسائل @ تخلص من الرسالة الأصلية »
عبارات التكرار
للتالي/للأمام
توفر لغة RPL عبارة FOR/NEXT للتكرار من فهرس إلى آخر. يُخزَّن فهرس التكرار في متغير محلي مؤقت يمكن الوصول إليه داخل الحلقة. صيغة كتلة FOR/NEXT هي:
index_from index_to FOR variable_name loop_statement NEXT
يستخدم المثال التالي حلقة FOR لجمع الأرقام من 1 إلى 10. متغير الفهرس لحلقة FOR هو "I":
« 0 @ ابدأ بصفر على المكدس 1 10 @ تكرار من 1 إلى 10 FOR I @ "I" هو المتغير المحلي أضف "I" إلى المجموع التراكمي. التالي @ كرر... »
ابدأ/التالي
تُستخدم كتلة START/NEXT لإنشاء كتلة بسيطة تعمل من فهرس بداية إلى فهرس نهاية. على عكس حلقة FOR/NEXT، لا يتوفر متغير التكرار. صيغة كتلة START/NEXT هي:
index_from index_to START loop_statement NEXT
FOR/STEP و START/STEP
يدعم كل من FOR/NEXT و START/NEXT زيادة خطوة محددة من قِبل المستخدم. باستبدال كلمة NEXT التي تُنهي الحلقة بكلمة STEP التي تُحدد مقدار الزيادة، ستتم زيادة أو إنقاص قيمة متغير الحلقة بمقدار مختلف عن القيمة الافتراضية +1. على سبيل المثال، تتراجع الحلقة التالية من 10 إلى 2 عن طريق إنقاص فهرس الحلقة بمقدار 2:
« 10 2 ابدأ - خطوتين »
أثناء/كرر/انتهى
تدعم كتلة WHILE/REPEAT/END في لغة RPL حلقة تكرار غير محددة مع اختبار الشرط في بداية الحلقة. صيغة كتلة WHILE/REPEAT/END هي:
طالما الشرط، كرر عبارة الحلقة. انتهى
كرر/حتى/انتهى
تدعم كتلة DO/UNTIL/END في لغة RPL حلقة تكرار غير محددة مع اختبار الشرط في نهاية الحلقة. صيغة كتلة DO/UNTIL/END هي:
كرر عبارة الحلقة حتى يتحقق الشرط.
انظر أيضاً
ملحوظات
- ١. ^ وفقًا لمطوريها الأصليين، فإن "RPL" مشتقة من لغة Reverse Polish Lisp ، [ ١٥ ] [ ١٦ ] [ ١٧ ] [ ١٨ ] [ ١٩ ] [ ٢٠ ]، بينما حاولت شركة HP للتسويق لفترة وجيزة في عام ١٩٨٧ صياغة اختصار عكسي لها هو ROM-based Procedural Language . [ ٢ ] [ ٢٠ ] [ ٢١ ] بالإضافة إلى ذلك، تُفسَّر الأحرف الأولى من RPL أحيانًا بشكل خاطئ على أنها Reverse Polish Logic أو Reverse Polish Language . [ ٢٢ ]
مراجع
- ↑ "متعة البرمجة؟" . متحف آلات حاسبة HP. 2020. مؤرشف من الأصل في 2021-12-03.
- 1 2 باتون، تشارلز م. (أغسطس 1987). "الحسابات للآلات الحاسبة المحمولة" (ملف PDF) . مجلة هيوليت-باكارد . 38 (8). بالو ألتو، كاليفورنيا، الولايات المتحدة الأمريكية: شركة هيوليت-باكارد : 21-25 . مؤرشف من الأصل (ملف PDF) بتاريخ 2011-12-06 . تم الاطلاع عليه بتاريخ 2015-09-12 .
- 1 2 3 هيوليت-باكارد . "RPLMan من القرص الرابع من مجموعة Goodies" (RPLMAN.ZIP) . تم الاسترجاع بتاريخ 12-09-2015 .
- ↑ هورن، جوزيف ك. "ما هو RPL؟" . مؤرشف من الأصل بتاريخ 17-09-2017 . تم الاسترجاع بتاريخ 17-09-2017 .
- ↑ ويسمان، تيموثي "تيم" جيمس (21-06-2016) [20-06-2016]. "ماذا نفعل مع خطأ تجاوز سعة المكدس OBJ->/LIST->؟" . متحف آلات حاسبة HP (MoHPC) . مؤرشف من الأصل في 24-09-2023 . تم الاطلاع عليه في 24-09-2023 .
- ↑ ويكس، ويليام سي. (يناير-فبراير 1987). "HP-28C: منظور من الداخل". HPX Exchange . 1 (1).
- ↑ كوبروس، كلاس (2015-03-04). "HP 50g: نهاية حقبة" . مورافيا. مؤرشف من الأصل في 2015-04-02.
- ^ كوبروس ، كلاس (2015/03/06). "HP 50G ليست أخبار جيدة؟" . مورافيا . تم الاسترجاع 2016/01/01 .
- ↑ ويسمان، تيموثي "تيم" جيمس (26 ديسمبر 2015). "نظام ويندوز 10 لا يسمح بتثبيت برامج تشغيل USB لطابعات HP سعة 50 جيجابايت" . متحف آلات حاسبة HP (MoHPC) . تاريخ الاسترجاع: 1 يناير 2016 .
- ^ لابيلي، كلاوديو دانيال (2014/01/03). "newRPL" . تم الاسترجاع 2015/09/12 .(مشتق مفتوح المصدر من RPL لأجهزة HP 50g و HP 49g+ و HP 40gs و HP 39gs و hp 39g+ بالإضافة إلى HP Prime )
- ↑ لابيلي، كلاوديو دانيال (23 يوليو 2021) [2014]. "مشروع توثيق newRPL" . newRPL . مؤرشف من الأصل في 3 نوفمبر 2023. تم الاطلاع عليه في 23 أكتوبر 2023 .
- ↑ دي دينشين، كريستوف (2022). "DB48X على DM42 - بيئة تشغيل RPL لآلة حاسبة DM42، على غرار HP48/49/50" . DB48X . مؤرشف من الأصل بتاريخ 3 نوفمبر 2023. تم الاطلاع عليه بتاريخ 23 أكتوبر 2023 .
- ↑ دي دينشين، كريستوف (2023-02-03). "إحياء لغة ليسب البولندية العكسية - بناء آلة حاسبة مفتوحة المصدر تشبه HP48" . FOSDEM . مؤرشف من الأصل في 2023-10-03 . تم الاسترجاع في 2023-10-03 .(ملاحظة: نسخة محسّنة من RPL تسمى DB48X لأجهزة SwissMicros DM42 و DM32 .)
- ↑ لابيلي، كلاوديو دانيال (31 أكتوبر 2014). "الملكات على 50 غرامًا (لغة RPL)" . متحف آلات حاسبة HP . مؤرشف من الأصل في 3 نوفمبر 2023. تم الاطلاع عليه في 23 أكتوبر 2023 .
- ↑ ويكس، ويليام سي. (1988-10-01) [14-18 يونيو 1988]. فورسلي، لورانس ب. (محرر). RPL: لغة تحكم رياضية . وقائع مؤتمر روتشستر فورث لعام 1988: بيئات البرمجة. المجلد 8. روتشستر، نيويورك، الولايات المتحدة الأمريكية: معهد أبحاث فورث التطبيقية، جامعة روتشستر . الصفحات 27-32 . ISBN 978-0-91459308-9OCLC 839704944.
تمّ النظر في العديد من أنظمة التشغيل ولغات البرمجة الموجودة، ولكن لم يستطع أيٌّ منها تلبية جميع أهداف التصميم. لذلك، تمّ تطوير نظام جديد يدمج التفسير المترابط للغة
فورث معالنهج
الوظيفي للغة
ليسب
. ظهر نظام التشغيل الناتج، المعروف بشكل غير رسمي باسم RPL (اختصارًا لـ Reverse-Polish Lisp)، لأول مرة للجمهور في يونيو 1986 في آلة حاسبة
HP-18C
Business Consultant.
(ملاحظة: يُشار إلى هذا العنوان غالبًا باسم "RPL: لغة تحكم رياضية". يتوفر مقتطف منه على الرابط التالي:)
- ↑ ويكس، ويليام سي. (11 مارس 1991). "RPL اختصار لـ Reverse Polish Lisp" . www.hpcalc.org . تاريخ الاسترجاع: 12 سبتمبر 2015.
RPL اختصار لـ Reverse Polish Lisp. في بدايات تطوير RPL، مللنا من تسمية النظام غير المسمى "النظام الجديد"، فاقترح أحد أعضاء فريق التطوير اسم "RPL"، توريةً على "RPN" الذي لطالما كان السمة المميزة لأجهزة HP الحاسبة، والذي أثار جدلاً واسعاً، ودلالةً دقيقةً على اشتقاق اللغة من لغتي
Forth
و
Lisp
.
لم يكن RPL مُصمماً ليكون مصطلحاً عاماً؛ ففي وقت نشر مقال
مجلة HP
(أغسطس 1987) عن جهاز
HP 28C،
كانت هناك محاولة لابتكار اسم أقل غرابة، ومن هنا جاء اسم "لغة إجرائية قائمة على ذاكرة القراءة فقط" (ROM-based procedural language)، الذي حافظ على الأحرف الأولى ولكنه كان أكثر وقاراً. لا يُطلق فريق التطوير عليه سوى الأحرف الأولى RPL. يمكنك اختيار أيًّا من الصيغتين الكاملتين اللتين تفضلهما. أو ماذا عن "لغة الأثرياء"؟ بيل ويكس، إتش بي كورفاليس.
- ↑ شورل، أندريه (4 أبريل 2000) [1997]. "قائمة الأسئلة الشائعة حول HP48" . أرشيف آلات حاسبة HP. ص 69. تم الاطلاع عليه بتاريخ 12 سبتمبر 2015 .
- ↑ «سمعتُ بأسماء مثل RPL وSaturn وSTAR وGL وغيرها... ما هي؟ - RPL» . الأسئلة الشائعة: 2 من 4 - الأجهزة والبرامج والبرمجة . 4.62. comp.sys.hp48. 2000-04-14. 8.1 . تم الاطلاع عليه بتاريخ 2015-09-12 .
- ↑ نيلسون، ريتشارد ج. (4 أبريل 2012). "تطور نظام ترميز عناوين المواقع من هيوليت-باكارد" (ملف PDF) . HP Solve (27). هيوليت-باكارد : 30-32 . تاريخ الاسترجاع: 12 سبتمبر 2015 .
- 1 2 مير-Jędrzejowicz، Włodzimierz "Włodek" أنتوني كريستوفر (يوليو 1991). دليل للآلات الحاسبة وأجهزة الكمبيوتر المحمولة من HP (5 ed.). HHC 2011. ISBN 978-1-88884030-81888840307.
يرمز RPL إلى لغة Reverse Polish Lisp، وهي لغة تجمع بين لغة الآلة الحاسبة RPN المستخدمة في الطرازات السابقة وخصائص لغتي البرمجة Lisp و Forth . وقد أوضحت شركة HP لفترة من الزمن أن الأحرف RPL هي اختصار لعبارة "لغة إجرائية قائمة على ذاكرة القراءة فقط".
- ↑ "شركة HP تحتفل بمرور 35 عامًا على ابتكار الآلات الحاسبة المحمولة" . شركة هيوليت-باكارد للتطوير، المحدودة، 2007. مؤرشف من الأصل بتاريخ 17 مارس 2007. تم الاطلاع عليه بتاريخ 13 سبتمبر 2015.
1987:
HP-28C
: أول آلة حاسبة كاملة بلغة RPL: في أواخر ثمانينيات القرن الماضي، طورت HP لغة برمجة جديدة لسلسلة آلاتها الحاسبة الجديدة فائقة القوة. ومن خلال دمج عناصر من لغات RPN و
Lisp
و
Forth
، ابتكرت HP لغة تُسمى RPL (أو لغة الإجراءات القائمة على ذاكرة القراءة فقط).
- ↑ ريتشلين، إريك؛ مارانغون، كارلوس. "موسوعة آلات حاسبة HP: HPedia" . www.hpcalc.org . تاريخ الاسترجاع: 20 أبريل 2020 .
للمزيد من القراءة
- سلسلة HP 48G - دليل المستخدم ( الطبعة الثامنة ). هيوليت-باكارد . ديسمبر 1994 [1993]. HP 00048-90126، (00048-90104). مؤرشف من الأصل بتاريخ 2016-08-06 . تم الاطلاع عليه بتاريخ 2015-09-06 .
- سلسلة HP 48G - دليل المستخدم المتقدم ( الطبعة الرابعة ). هيوليت-باكارد . ديسمبر 1994 [1993]. HP 00048-90136، 0-88698-01574-2. مؤرشف من الأصل بتاريخ 2016-08-06 . تم الاطلاع عليه بتاريخ 2015-09-06 .
- دليل مستخدم الآلة الحاسبة البيانية HP 50g (الطبعة الأولى ). هيوليت-باكارد . أبريل 2006. HP F2229AA-90006 . تاريخ الاسترجاع: 6 سبتمبر 2015 .
- دليل المستخدم المتقدم لآلة حاسبة بيانية HP 50g / 49g+ / 48gII (الطبعة الثانية ). هيوليت-باكارد . 14 يوليو 2009 [2005]. HP F2228-90010 . تاريخ الاسترجاع: 6 سبتمبر 2015 .
- كالينوفسكي، إدواردو دي ماتوس؛ دومينيك، كارستن (24 أبريل 2002) [12 يوليو 1998]. البرمجة بلغة RPL النظامية (ملف PDF) ( الطبعة الثانية). مؤرشف (ملف PDF) من الأصل بتاريخ 14 يناير 2016. تم الاطلاع عليه بتاريخ 16 أغسطس 2016 .(الإصدار الأقدم:)
- دونيلي، جيمس (2009-03-01). ريتشلين، إريك (محرر). مقدمة في برمجة لغة التجميع ولغة RPL لنظام HP 48. تم الاطلاع عليه بتاريخ 2015-09-07 .
روابط خارجية
- ريتشلين، إريك (2015) [1997]. "ملفات توثيق برمجة HP 49/50" . أرشيف آلات حاسبة HP . تم الاسترجاع في 12 سبتمبر 2015 .
- ريتشلين، إريك (2015) [1997]. "ملفات توثيق برمجة HP 48" . أرشيف آلات حاسبة HP . تم الاسترجاع في 12 سبتمبر 2015 .
- هيكس، ديفيد ج. (2013) [1995]. "RPL" . متحف آلات حاسبة HP (MoHPC). مؤرشف من الأصل بتاريخ 30 سبتمبر 2023. تم الاطلاع عليه بتاريخ 12 سبتمبر 2015 .
- برتراند، جويل (2015) [2009]. "RPL/2 - لغة لَسْب بولندية عكسية جديدة" . تم الاسترجاع في 12 سبتمبر 2015 .(نسخة مرخصة بموجب رخصة جنو العمومية العامة)
- روبيه، لويس (2017-07-01). "rpn - تطبيق مفتوح المصدر لـ RPL" . جيت هاب . تم الاسترجاع في 2015-09-12 .(تنفيذ مفتوح المصدر لبروتوكول RPL بدقة اختيارية)
- سواريز، ألفارو جيراردو (1 مايو 2018). "MyRPL - توحيد لغتي HP41 وHP48" . مؤرشف من الأصل بتاريخ 3 أكتوبر 2023. تم الاطلاع عليه بتاريخ 4 مايو 2018 .(لغة RPL المختلطة (HP48) ولغة FOCAL (HP41))
- برنامج الآلة الحاسبة البيانية
- آلات حاسبة HP
- عائلة لغات البرمجة ليسب
- لغات البرمجة الموجهة نحو المكدس
