آلة الببغاء الافتراضية

باروت هي آلة افتراضية لمعالجة البيانات تعتمد على المسجلات، وقد توقف تطويرها ، وهي مصممة لتشغيل اللغات الديناميكية بكفاءة. من الممكن ترجمة لغة تجميع باروت (PASM) وتمثيلها الوسيط (PIR، وهي لغة وسيطة ) إلى بايت كود باروت وتنفيذه. باروت برنامج مجاني ومفتوح المصدر، مرخص بموجب رخصة Artistic License 2.0. [ 2 ]

بدأ تطوير Parrot من قبل مجتمع Perl ، وتم تطويره بمساعدة مجتمعات البرمجيات الحرة والمفتوحة المصدر . ونتيجة لذلك، ركز على توافق الترخيص مع Perl ( رخصة Artistic License 2.0)، وتوافق المنصات عبر مجموعة واسعة من الأنظمة، وتوافق بنية المعالج مع معظم المعالجات الحديثة، وسرعة التنفيذ، وصغر الحجم (حوالي 700 كيلوبايت حسب المنصة)، والمرونة اللازمة للتعامل مع المتطلبات المتغيرة التي يفرضها Raku ولغات البرمجة الديناميكية الحديثة الأخرى .

تم إصدار النسخة 1.0، المزودة بواجهة برمجة تطبيقات (API) مستقرة للتطوير، في 17 مارس 2009. [ 3 ] أما النسخة الأخيرة فهي الإصدار 8.1.0 "ببغاء الأنديز". [ 1 ]

تاريخ

جاء اسم Parrot من مزحة كذبة أبريل التي أعلنت عن لغة افتراضية، تحمل اسم Parrot ، من شأنها توحيد Python و Perl . [ 4 ] [ 5 ] تم اعتماد الاسم لاحقًا من قبل مشروع Parrot (الذي كان في البداية جزءًا من جهد تطوير Raku) والذي كان يهدف إلى دعم Raku و Python ولغات برمجة أخرى.

تم حلّ مؤسسة باروت في عام 2014. [ 6 ] تأسست المؤسسة في عام 2008 لحماية حقوق النشر والعلامات التجارية لمشروع باروت، وللمساعدة في تطوير تطبيقات اللغة وقاعدة التعليمات البرمجية الأساسية ، ولتوفير قاعدة لتنمية مجتمع باروت، وللتواصل مع مجتمعات لغات البرمجة الأخرى. [ 7 ]

يتم توثيق قرارات التصميم التاريخية في شكل وثائق تصميم Parrot، أو PDDs، في مستودع Parrot. [ 8 ]

حتى أواخر عام 2005، كان دان سوغالسكي المصمم الرئيسي وكبير مهندسي باروت. ثم تولى تشيب سالزنبرغ، وهو مطور مخضرم في لغات بيرل ونواة لينكس وسي++، المنصب حتى منتصف عام 2006، حين أصبح كبير المطورين. أما أليسون راندال ، كبيرة مطوري بوني وكبيرة مهندسي أدوات مُترجم باروت، فقد شغلت منصب كبير المهندسين حتى منتصف أكتوبر 2010، حين تنحت عن منصبها واختارت كريستوف أوتو كبير المهندسين الجديد. [ 9 ]

في أغسطس 2021، أُعلن عن توقف تطوير آلة Parrot الافتراضية. وأشار المنشور إلى أن MoarVM قد حلت محل Parrot كآلة افتراضية للغة Perl 6. [ 10 ]

اللغات

كان الهدف من الآلة الافتراضية Parrot هو استضافة لغات البرمجة الخاصة بالعميل والسماح بالتفاعل بينها. وقد واجهت عملية تحقيق هذا الهدف عدة عقبات، ولا سيما صعوبة ربط المفاهيم والبيانات وهياكل البيانات عالية المستوى بين اللغات.

اللغات الثابتة والديناميكية

استُلهم تصميم Parrot من الخصائص المختلفة للغات ذات الكتابة الثابتة واللغات ذات الكتابة الديناميكية . صُممت الآلات الافتراضية الشائعة حاليًا، مثل آلة جافا الافتراضية وبيئة تشغيل اللغة المشتركة (لمنصة .NET )، للغات ذات الكتابة الثابتة، بينما اللغات التي يستهدفها Parrot هي لغات ذات كتابة ديناميكية.

