بيئة تشغيل اللغة الديناميكية

يعمل وقت تشغيل اللغة الديناميكية ( DLR ) من مايكروسوفت فوق وقت تشغيل اللغة المشتركة (CLR) ويوفر خدمات لغة الحاسوب للغات الديناميكية . وتشمل هذه الخدمات ما يلي:

يتم استخدام DLR لتنفيذ اللغات الديناميكية على إطار عمل .NET ، بما في ذلك مشاريع IronPython و IronRuby .

بما أن تطبيقات اللغات الديناميكية تشترك في نظام أساسي مشترك، فسيكون من الأسهل عليها التفاعل فيما بينها. على سبيل المثال، يُفترض أن يكون من الممكن استخدام مكتبات من أي لغة ديناميكية في أي لغة ديناميكية أخرى. إضافةً إلى ذلك، تتيح واجهة برمجة التطبيقات (API) إمكانية التشغيل البيني مع لغات سطر الأوامر ذات الكتابة الثابتة مثل C# و Visual Basic .NET .

تاريخ

أعلنت مايكروسوفت عن مشروع Dynamic Language Runtime في مؤتمر MIX 2007. [ 2 ] [ 3 ]

أصدرت مايكروسوفت الإصدار التجريبي 0.9 من مكتبة .NET DLR في نوفمبر 2008، [ 4 ] والإصدار النهائي 0.9 في ديسمبر 2008. أما الإصدار 1.0 فقد صدر في أبريل 2010. وفي يوليو 2010، غيّرت مايكروسوفت ترخيص DLR من ترخيص مايكروسوفت العام إلى ترخيص أباتشي 2.0 . [ 5 ] ومع إصدار .NET 4 ، أيضاً في أبريل 2010، تم دمج DLR في إطار عمل .NET نفسه. [ 6 ]

يحتوي مشروع DLR مفتوح المصدر، المُستضاف على GitHub، على بعض الميزات الإضافية لمطوري اللغات. بعد إصدار يوليو 2010، شهد المشروع نشاطًا محدودًا لعدة سنوات. وقد فسّر أحد مطوري مايكروسوفت، الذي عمل على IronRuby، ذلك بأنه عدم التزام من مايكروسوفت باللغات الديناميكية على إطار عمل .NET. [ 7 ] [ 8 ] ومع ذلك، شهد المشروع نشاطًا منتظمًا منذ عامي 2016/2017، مما أدى إلى عدد من التحسينات والتحديثات.

تطبيقات اللغة

في عام 2007، خططت مايكروسوفت مبدئيًا لاستخدام DLR في إصداري Visual Basic 2010 (VB 10.0) و Managed JScript ( ECMAScript 3.0) القادمين، بالإضافة إلى Python وRuby. [ 2 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ]

أسفر عمل مركز أبحاث الفضاء الألماني (DLR) على لغتي روبي وبايثون عن تطوير IronRuby ، وهو تطبيق .NET للغة روبي ، و IronPython . [ 2 ]

بحلول أغسطس 2009، أعلنت مايكروسوفت أنها لم تعد تخطط لتطبيق Managed JScript على DLR. [ 13 ] وفي وقت لاحق، ساهم فريدريك هولمستروم بشكل مستقل في تطوير تطبيق JavaScript لـ DLR أطلق عليه اسم "IronJS" على غرار تسمية IronPython وIronRuby.

مثل لغة C# ، يمكن للغة Visual Basic الوصول إلى الكائنات من اللغات الديناميكية المبنية على DLR مثل IronPython و IronRuby . [ 14 ] [ 15 ]

تم تحديث PowerShell 3.0، الذي تم إصداره في Windows 8 ، لاستخدام DLR. [ 16 ]

كان مشروع IronScheme ، وهو تطبيق للغة Scheme ، [ 17 ] يخطط للبناء على DLR. إلا أن هذه الفكرة تم التخلي عنها لأن فرع DLR المستخدم في المشروع أصبح غير متوافق مع الفرع الرئيسي ، وأيضًا لأن (وفقًا لمنسق المشروع) الإصدار الحالي من DLR في ذلك الوقت لم يكن يدعم غالبية متطلبات Scheme. [ 18 ]

بنيان

