NekoVM
NekoVM هي آلة افتراضية طوّرها نيكولاس كاناس كجزء من جهود البحث والتطوير لدى شركتين مستقلتين لتطوير ألعاب الفيديو في بوردو ، فرنسا : الأولى في Motion Twin والثانية في Shiro Games . لغة NekoVM الأصلية هي الشفرة البايتية للغة برمجة عالية المستوى ذات كتابة ديناميكية تُسمى Neko. يتيح هذا الاقتران استخدام Neko مباشرةً كلغة برمجة نصية مضمنة ، أو استهداف NekoVM عن طريق ترجمة لغة أخرى (مثل Haxe ) إلى الشفرة البايتية لـ NekoVM.
مفهوم
يحتوي Neko على مُصرّف وآلة افتراضية (VM) مزودة بخاصية جمع البيانات المهملة . يقوم المُصرّف بتحويل ملف المصدر .neko إلى ملف بايت كود .n قابل للتنفيذ باستخدام الآلة الافتراضية. ولأن Neko لغة ديناميكية الكتابة بدون فئات ثابتة، يحتاج المطور فقط إلى إيجاد التعيين المناسب لوقت التشغيل (على عكس تعيين أنواع البيانات ) لضمان تنفيذ الكود بشكل صحيح. وكما ورد في الأسئلة الشائعة حول Neko : "...من الأسهل كتابة لغة جديدة أو موجودة على NekoVM مقارنةً بـ CLR / JVM ، حيث لا يتطلب الأمر التعامل مع نظام أنواع عالي المستوى. وهذا يعني أيضًا أن اللغات يمكنها التفاعل فيما بينها بسهولة أكبر، لأنها تحتاج فقط إلى مشاركة نفس هياكل البيانات وليس بالضرورة نفس الأنواع." [ 1 ]
يتطلب Neko عملية تجميع قبل التنفيذ، مثل لغات البرمجة النصية الأخرى مثل Apache Groovy . ولأن Neko لا يحتاج إلى تفسير أثناء التشغيل، فإنه يُنفذ بشكل أسرع. ويمكن للغة Haxe أن تُجمّع إلى كود Neko، بالإضافة إلى لغات أخرى.
آلة افتراضية
تُستخدم الآلة الافتراضية Neko لتنفيذ ملف بايت كود Neko، كما أن الآلة الافتراضية لديها خيار تحويل ملف بايت كود إلى ملف قابل للتنفيذ (تختلف المخرجات حسب نظام التشغيل المستهدف).
لغة
مرحبا بالعالم
$print ( "Hello World!" );تحويلات الأنواع
$int ( "67.87" ); // تحويل السلسلة النصية "67.87" إلى العدد الصحيح 67 $float ( 12345 ); // تحويل العدد الصحيح 12345 إلى العدد العشري 12345.0000 $string ( $array ( 1 , 2 , 3 )); // تحويل المصفوفة [1,2,3] إلى السلسلة النصية "[1,2,3]"أشياء
o = $new ( null ); // كائن فارغ جديد o2 = $new ( o ) ; // إنشاء نسخة من o o2 = $new ( 33 ); // إذا لم يكن المعامل كائنًا، يتم طرح استثناء o.field = value ; // تعيين قيمة الحقل إلى القيمة o.field ; // إرجاع قيمة "field" للكائن oطُرق
foo = function () { $print ( this . x ); } o = $new ( null ); o . x = 3 ; o . bar = function () { foo (); }; o . bar (); // يطبع 3نطاق الوظيفة
var x = 3 ; f = function () { $print ( x ); } x = 4 ; f (); // طباعة 3النماذج الأولية
var proto = $new ( null ); proto . foo = function () { $print ( this . msg ) }var o = $new ( null ); س . رسالة = "مرحبا" ; $objsetproto ( o , proto ); س . فو ()؛ // طباعة "مرحبا"$objsetproto ( o , null ); // إزالة البروتوكول o.foo ( ) ; // استثناءوظائف الويب
يتضمن Neko وحدات خادم Apache التالية : mod_neko للغة Neko و mod_tora لاستضافة خادم تطبيقات NekoVM المسمى tora . وبذلك، يمكنه معالجة مدخلات المستخدم باستخدام طلبات GET و POST.
get_params = $ loader.loadprim ( " mod_neko @get_params" , 0 ); $print ( "PARAMS = " + get_params ());انظر أيضاً
مراجع
- ↑ "ما الفرق بين Neko و CLR الخاص بـ .Net أو JVM الخاص بـ Java ؟" . الأسئلة الشائعة . NekoVM . تاريخ الاسترجاع: 28-03-2021 .
روابط خارجية
- الموقع الرسمي

- أرشيفات القوائم البريدية على موقع Wayback Machine (تمت أرشفة بتاريخ 20-12-2013)
- لغات البرمجة ذات الكتابة الديناميكية
- برنامج مجاني مكتوب بلغة C
- برنامج مجاني مكتوب بلغة OCaml
- لغات البرمجة الكائنية التوجه
- لغات البرمجة القائمة على النماذج الأولية
- برنامج مرخص بموجب ترخيص MIT
- الآلات الافتراضية القائمة على المكدس