تعتمد الآلات الافتراضية، مثل آلة جافا الافتراضية وآلة بيرل 5 الافتراضية الحالية، على بنية المكدس . اختار مطورو Parrot تصميمًا قائمًا على المسجلات، مُبررين ذلك بأنه يُحاكي تصميم الأجهزة بشكل أدق، مما يسمح باستخدام المراجع الواسعة في مجال تحسين المُترجمات لتوليد رمز بايت لآلة Parrot الافتراضية، والذي يُمكن تشغيله بسرعات أقرب إلى سرعة لغة الآلة . استُلهمت أجزاء من تصميم Parrot من آلات افتراضية أخرى قائمة على المسجلات، بما في ذلك LLVM وآلة Lua الافتراضية و Dis من Inferno .

المفاهيم الوظيفية

يدعم Parrot بشكلٍ واسع العديد من ميزات البرمجة الوظيفية ، بما في ذلك الإغلاقات والاستمراريات ، وكلاهما قد يكون صعب التنفيذ بشكلٍ صحيح وقابل للنقل، خاصةً عند دمجه مع معالجة الاستثناءات والخيوط . وتتمثل الميزة الأكبر في إمكانية التوسيع الديناميكي للكائنات باستخدام الدوال، مما يسمح بإنشاء حاويات متعددة الأشكال (PMCs) ورموز العمليات المرتبطة بها . ويُغني تنفيذ حلول هذه المشكلات على مستوى الآلة الافتراضية عن الحاجة إلى حلها في لغات العميل الفردية.

أدوات المُترجم

توفر Parrot مجموعة من أدوات كتابة المترجمات [ 11 ] ، تتضمن محرك قواعد التحليل النحوي (PGE)، وهو مُولِّد مُحلِّل نحوي هجين قادر على التعبير عن مُحلِّل نحوي تنازلي متكرر، بالإضافة إلى مُحلِّل نحوي يعتمد على أسبقية العمليات ، مما يسمح بالانتقال السلس بينهما في قاعدة نحوية واحدة. يُغذّي PGE محرك قواعد الشجرة (TGE) الذي يُجري بدوره تحويلاً إضافيًا لشجرة التحليل النحوي المُولَّدة بواسطة PGE لتحسين الأداء، وفي النهاية لتوليد الشفرة.

التطبيقات

كانت أكثر تطبيقات اللغات اكتمالًا التي استهدفت آلة Parrot الافتراضية هي Raku (التي كانت تُسمى آنذاك Rakudo Perl 6)، و Lua ، وWinxed. [ 12 ] وبدأت مشاريع لتطبيق العديد من اللغات الأخرى، بما في ذلك BASIC ، [ 13 ] وPHP ، وPython ، و Ruby ؛ ولغات تجريبية ولغات خاصة مثل Befunge ولغة " squaak " التعليمية. [ 14 ] لم ينجح أي من هذه المشاريع في أن يصبح التطبيق الرئيسي للغاته المعنية. [ 15 ]

المكونات الداخلية

بالنسبة لبرنامج Parrot، توجد ثلاثة أشكال من التعليمات البرمجية:

  • البايت كود [ 16 ] هو ثنائي ويتم تفسيره أصلاً بواسطة Parrot. عادةً ما يتم تخزين البايت كود في ملفات بامتداد اسم الملف ".pbc".
  • لغة التجميع الخاصة بالببغاء (PASM) هي لغة منخفضة المستوى تُترجم إلى رمز بايت. عادةً ما يتم تخزين كود PASM في ملفات بامتداد ".pasm".
  • لغة تمثيل Parrot الوسيطة (PIR [ 17 ] ) هي لغة ذات مستوى أعلى قليلاً من لغة PASM، وتُترجم أيضًا إلى بايت كود. وهي الهدف الرئيسي لتطبيقات اللغات. تُدير PIR بشفافية اصطلاحات استدعاء الروتينات الداخلية في Parrot، وتُوفر بنيةً مُحسّنة، وتخصيصًا أفضل للسجلات، وغير ذلك. عادةً ما يُخزّن كود PIR في ملفات بامتداد ".pir".

أمثلة

السجلات

يعتمد برنامج Parrot على السجلات مثل معظم وحدات المعالجة المركزية (CPU) المادية، وعلى عكس معظم الآلات الافتراضية التي تعتمد على المكدس. يوفر Parrot أربعة أنواع من السجلات:

