سؤال

Parrot هو الجهاز الظاهري المصمم أصلاً لـ Perl 6.

ما هي القدرات الفنية التي تقدمها Parrot VM أن الأجهزة الافتراضية المتنافسة مثل الجهاز الافتراضي جافا (JVM)/نقطة ساخنة VM و وقت تشغيل اللغة المشتركة (CLR) قلة؟

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

المحلول

تم كتابة الإجابة التالية في عام 2009. انظر أيضًا هذا تحديث 2015 بواسطة Raiph.

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

الأكثر إثارة للاهتمام هو PMC ، نوع من مثل نوع كائن JVM ولكن أكثر فطرية. PMCs هي حاوية ل كل الأنواع الأخرى أكثر تعقيدًا تحتاج بلغة حقيقية مثل المصفوفات ، والجداول ، والأشجار ، والتكرار ، والإدخال/الإخراج ، إلخ. الببغاء لا يخجل من الأجزاء الفوضوية ولكن الضرورية من تنفيذ لغة.

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

أخيرًا ، يمكن كتابة الببغاء ليس فقط في التجميع (PASM) ولكن أيضا لغة مستوى أعلى قليلا ، تمثيل الببغاء الوسيط (PIR). يحتوي PIR على حلقات ، روتين فرعي ، متغيرات محلية وبعض الرياضيات الأساسية والمقارنة ، جميع الأساسيات التي يتوقعها الناس بلغة البرمجة ، دون الابتعاد عن المعدن.

الكل في الكل ، Parrot ودية للغاية لمصممي اللغة (يكتب من قبلهم ومن أجلهم) الذين يريدون ذلك تصميم لغة وترك أكبر قدر ممكن من التنفيذ لشخص آخر.

نصائح أخرى

يمكنك قراءة الكثير من هذا على ببغاء VM مقدمة صفحة.

الميزة الرئيسية التي تتمتع بها Parrot على JVM أو CLR هي أنه مصمم لدعم اللغات الديناميكية أولاً ، وربما توفر دعمًا أفضل وأداءًا لللغات المكتوبة ديناميكيًا. يتم توجيه JVM و CLR بشكل أكبر نحو دعم اللغات المكتوبة بشكل ثابت ، ويظهر العديد من قرارات التصميم ذلك.

شيء آخر يجعل الببغاء مختلفًا عن معظم VMs (بالتأكيد يختلف عن JVM) ، هو أنه جهاز تسجيل بدلاً من آلة المكدس. لكنني أعتقد أن الناس سوف يتجادلون لفترة طويلة ما إذا كان يمكن تسمية ذلك ميزة أو عيب.

لا أعرف JVM و CLR بما فيه الكفاية ، لكن نصائحي:

  • اللغات الديناميكية (الإغلاق ، أرقام الأشكال المتعددة ، الاستمرارية ، المشاركين المشتركين) دعم (السرعة)
  • إرسال الطريقة الديناميكية ،
  • وظائف الدرجة الأولى ،
  • استمرارية من الدرجة الأولى ،
  • المعلمات (اختياري ، اسمه ، ..) ،
  • سجل على أساس
  • لديه قابلية التشغيل المتداخل HLL على مستوى التجميع
  • مجموعة من المنصات

تحديث: ربما يكون هذا غير ذي صلة لأن JVM هو واحد من Rakudo Perl 6 الخلفية في الوقت الحاضر. نرى Rakudo Perl 6 على JVM (Perl 6 Advent Calendar 2013 ، اليوم 3).

Parrot هو الجهاز الظاهري المصمم أصلاً لـ Perl 6.

هناك الان اثنين VMs مصمم في الأصل لبيرل 6 ؛ يرتكب Moarvm بدأت في عام 2012.

ما هي القدرات الفنية التي تقدمها Parrot VM أن الأجهزة الافتراضية المتنافسة مثل Java Virtual Machine (JVM)/Hotspot VM ونقص وقت تشغيل اللغة الشائعة (CLR)؟

في إجابة أخرى على هذه الصفحة, ، Reini Urban ، The Current (April 2015) Parrot Lead Dev ، يقدم مقارنة موجزة للبغاء مع JVM و CLR VM.

حسب رايري, ، ميزة رئيسية تتمتع بها الببغاء على Moarvm هي "مؤشرات ترابط أقل قفلًا".

الميزة الرئيسية والفرق التقني على JVM و CLR هي تلك الأنواع (الطبقات تسمى PMC's) و OPS (طُرق) قد يتم تحميلها ديناميكيًا من تطبيقات C الفعالة التي يقدمها المستخدم ، ويكون إطار المحلل المالي لإنشاء اللغات وتوسيع نطاقه مدمجًا.

هذا السؤال قديم. لم يعد Rakudo Perl 6 يستهدف الببغاء كدخل خلفي ؛ Moarvm هي الواجهة الخلفية المفضلة ، حيث تعمل JVM الخلفية على التقدم (تعمل بشكل عام ، ولكن العديد من ميزات Perl 6 لم يتم تنفيذها أو كسرها حاليًا). يتم تنفيذ أعمال التطوير (غير جاهزة للمستخدمين) لإضافة JavaScript كواجهة خلفية ثالثة.

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