الببغاء - هل يمكنني استخدامه؟ وكيف؟

StackOverflow https://stackoverflow.com/questions/4294438

  •  28-09-2019
  •  | 
  •  

سؤال

لقد نظرت إلى ببغاء لبعض الوقت. أنا أفهم أنه جهاز افتراضي مصمم لتشغيل مجموعة متنوعة من اللغات الديناميكية ، وللسماح بدرجة من قابلية التشغيل البيني (على سبيل المثال ، استدعاء وظيفة Perl من نص Python). لذا ، سؤالي في جزأين:

  1. هل الببغاء جاهز للاستخدام العام؟ أستطيع أن أرى الإصدارات يتم إجراؤها ، لكن ليس من الواضح ما إذا كان هذا شيء يعمل بشكل جيد الآن ، أو لا يزال عملًا مستمرًا.
  2. هل هناك أي وثائق حول كيفية استعمال ببغاء؟ لقد بحثت في الروابط في الأسئلة السابقة ، ولكن جميع الوثائق التي يمكنني العثور عليها محادثات حول مستويات مختلفة من التعليمات البرمجية الخاصة بالبغاء (PIR ، PASM ، إلخ) ، أو كيفية إضافة الدعم لمزيد من اللغات. هذا رائع ، لكن كيف يمكنني تشغيل التعليمات البرمجية في اللغات الموجودة على الببغاء؟ وكيف يمكنني استخدام التعليمات البرمجية المكتوبة بلغة أخرى؟

أخيرًا ، لا أريد أن أبدأ بالشكل ، لكنني أعلم أن الببغاء مرتبط ببيرل 6. أفضل بيثون. أنا أفهم أن Python هي لغة مدعومة ، ولكن من الناحية الواقعية ، هل يُنظر إليها على أنها VM متعددة اللغات ، أم أنها مترجم بيرل 6 مع لغات أخرى مدرجة كفضول؟

هل كانت مفيدة؟

المحلول

أنا مطور بيثون في المقام الأول ، لذلك أنا متحيز. ولكن ربما في نفس الاتجاه مثلك.

يهدف الببغاء إلى أن يكون VM متعدد اللغات. تظهر جذورها في بعض الأحيان ("0" خاطئة ، لغة bootstrapping NQP هي مجموعة فرعية من Perl) ، ولكن على مستوى وقت التشغيل ، فإنها غريبة للغاية.

ومع ذلك ، فإن interop بين اللغات لن يكون سلسًا تمامًا. على سبيل المثال ، من المرجح أن يتم استخدام نوع السلسلة كقاعدة من قبل جميع اللغات ، ولكن من المحتمل أن يحتاج كائن روبي إلى مغلفات (ولكن ليس الوكلاء) لتصرف البيثونيك. لا توجد قصة لـ Object interop ، على الأقل ليس حتى الآن.

المترجم Python 3 "Pynie" لديه وسيلة للذهاب. ها هي الريبو http://bitbucket.org/allison/pynie. ربما ترغب في المساعدة؟ الآن هو صغير جدًا ، ولا حتى أشياء حتى الآن.

وللإجابة على سؤالك الفعلي:

  1. نوعا ما. إنها ليست سريعة واللغات التي تستهدفها غير كاملة ، لكنها لن تعطل ذاكرتك أو تفسدها.
  2. عادةً ، تكتب رمزًا بلغة المستوى العالي المفضل لديك (Python) وتجميع رمز .py الخاص بك إلى الببغاء (ومن هناك ، يمكنك تجميعه إلى الكود الأصلي إذا كنت ترغب في ذلك). يمكن أن يكتب Dev آخر رمز Perl (6) وتجميعه إلى الببغاء ، وإذا تم كتابة المجمعين مع وضع interop في الاعتبار ، فستتمكن من استدعاء وظيفة Perl من Python

نصائح أخرى

  1. لا يزال يعمل قيد التقدم ، لكنه ناضج بما يكفي لمنفذي اللغة ومطوري المكتبات. التحذير: يتم إعادة صياغة بعض الأنظمة الفرعية (جمع القمامة ، التضمين) ، لذلك قد يكون هناك بعض المطبات على الطريق إلى الأمام.

  2. تحتاج كل لغة إلى برنامج مترجم يولد ببغاء الرمز يفهمه. يتم إطلاق هذه المترجمين بشكل منفصل. (نرى http://trac.parrot.org/parrot/wiki/languages ) معظم اللغات التي تستهدف الببغاء في حالة غير مكتملة مبكرة ، وبالتالي فإن قابلية التشغيل البيني ليست مشكلة كبيرة في الوقت الحالي. Parrot ليس مترجمًا بيرل 6 ، لكن Rakudo Perl 6 يصادف أن يكون أحد المترجمات الأكثر تطوراً الذي يستهدف الببغاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top