يوفر برنامج Parrot عددًا عشوائيًا من السجلات؛ يتم تحديد هذا العدد في وقت الترجمة لكل روتين فرعي.

العمليات الحسابية

في PASM

set I1 , 4 inc I1 # I1 الآن 5 add I1 , 2 # I1 الآن 7 set N1 , 42.0 dec N1 # N1 الآن 41.0 sub N1 , 2.0 # N1 الآن 39.0 print I1 print ' , ' print N1 print " \ n " end

في PIR

. sub 'main' : main $I1 = 4 inc $I1 # $I1 الآن 5 $I1 += 2 # $I1 الآن 7 $N1 = 42.0 dec $N1 # $N1 الآن 41.0 $N1 -= 2.0 # $N1 الآن 39.0 print $I1 print ', ' print $N1 print "\n" . end

mod_parrot

mod_parrot هو وحدة اختيارية لخادم الويب Apache . يقوم بتضمين مترجم آلة Parrot الافتراضية في خادم Apache ويوفر الوصول إلى واجهة برمجة تطبيقات Apache للسماح بكتابة المعالجات بلغة تجميع Parrot ، أو أي لغة عالية المستوى تستهدف Parrot.

انظر أيضاً

مراجع

  1. 1 2 "إصدار جديد مدعوم 8.1.0 "ببغاء الأنديز"" مؤسسة الببغاء. 16-02-2016 . تم الاطلاع عليه بتاريخ 26-09-2016 . "
  2. "اتفاقية ترخيص مساهمي Parrot 1.0" (ملف PDF) . مؤسسة Parrot. مؤرشفة من الأصل (ملف PDF) بتاريخ 16 أغسطس 2010. تم الاطلاع عليها بتاريخ 18 مارس 2009 .
  3. "خارطة طريق الببغاء" . مؤسسة الببغاء. 20 نوفمبر 2008. مؤرشف من الأصل في 15 أبريل 2010. تم الاطلاع عليه في 20 نوفمبر 2008 .
  4. "قصة مقلب الببغاء - أورايلي ميديا" . Oreilly.com. 2001-04-06 . تم الاطلاع عليه بتاريخ 2014-02-25 .
  5. "ببغاء البرمجة" . Perl.com. مؤرشف من الأصل بتاريخ 18-07-2010 . تم الاطلاع عليه بتاريخ 25-02-2014 .
  6. "البحث المتقدم عن الشركات" . إدارة التراخيص بولاية واشنطن . UBI 602 839 536. تاريخ الاسترجاع: 9 أبريل 2021 .
  7. إعلان مؤسسة الببغاء ( مؤرشف في 29 يونيو 2008، على موقع Wayback Machine)
  8. "Parrot 6.1.0 - وثائق تصميم Parrot (PDDs)" . Docs.parrot.org . تم الاطلاع عليه بتاريخ 25-02-2014 .
  9. أوتو، كريستوف (21 أكتوبر 2010). "ريباروت: لدى باروت مهندس معماري جديد. ماذا الآن؟" . Reparrot.blogspot.com . تاريخ الاسترجاع: 25 فبراير 2014 .
  10. "الببغاء غير النشط | Parrot VM" . www.parrot.org . تم الاطلاع عليه بتاريخ 28-01-2026 .
  11. أُرشف بتاريخ 9 مايو 2009 في أرشيف الإنترنت (Wayback Machine) .
  12. "اللغات - Parrot VM" . parrot.org . تم الاطلاع عليه بتاريخ 18-11-2023 .
  13. "BASIC for Parrot" . perl.org . تم الاطلاع عليه بتاريخ 14-12-2025 .
  14. "اللغات – الببغاء" . ويكي تطوير الببغاء. مؤرشف من الأصل بتاريخ 2010-06-04 . تم الاطلاع عليه بتاريخ 2023-11-18 .
  15. "الببغاء غير النشط: Parrot VM" . www.parrot.org .
  16. "تنسيق بايت كود الببغاء (PBC) - parrotcode" . مؤرشف من الأصل بتاريخ 24-12-2008 . تم الاطلاع عليه بتاريخ 15-07-2009 .
  17. أُرشف بتاريخ 20 يوليو 2009 في أرشيف الإنترنت (Wayback Machine) .