لغات البرمجة

لغة برمجة Oberon-2

لغة Oberon-2 هي إحدى لغات البرمجة التي تم تطويرها كتطوير للغة الأصلية Oberon، وهي تضيف ميزات قليلة من البرمجة الشيئية والانعكاسية المحدودة، إضافة إلى إمكانية استخدام الصفوف المفتوحة كأنواع قواعد مؤشرات، وتصدير حقول القراءة فقط، وإعادة تقديم حلقة التكرار FOR من Modula-2. تم تطويرها في عام 1991 في ETH Zurich بواسطة Niklaus Wirth و Hanspeter Mössenböck. Oberon-2 هي مجموعة فرعية من Oberon ومتوافقة تمامًا معها، وكانت إعادة تصميمًا لـ Object Oberon. ورثت Oberon-2 الانعكاس المحدود والوراثة الفردية (“امتداد النوع”) دون واجهات أو مزج من Oberon، ولكن أضافت طرقًا افتراضية فعالة (“إجراءات النوع المقيد”). يتم حل استدعاء الأساليب في وقت التشغيل باستخدام جداول الأساليب الظاهرية بنمط C++. بالمقارنة مع لغات البرمجة الشيئية الكاملة مثل Smalltalk، في Oberon-2 الأنواع الأساسية ليست كائنات، والفئات ليست كائنات، والعديد من العمليات ليست طرقًا، ولا يوجد تمرير رسائل (إلى حد ما يمكن تقليده عن طريق الانعكاس ومن خلال توسيع الرسائل، كما هو موضح في ETH Oberon)، والتعددية محدودة للفصول الفرعية لفئة مشتركة (لا يوجد تكوين البط في Python، ولا يمكن تحديد الواجهات مثل Java). لا تدعم Oberon-2 الكتمان على مستوى الكائن/الفئة، ولكن يمكن استخدام الوحدات لهذا الغرض. لا تستخدم الانعكاس في Oberon-2 الكائنات الفرعية، ولكن تقرأ ببساطة من وصفيات الأنواع المترجمة إلى الثنائيات التنفيذية، وتعرض في الوحدات التي تعرف الأنواع و/أو الإجراءات. إذا تم تعريض تنسيق هذه الهياكل على مستوى اللغة (كما هو الحال في ETH Oberon، على سبيل المثال)، يمكن تنفيذ الانعكاس على مستوى المكتبة. ويمكن بالتالي تنفيذه تقريبًا بالكامل على مستوى المكتبة، دون تغيير الشفرة اللغوية. في الواقع، يستخدم ETH Oberon قدرات الانعكاس على مستوى اللغة ومستوى المكتبة بشكل واسع. توفر Oberon-2 الدعم المدمج في وقت التشغيل لجمع القمامة بطريقة مشابهة لـ Java وتنفذ فحوصات الحدود وفهرس الصفوف، وما إلى ذلك التي تقضي على مشاكل كتابة حدود الكومة والمصفوفات وإدارة الذاكرة اليدوية المتأصلة في C/C++. يضمن الترجمة المستقلة باستخدام ملفات الرموز وفضاءات الأسماء من خلال هندسة الوحدات إعادة بناء سريع لأنه يتعين إعادة ترجمة الوحدات التي تغيرت واجهاتها فقط. تعتبر لغة Component Pascal تحسينًا (مجموعة فرعية) لـ Oberon-2.

للمزيد من المعلومات، يمكنك زيارة صفحة ويكيبيديا الخاصة بـ Oberon-2.