XPL0

XPL0 هي لغة برمجة حاسوبية هي في الأساس مزيج بين لغتي باسكال وسي . تبدو إلى حد ما مثل باسكال ولكنها تعمل بشكل أقرب إلى لغة سي. تم إنشاؤها في عام 1976 بواسطة بيتر جيه آر بويل الذي أراد لغة عالية المستوى لحاسوبه الصغير وكان يريد شيئًا أكثر تطورًا من لغة بيسك ، التي كانت اللغة السائدة لأجهزة الكمبيوتر الشخصية في ذلك الوقت.

يعتمد XPL0 على PL/0 ، وهو مُترجم نموذجي ورد في كتاب "الخوارزميات + هياكل البيانات = البرامج" للمؤلف نيكلاوس ويرث . كُتب أول مُترجم لـ XPL0 بلغة ALGOL ، حيث كان يُولّد تعليمات لآلة افتراضية نُفّذت كمُفسّر على حاسوب من إنتاج شركة Digital Group، مُعتمد على المعالج الدقيق 6502. بعد ذلك، حُوِّل المُترجم من ALGOL إلى XPL0، وأصبح قادرًا على ترجمة نفسه وتشغيله على الحاسوب الصغير.

سرعان ما أثبت XPL0 جدارته في مجموعة متنوعة من المنتجات التي تعتمد على 6502. وإلا لكانت هذه الأنظمة المدمجة قد كُتبت شفرتها بلغة التجميع ، وهو أمر أكثر صعوبة بكثير.

استخدم بويل لغة XPL0 لكتابة نظام تشغيل للأقراص يسمى Apex. ابتداءً من عام 1980، تم بيع هذا النظام، إلى جانب XPL0، كبديل لنظام التشغيل Apple DOS لجهاز  الكمبيوتر Apple II، الذي كان يعتمد على معالج 6502.

منذ تلك السنوات الأولى، تم تطبيق لغة XPL0 على اثني عشر معالجًا، وأُضيفت إليها العديد من الميزات. تتوفر الآن مُجمِّعات برمجية أصلية مُحسِّنة تدعم أعدادًا صحيحة 32 بت بدلًا من الإصدارات الأصلية 16 بت. تتوفر مُجمِّعات برمجية مفتوحة المصدر لأنظمة ويندوز و MS-DOS على أجهزة الكمبيوتر الشخصية، ولينكس على جهاز راسبيري باي، عبر الرابط أدناه.

أمثلة

هكذا تتم برمجة برنامج "Hello World" التقليدي في لغة XPL0:

 رمز النص=12؛ نص(0، "مرحباً بالعالم!")

النص عبارة عن روتين مدمج يُخرج سلسلة من الأحرف.  يشير الصفر (0) إلى وجهة إرسال السلسلة. في هذه الحالة، تُرسل إلى شاشة العرض، ولكن يمكن إرسالها بسهولة إلى طابعة أو ملف أو منفذ تسلسلي باستخدام رقم مختلف.

في لغة XPL0، يجب تعريف جميع الأسماء قبل استخدامها. يربط رمز كلمة الأمر الاسم " Text" بالروتين المدمج رقم 12، وهو الروتين المسؤول عن إخراج النصوص. يوجد حوالي مئة روتين مدمج من هذا النوع، توفر إمكانيات مثل الإدخال والإخراج، والرسومات، ووظائف حساب المثلثات.

تقوم إصدارات 32 بت من المترجمات بإدراج تعريفات التعليمات البرمجية تلقائيًا، وبالتالي يمكن كتابة البرنامج أعلاه ببساطة على النحو التالي:

 نص(0، "مرحباً بالعالم!")

توفر خوارزمية TPK مثالاً يمكن مقارنته بلغات أخرى:

 func real F(T); حقيقي T؛ أرجع الجذر التربيعي (القيمة المطلقة لـ T) + 5. * أس (T، 3.)؛ int I; real Y, A(11); [for I:= 0 to 10 do A(I):= RlIn(0); for I:= 10 downto 0 do [Y:= F(A(I)); إذا كانت Y > 400، فسيتم تنفيذ ما يلي: [IntOut(0, I); Text(0, "كبير جدًا"] آخر [IntOut(0, I); RlOut(0, Y)]; CrLf(0); ]; ]

لطالما كانت الرسومات ميزة أساسية في برنامج XPL0 منذ أيامه على  جهاز كمبيوتر Apple II.

 int X, Y, Color; [SetVid($101); \ضبط وضع الفيديو على 640x480x8 كرر ذلك لكل Y:= 0 إلى 128-1 for X:= 0 to 128-1 do نقطة(س، ص، س أو ص xor اللون)؛ اللون: = اللون + 1؛ تأخيرUS(50_000); \0.05 ثانية حتى مفتاح ChkKey؛ ]

مراجع

  • فيش، لاري (فبراير 1979). "لغة ذات بنية كتلية للحواسيب الصغيرة". كيلوبود ، ص 24.