تعتمد بيئة تشغيل اللغات الديناميكية (DLR) على فكرة إمكانية تطبيق خصائص لغوية محددة على شجرة بناء جملة مجردة عامة مستقلة عن اللغة ، حيث تتوافق عقدها مع وظائف محددة مشتركة بين العديد من اللغات الديناميكية. [ 19 ] وتستند هذه البنية إلى فكرة أن عدد بنيات اللغة الأساسية التي يجب تطبيقها على المكدس العام يجب أن يكون محدودًا بطبيعته. [ 20 ] تقوم بيئة تشغيل اللغات الديناميكية (DLR) بتوليد شيفرة ديناميكيًا تتوافق مع الوظائف التي تعبر عنها هذه العقد. ويتعين على مُصرّف أي لغة ديناميكية مُطبقة على بيئة تشغيل اللغات الديناميكية (DLR) توليد أشجار DLR المجردة، وتسليمها إلى مكتبات DLR.

توفر DLR DynamicSiteكائنات يتم تحديثها ديناميكيًا لتخزين مهمة ربط الدوال بالكائنات مؤقتًا. نظرًا لأن نوع الكائن - بالإضافة إلى العناصر التي يحتويها - في اللغات الديناميكية قد يتغير أثناء دورة حياة البرنامج، يجب على استدعاء الدالة التحقق من قائمة الدوال للتأكد من صحة الاستدعاء. DynamicSiteتمثل الكائنات حالة الكائن ودواله وتخزنها مؤقتًا؛ وينعكس أي تحديث للكائن في الكائنات DynamicSiteأيضًا. توجه DLR جميع استدعاءات الدوال عبر DynamicSiteالكائنات، التي بدورها تُجري بحثًا سريعًا وربطًا للدالة بالتنفيذ الفعلي. [ 21 ]

وعلى النقيض من الجهود الأخرى مثل آلة Parrot الافتراضية (بدون تبعيات) أو آلة Da Vinci (المبنية على JVM الخاص بجافا عن طريق إضافة رموز بايت جديدة في مجموعة تعليمات JVM )، فإن DLR مبني على وقت تشغيل اللغة المشتركة الحالي ، وهو الآلة الافتراضية لإطار عمل .NET . [ 22 ]

انظر أيضاً

مراجع

  1. "الإصدار 1.3.5" . 19 ديسمبر 2024. تم الاطلاع عليه بتاريخ 24 ديسمبر 2024 .
  2. ١ ٢ ٣ هوغونين، جيم. "بيئة تشغيل لغة ديناميكية (DLR)" . تم الاطلاع عليه بتاريخ ٢١ يونيو ٢٠٠٧. على المدى القريب، ينصب تركيزنا على استخدام عدد محدود من اللغات لدفع الموجة الأولى من تطوير بيئة التشغيل الديناميكية (DLR)، حيث يمكننا العمل عن كثب وبشكل مباشر مع المطورين لتذليل أبرز المشكلات في تصميمها. بعد هذه المرحلة الأولية، نرغب في التواصل مع مجتمع اللغات الأوسع.
  3. فيهلاند، دينو (15 يناير 2008). "خارطة طريق IronPython 2.0" . مؤرشفة من الأصل بتاريخ 6 سبتمبر 2008. تم الاطلاع عليها بتاريخ 9 فبراير 2008. ليس لدينا وثيقة كهذه، لكن الهدف العام هو إطلاق IronPython 2.0 بحلول نهاية العام. أما بالنسبة لمركز أبحاث الفضاء الألماني (DLR) ، فالخطة هي إطلاق الإصدار 1.0 في نفس وقت إطلاق IronPython 2.0 تقريبًا.
  4. "أرشيف كود بليكس" .
  5. "أرشيف كود بليكس" . مؤرشف من الأصل بتاريخ 14 أغسطس 2011. تم الاطلاع عليه بتاريخ 27 يوليو 2010 .
  6. "نظرة عامة على وقت تشغيل اللغة الديناميكية - إطار عمل .NET" . 30 مارس 2024.
  7. "مايكروسوفت تملّ من IronRuby؛ جيمي شيمينتي يترك العمل" . rubyinside.com. 2010-08-07 . تم الاطلاع عليه بتاريخ 2012-02-26 . قبل عام، تقلص حجم الفريق إلى النصف، مما حدّ من مرونتنا بشكل كبير. [...] عمومًا، أرى نقصًا خطيرًا في الالتزام بـ IronRuby، واللغات الديناميكية على .NET بشكل عام.
  8. "لغات مايكروسوفت الديناميكية تحتضر" . i-programmer.info. 10 أغسطس 2010. تاريخ الاطلاع: 26 فبراير 2012. بدون بذل الجهد الأخير لجعل اللغات تعمل ضمن بيئة Visual Studio ومتكاملة مع المصمم، من المحتمل أن تكون لغتا Iron قد انتهى أمرهما - ويبدو أن مايكروسوفت قد فقدت الرغبة في إنجاحهما.
  9. "تم الإعلان عن إدارة جافا سكريبت" . تم الاسترجاع في 4 مايو 2007 .
  10. "ما هو VBx بحق الجحيم؟" . 1 مايو 2007. مؤرشف من الأصل في 25 مايو 2009. تم الاطلاع عليه في 12 أغسطس 2009. مع الإصدار الجديد من DLR، أصبح لدينا دعم لـ IronPython وIronRuby وJavascript، بالإضافة إلى ميزة تجميع VBx الديناميكية الجديدة.
  11. "وضع Mix وSilverlight وCoreCLR وDLR في سياقها" . 2007-05-01 . تم الاطلاع عليه بتاريخ 2008-08-12 .
  12. "مقدمة إلى فيجوال بيسك 10" . infoq.com. 2007-05-04 . تم الاطلاع عليه بتاريخ 2009-08-12 . يستفيد فيجوال بيسك 10 من ميزة في سيلفرلايت تُسمى وقت تشغيل اللغة الديناميكي أو DLR
  13. تشايلز، بيل (1 يونيو 2009). "مستقبل جافا سكريبت المُدارة (IronJScript)؟" . مؤرشف من الأصل في 31 أغسطس 2009. تم الاطلاع عليه في 12 أغسطس 2009. كانت جافا سكريبت DLR تجريبية لإثراء تصميم DLR (أشجار التعبير، والتوافق، ومواقع الاستدعاء، والاستضافة، إلخ). أصبحت جافا سكريبت التي أصدرناها مع asp futures وSilverlight dynamic sdk قديمة جدًا وغير قابلة للاستخدام مع استمرار تطور DLR لإصدارها في CLR 4.0. للأسف، لا توجد خطط في الوقت الحالي لتطوير وإصدار جافا سكريبت قابلة للاستضافة على DLR.
  14. "ما الجديد في فيجوال بيسك 2010" . مايكروسوفت . 2009. تم الاسترجاع في 12 أغسطس 2009. يرتبط فيجوال بيسك بالكائنات من لغات ديناميكية مثل IronPython وIronRuby
  15. "شرح تفصيلي: إنشاء واستخدام الكائنات الديناميكية (C# و Visual Basic)" . 25 فبراير 2023.
  16. "باور شيل 3 - أخيرًا على DLR!" . مؤرشف من الأصل بتاريخ 28-04-2012 . تم الاطلاع عليه بتاريخ 30-03-2012 .
  17. "أرشيف كود بليكس" .
  18. "هل يوجد نموذج لـ Silverlight؟" . 11-05-2009 . تم الاطلاع عليه بتاريخ 26-07-2009 . للأسف، فرع DLR الخاص بي غير متزامن تمامًا مع فرع Silverlight. فكرتُ في الأمر، ربما لا أحتاج إلى DLR بحد ذاته، سأبحث في الأمر. المشكلة هي أن DLR بحالته الحالية غير كافٍ لدعم معظم متطلبات النظام.{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  19. هوغونين، جيم (15 مايو 2007). "أشجار DLR (الجزء 1)" . تم الاطلاع عليه بتاريخ 23 فبراير 2008. تكمن الحيلة الرئيسية في تطبيق DLR في استخدام هذا النوع من الأشجار لتمرير التعليمات البرمجية كبيانات، وللحفاظ على التعليمات البرمجية في شكل قابل للتحليل والتعديل بسهولة لأطول فترة ممكنة.
  20. ناتر، تشارلز (28 يناير 2008). "Lang.NET 2008: أفكار اليوم الأول" . تم الاطلاع عليه بتاريخ 23 فبراير 2008. الفكرة هي أن هناك منحنى تقاربي سريع التسطح لعدد عقد شجرة التعبير المطلوبة لتنفيذ كل لغة جديدة. يبقى أن نرى ما إذا كان هذا هو الحال.
  21. بيل تشايلز (أكتوبر 2007). "CLR من الداخل إلى الخارج: IronPython وبيئة تشغيل اللغة الديناميكية" . مجلة MSDN . تم الاطلاع عليه بتاريخ 10 أغسطس 2007 .
  22. روز، جون (2008-02-02). "أحسنت صنعًا لوقت التشغيل الديناميكي!" . مؤرشف من الأصل في 2008-02-06 . تم الاسترجاع في 2008-02-23 . من المثير للاهتمام ملاحظة الاختلافات بين امتدادات CLR وJVM. فهي تعمل بشكل كامل فوق مستوى CLR دون تحسينه بشكل ملحوظ، بينما نقوم بتطوير JVM والمكتبات في الوقت نفسه.