أوبيرون (لغة برمجة)

أوبيرون
النماذجأمرية ، منظمة ، معيارية ، موجهة نحو الكائنات
عائلةويرث أوبيرون
صمم بواسطةنيكلاوس ويرث 
المطورنيكلاوس ويرث 
ظهرت لأول مرة1987 ؛ منذ 37 سنة ( 1987 )
إصدار مستقر
أوبيرون-07 / 6 مارس 2020 ؛ منذ 4 سنوات ( 2020-03-06 )
الانضباط في الطباعةقوي ، هجين ( ثابت وديناميكي )
نِطَاقمعجمي
منصةARM ، StrongARM ؛ IA-32 ، x86-64 ؛ SPARC ، Ceres ( NS32032 )
نظام التشغيلWindows ، Linux ، Solaris ، نظام التشغيل Mac OS الكلاسيكي ، Atari TOS ، AmigaOS
موقع إلكترونيمشروع ويبترون
متأثر بـ
نموذج 2
متأثر
أوبيرون-2 ، أوبيرون-07، أوبيرون النشط ، مكون باسكال ، زونون ، جو ، في (فلانج) ، نيم

أوبيرون هي لغة برمجة عامة الغرض نشرت لأول مرة في عام 1987 بواسطة نيكلاوس ويرث وأحدث عضو في عائلة ويرث من لغات شبيهة بـ ALGOL ( أويلر ، ALGOL W ، باسكال ، مودولا ، ومودولا-2 ). [1] [2] [3] [4] كانت أوبيرون نتيجة لجهد مركّز لزيادة قوة مودولا-2 ، الخليفة المباشر لباسكال ، وفي الوقت نفسه تقليل تعقيدها. ميزتها الجديدة الرئيسية هي مفهوم تمديد نوع البيانات لأنواع السجلات . [5] فهي تسمح ببناء أنواع بيانات جديدة على أساس الأنواع الموجودة وربطها، والانحراف عن عقيدة الكتابة الثابتة الصارمة للبيانات. تمديد النوع هو طريقة ويرث في الميراث تعكس وجهة نظر الموقع الرئيسي. تم تطوير أوبيرون كجزء من تنفيذ نظام تشغيل ، يُسمى أيضًا أوبيرون في المعهد الفيدرالي السويسري للتكنولوجيا في زيورخ في سويسرا . كان الاسم مستوحى من صور مسبار الفضاء فوييجر لقمر كوكب أورانوس ، المسمى أوبيرون ، ولأن أوبيرون مشهور بأنه ملك الجان. [6]

تم صيانة Oberon بواسطة Wirth وكان آخر تحديث لمترجم Project Oberon بتاريخ 6 مارس 2020. [7]

تصميم

تم تصميم Oberon مع وضع شعار منسوب إلى ألبرت أينشتاين في الاعتبار: "اجعل الأشياء بسيطة قدر الإمكان، ولكن ليس أبسط". كان المبدأ التوجيهي الرئيسي هو التركيز على الميزات الأساسية والجوهرية وحذف المشكلات العابرة. كان عامل آخر هو الاعتراف بنمو التعقيد في لغات مثل C++ و Ada . وعلى النقيض من ذلك، يؤكد Oberon على استخدام مفهوم المكتبة لتوسيع اللغة. تم حذف أنواع التعداد والنطاق الفرعي، والتي كانت موجودة في Modula-2، وتقتصر أنواع المجموعة على مجموعات من الأعداد الصحيحة. يجب تأهيل جميع العناصر المستوردة باسم الوحدة التي تم إعلانها فيها. يتم تسليط الضوء على المرافق منخفضة المستوى من خلال السماح باستخدامها فقط في وحدة تتضمن المعرف SYSTEMفي قائمة الاستيراد الخاصة بها. يسمح فحص النوع الصارم ، حتى عبر الوحدات، وفحص الفهرس في وقت التشغيل ، وفحص المؤشر الفارغ ، ومفهوم تمديد النوع الآمن للبرمجة بالاعتماد إلى حد كبير على قواعد اللغة وحدها.

كان الهدف من هذه الإستراتيجية هو إنتاج لغة أسهل في التعلم وأبسط في التنفيذ وأكثر كفاءة. تم النظر إلى مُجمِّعي Oberon على أنهم مضغوطون وسريعون، في حين يوفرون جودة كود مماثلة للمُجمِّعين التجاريين. [8]

صفات

تشمل السمات التي تميز لغة أوبيرون ما يلي: [9]

  • بناء الجملة حساس لحالة الأحرف مع الكلمات الرئيسية ذات الأحرف الكبيرة
  • تمديد النوع مع اختبار النوع
  • الوحدات والتجميع المنفصل
  • عمليات السلسلة
  • عزل الكود غير الآمن
  • دعم برمجة النظام

اتجاه الكائن

يدعم Oberon توسيع أنواع السجلات لبناء التجريدات والهياكل غير المتجانسة. وعلى النقيض من اللهجات اللاحقة، Oberon-2 وActive Oberon، يفتقر Oberon الأصلي إلى آلية الإرسال كميزة لغوية ولكنه يمتلكها كتقنية برمجة أو نمط تصميم. وهذا يمنح مرونة كبيرة في OOP. في نظام التشغيل Oberon، يتم استخدام تقنيتين برمجة معًا لاستدعاء الإرسال: مجموعة الطرق ومعالج الرسائل.

مجموعة الطرق

في هذه التقنية، يتم تعريف جدول متغيرات الإجراء ويتم إعلان متغير عالمي من هذا النوع في الوحدة النمطية الممتدة وتعيينه مرة أخرى في الوحدة النمطية العامة:

الوحدة: الأشكال؛ (* الوحدة المجردة *)

نوع 
   الشكل* = مؤشر إلى وصف الشكل؛
   الواجهة* = مؤشر إلى InterfaceDesc؛

   InterfaceDesc* = RECORD 
      draw* : الإجراء (f : الشكل)؛
      واضح* : الإجراء (f : الشكل)؛
      علامة* : الإجراء (f : الشكل)؛
      نقل*: الإجراء (f: الشكل؛ dx، dy: عدد صحيحالنهاية ؛

   FigureDesc* = سجل
      إذا : واجهة؛
   نهاية ؛

الإجراء Init* (f : الشكل؛ إذا : الواجهة)؛
 BEGIN
   ف.إذا := إذا
النهاية التهيئة؛

الإجراء ارسم* (شكل: f)؛
 ابدأ
   و.إذا.ارسم(و)
نهاية السحب؛

(* إجراءات أخرى هنا *)

أرقام النهاية .

نقوم بتوسيع النوع العام Figure إلى شكل محدد:

الوحدة المستطيلات؛

أرقام الاستيراد ؛

نوع 
   المستطيل* = مؤشر إلى RectangleDesc؛

   RectangleDesc* = تسجيل
      (الأشكال.الوصف)
      x، y، w، h: عدد صحيح ؛
    النهاية ؛

حكم الفيديو المساعد
   إذا : الأشكال.الواجهة؛

الإجراء جديد* ( VAR r: مستطيل)؛
 بداية 
   جديدة (r)؛
   الأشكال.Init(r، إذا)
النهاية جديد؛

الإجراء: السحب* (f : الشكل)؛
    VAR
      ر : مستطيل؛
البداية 
   r := f(مستطيل)؛ (* f AS مستطيل *) 
   (* ... *)
 النهاية ارسم؛

(* إجراءات أخرى هنا *)

البدء  (* تهيئة الوحدة *) 
   جديد (إذا)؛
   إذا.ارسم := ارسم؛
   إذا.clear := مسح؛
   إذا.mark := علامة؛
   إذا تحرك := تحرك
نهاية المستطيلات.

يتم إجراء الإرسال الديناميكي فقط من خلال الإجراءات الموجودة في وحدة Figures التي تعد الوحدة العامة.

معالج الرسائل

تتمثل هذه التقنية في استبدال مجموعة الأساليب بإجراء واحد يميز بين الأساليب المختلفة:

الوحدة: الأشكال؛ (* الوحدة المجردة *)

نوع 
   الشكل* = مؤشر إلى وصف الشكل؛

   الرسالة* = نهاية التسجيل ؛
   DrawMsg* = RECORD (رسالة) END ؛
   ClearMsg* = RECORD (رسالة) END ؛
   MarkMsg* = RECORD (رسالة) END ؛
   MoveMsg* = RECORD (رسالة) dx*, dy* : INTEGER  END ؛

   Handler* = PROCEDURE (f : الشكل؛ VAR msg : الرسالة)؛

   FigureDesc* = RECORD 
      (* الملخص *)
      المقبض : معالج؛
   نهاية ؛

الإجراء Handle* (f : الشكل؛ VAR msg : الرسالة)؛
 BEGIN
   f.handle(f, msg)
مقبض النهاية ؛

الإجراء Init* (f: الشكل؛ المقبض: المعالج)؛
 البدء
   f.handle := مقبض
النهاية التهيئة؛

أرقام النهاية .

نقوم بتوسيع النوع العام Figure إلى شكل محدد:

الوحدة المستطيلات؛

أرقام الاستيراد ؛

نوع 
   المستطيل* = مؤشر إلى RectangleDesc؛

   RectangleDesc* = تسجيل
      (الأشكال.الوصف)
      x، y، w، h: عدد صحيح؛
   نهاية ؛

الإجراء ارسم* (r : مستطيل)؛
 ابدأ 
  (* ... *)
 انتهى ارسم؛

(* إجراءات أخرى هنا *)

مقبض الإجراء * (f: الشكل؛ رسالة
    VAR : Figures.Message)؛ حكم الفيديو المساعد
      ر : مستطيل؛
يبدأ
   r := f(المستطيل)؛
   إذا كانت     الرسالة هي Figures.DrawMsg ، فارسم (r)
    وإلا فإن الرسالة هي Figures.MarkMsg ، فاكتب (r)
    وإلا فإن الرسالة هي Figures.MoveMsg ، فاكتب (r، msg(Figures.MoveMsg).dx، msg(Figures.MoveMsg).dy)
    وإلا (* تجاهل *) END END معالجة؛  
   


الإجراء جديد* ( VAR r: مستطيل)؛
 بداية 
   جديدة (r)؛
   الأشكال.Init(r، مقبض)
النهاية جديد؛

نهاية المستطيلات.

في نظام التشغيل Oberon، يتم استخدام كلتا التقنيتين للإرسال الديناميكي. يتم استخدام التقنية الأولى لمجموعة معروفة من الطرق؛ ويتم استخدام التقنية الثانية لأي طرق جديدة يتم إعلانها في وحدة التمديد. على سبيل المثال، إذا كانت وحدة التمديد Rectangles ستنفذ إجراء Rotate() جديدًا، فيمكن استدعاؤه داخل وحدة Figures فقط عبر معالج الرسائل.

التنفيذات والمتغيرات

أوبيرون

يمكن العثور على تنفيذات مجانية لبرنامج Oberon (اللغة) وOberon (نظام التشغيل) على الإنترنت (العديد منها من ETHZ نفسها).

أوبيرون-2

تم إجراء بعض التغييرات على المواصفات التي تم إصدارها لأول مرة. على سبيل المثال، تمت إضافة ميزات البرمجة الموجهة للكائناتFOR (OOP)، وتمت إعادة تفعيل الحلقة. وكانت النتيجة هي Oberon-2 . تم إصدار إصدار واحد، باسم Native Oberon والذي يتضمن نظام تشغيل، ويمكنه التمهيد مباشرة على أجهزة فئة متوافقة مع IBM PC . كما تم تطوير تنفيذ .NET لـ Oberon مع بعض الامتدادات الثانوية المرتبطة بـ .NET في ETHZ. في عام 1993، جلبت شركة فرعية لجامعة ETHZ لهجة من Oberon-2 إلى السوق باسم Oberon-L . في عام 1997، تمت إعادة تسميته إلى Component Pascal .

تتضمن مُجمِّعات Oberon-2 التي طورتها ETH إصدارات لأنظمة Microsoft Windows و Linux و Solaris و Mac OS الكلاسيكي . توجد تطبيقات من مصادر أخرى لبعض أنظمة التشغيل الأخرى، بما في ذلك Atari TOS و AmigaOS .

يوجد ماسح ضوئي Oberon-2 Lex ومحلل Yacc من إنتاج Stephen J Bevan من جامعة مانشستر بالمملكة المتحدة، ويعتمد على الماسح الضوئي الموجود في مرجع Mössenböck and Wirth. وهو في الإصدار 1.4.

تتضمن المترجمات الأخرى Oxford Oberon-2، [10] والتي تفهم أيضًا Oberon-07، وVishap Oberon. [11] يعتمد الأخير على مُترجم لغة Oberon إلى لغة C من المصدر إلى المصدر (المترجم) المسمى Ofront، [12] والذي يعتمد بدوره على مُترجم OP2 الذي طوره Regis Crelier في ETHZ.

أوبيرون-07

يعتمد Oberon-07، الذي حدده نيكلاوس ويرث في عام 2007 وتمت مراجعته في أعوام 2008 و2011 و2013 و2014 و2015 و2016، على الإصدار الأصلي من Oberon وليس Oberon-2. التغييرات الرئيسية هي: يجب استخدام وظائف التحويل العددي الصريحة (على سبيل المثال، FLOORو ) ؛ تم حذف عبارات و؛ تم تمديد العبارات؛ يمكن استخدام العبارات لاختبارات تمديد النوع؛ لا يمكن ربط العبارات إلا بنهاية الدالة؛ المتغيرات المستوردة ومعلمات القيمة المنظمة للقراءة فقط؛ ويمكن تعيين المصفوفات دون استخدام . [13]FLTWITHLOOPEXITWHILECASERETURNCOPY

تم تطوير مُجمِّعات Oberon-07 للاستخدام مع العديد من أنظمة الكمبيوتر المختلفة. يستهدف مُجمِّع Wirth معالج كمبيوتر ذي مجموعة تعليمات مخفضة (RISC) بتصميمه الخاص والذي تم استخدامه لتنفيذ إصدار 2013 من نظام التشغيل Project Oberon على لوحة Spartan-3 من نوع Xilinx لمصفوفة البوابات القابلة للبرمجة ميدانيًا (FPGA). توجد أيضًا منافذ لمعالج RISC إلى FPGA Spartan-6 وSpartan-7 وArtix-7 ومحاكي RISC لنظام التشغيل Windows (قابل للتجميع على Linux و macOS ، والثنائيات المتوفرة لنظام التشغيل Windows). يتم تجميع OBNC عبر C ويمكن استخدامه على أي نظام تشغيل متوافق مع واجهة نظام التشغيل المحمولة ( POSIX ). يستهدف تنفيذ Astrobe التجاري وحدات تحكم ARM Cortex-M3 وM4 وM7 ذات 32 بت. ينتج مُجمِّع Patchouli ثنائيات Windows ذات 64 بت. ينتج Oberon-07M ثنائيات Windows ذات 32 بت وينفذ الإصدار 2008 من اللغة. تنتج شركة Akron ملفات ثنائية لكل من Windows وLinux. تقوم OberonJS بترجمة Oberon إلى JavaScript . هناك بيئة تطوير متكاملة عبر الإنترنت لـ Oberon. oberonc هو تنفيذ للآلة الافتراضية Java .

أوبيرون نشط

يُعد Active Oberon متغيرًا آخر من Oberon، والذي يضيف كائنات (مع حماية الوصول التي تركز على الكائن والتحكم في النشاط المحلي)، وتأكيدات محمية بالنظام، وجدولة الأولوية الاستباقية وبنية نحوية متغيرة للطرق ( إجراءات مرتبطة بالنوع تسمى في مفردات Oberon). قد تكون الكائنات نشطة، مما يعني أنها قد تكون خيوطًا أو عمليات. علاوة على ذلك، يحتوي Active Oberon على طريقة لتنفيذ المشغلات (بما في ذلك التحميل الزائد)، وبنية نحوية متقدمة لاستخدام المصفوفات (انظر ملحقات لغة OberonX وإجراءات [14] المؤتمر السابع للغات المعيارية المشتركة 2006 أكسفورد، المملكة المتحدة)، ويعرف عن مساحات الأسماء . [15] يقوم نظام التشغيل A2 (سابقًا نظام الكائن النشط (AOS)، [16] ثم Bluebottle )، وخاصة النواة ، بمزامنة وتنسيق الكائنات النشطة المختلفة.

أصدرت ETHZ برنامج Active Oberon الذي يدعم الكائنات النشطة وأنظمة التشغيل القائمة عليه (نظام الكائنات النشطة (AOS)، وBluebottle، وA2)، والبيئة (JDK، وHTTP، وFTP، وما إلى ذلك) للغة. وكما هو الحال مع العديد من التصميمات السابقة من ETHZ، فإن إصدارات كل منهما متاحة للتنزيل على الإنترنت. اعتبارًا من عام 2003، تتضمن وحدات المعالجة المركزية المدعومة x86 أحادية وثنائية النواة ، و StrongARM .

استمر تطوير اللغات في هذه العائلة. تم تسمية امتداد آخر لـ Oberon-2 في الأصل باسم Oberon/L ولكن تمت إعادة تسميته لاحقًا إلى Component Pascal (CP). تم تطوير CP لنظامي التشغيل Windows و Mac OS الكلاسيكي بواسطة Oberon microsystems، وهي شركة فرعية تجارية من ETHZ، ولـ .NET بواسطة جامعة كوينزلاند للتكنولوجيا . علاوة على ذلك، تحمل اللغات Lagoona [17] [18] [19] و Obliq طرق Oberon إلى مجالات متخصصة.

ركزت جهود تطوير .NET اللاحقة في ETHZ على لغة جديدة تسمى Zonnon . تتضمن هذه اللغة ميزات Oberon وتستعيد بعضًا من Pascal (الأنواع المعدودة، الإدخال والإخراج المدمج) ولكنها تحتوي على بعض الاختلافات النحوية. تتضمن الميزات الأخرى دعم الكائنات النشطة، وزيادة تحميل المشغل، ومعالجة الاستثناءات.

Oberon-V (الذي كان يسمى في الأصل Seneca، نسبة إلى Seneca the Younger ) هو سليل Oberon مصمم للتطبيقات العددية على أجهزة الكمبيوتر العملاقة ، وخاصةً البنيات المتجهة أو المنسقة . وهو يتضمن منشئي المصفوفات وبيانًا ALL. [20]

انظر أيضا

موارد

عام

  • الموقع الرسمي (أحدث نسخة متوفرة في archive org) في ETH-Zürich
  • صفحة أوبيرون لنيكلاوس ويرث في ETH-Zürich
  • صفحة أوبيرون في SSW، لينز
  • أوبيرون: لغة البرمجة في أولم
  • مشروع أوبيرون، تصميم نظام تشغيل ومترجم ، كتاب بصيغة PDF من تأليف نيكلاوس ويرث وجورج جوتكنيشت، طبعة 2005
  • علم الأنساب للغة أوبيرون
  • نظام تطوير Astrobe ARM Oberon-07
  • نظام Oberon V4 لـ HP OpenVMS Alpha مع عنونة 64 بت متوافقة مع التعليمات البرمجية المصدرية
  • مُجمِّع Oberon-2 ذو 64 بت لنظام OpenVMS Alpha
  • مُجمِّع Oxford Oberon-2 ودليل المستخدم الخاص به
  • بيئة تطوير متكاملة مجانية لبرنامج Oberon-07 بيئة تطوير متكاملة مجانية لبرنامج Oberon-07 لنظامي التشغيل Windows وMacintosh وLinux مع تلوين بناء الجملة والتنقل الدلالي ومصحح أخطاء الكود المصدر
  • مقال أوبيرون بقلم جوزيف تمبل في عدد يناير 1994 من مجلة دكتور دوبس

تطور أوبيرون

  • Modula-2 وOberon Wirth (2005)
  • لغة البرمجة أوبيرون ويرث (1988/90)
  • لغة البرمجة Oberon (Oberon-7، Oberon المنقحة) Wirth، (تقرير اللغة الأكثر حداثة لعام 2016)
  • الاختلافات بين Oberon-07 و Oberon Wirth (2011)
  • لغة البرمجة Oberon-2 H. Mössenböck, N. Wirth، معهد أنظمة الكمبيوتر، ETH زيورخ، يناير 1992
  • الاختلافات بين أوبيرون وأوبيرون-2 موسينبوك وويرث (1991)
  • ما الجديد في Component Pascal (التغييرات من Oberon-2 إلى CP)، Pfister (2001)

مراجع

  1. ^ Wirth, Niklaus (1987). من Modula إلى Oberon ولغة البرمجة Oberon (تقرير). ETH Technical Reports D-INFK. المجلد. الفرقة 82. Wiley. doi :10.3929/ethz-a-005363226.
  2. ^ Wirth, Niklaus (يوليو 1988). "لغة البرمجة Oberon". البرمجيات: الممارسة والخبرة . 18 (7): 661–670. doi :10.1002/spe.4380180707.
  3. ^ Wirth, Niklaus (يوليو 1988). "From Modula to Oberon". Software: Practice and Experience . 18 (7): 671–690. doi :10.1002/spe.4380180706. S2CID  13092279.
  4. ^ Wirth, Niklaus (أبريل 1988). "امتدادات النوع". معاملات ACM للغات البرمجة . 10 (2): 204–214. doi : 10.1145/42190.46167 . S2CID  15829497.
  5. ^ Pountain, D. March 1991. "Modula's Children, Part II: Oberon". Byte . المجلد 16، العدد 3. ص 135-142.{{cite magazine}}:CS1 maint: أسماء رقمية: قائمة المؤلفين ( الرابط )
  6. ^ ويرث، نيكلاوس ؛ جوتكنيشت، يورغ (1987–2021). “مشروع أوبيرون” (PDF) .
  7. ^ Wirth, Niklaus. "Oberon Change Log". ETH Zurich . تم الاسترجاع في 16 يناير 2021 .
  8. ^ موسنبوك ، هانسبيتر. "إنشاء المترجم: فن نيكلاوس ويرث" (PDF) . جامعة يوهانس كيبلر.
  9. ^ ويرث، نيكلاوس ؛ جوتكنيشت، يورغ (1987–2021). "مشروع أوبيرون".
  10. ^ Spivey (8 أبريل 2019). "مترجم Oxford Oberon-2" . تم الاسترجاع في 17 يناير 2021 .
  11. ^ دي سي براون (16 يونيو 2020). “مترجم Vishap Oberon”. جيثب . تم الاسترجاع في 17 يناير 2021 .
  12. ^ jtempl (2 يناير 2020). "Ofront". GitHub . تم الاسترجاع في 17 يناير 2021 .
  13. ^ Wirth, Niklaus (3 May 2016). لغة البرمجة Oberon-07 (PDF) . المعهد الفيدرالي السويسري للتكنولوجيا في زيورخ، قسم علوم الكمبيوتر (تقرير) . تم استرجاعه في 17 يناير 2021 .
  14. ^ فريدريش، فيليكس ؛ جوتكنيشت، يورج (2006). "أنواع الكائنات المنظمة على هيئة مصفوفات للبرمجة الرياضية". في لايتفوت، ديفيد إي.؛ سزيبرسكي، كليمنس (المحرران). لغات البرمجة المعيارية . مذكرات محاضرات في علوم الكمبيوتر. المجلد 4228. سبرينغر، برلين هايدلبرغ. ص 195-210. doi :10.1007/11860990_13. ISBN 978-3-540-40927-4. S2CID  34210781.
  15. ^ "اقتراح لسياقات الوحدة" (PDF) .
  16. ^ مولر، بيتر يوهانس (2002). تصميم نظام الكائن النشط وتنفيذ المعالجات المتعددة (PDF) (دكتوراه). المعهد الفيدرالي السويسري للتكنولوجيا، زيورخ ( ETH Zurich ).
  17. ^ فروليش، بيتر إتش؛ فرانز، مايكل. حول بعض الخصائص الأساسية للغات البرمجة الموجهة للمكونات (PDF) (تقرير). جامعة كاليفورنيا، إيرفين . تم الاسترجاع في 18 يناير 2021 .
  18. ^ فروليش، بيتر إتش؛ جال، أندرياس؛ فرانز، مايكل (أبريل 2005). "دعم تكوين البرمجيات على مستوى لغة البرمجة". علم برمجة الكمبيوتر . 56 (1-2). إلسفير بي في: 41-57. doi : 10.1016/j.scico.2004.11.004 .تم الاسترجاع بتاريخ 18 يناير 2021.
  19. ^ فرانز، مايكل؛ فروليش، بيتر هـ؛ كيستلر، توماس (20 نوفمبر 1999). "نحو دعم لغوي للبرمجة في الوقت الحقيقي الموجهة للمكونات". الإجراءات: ورشة العمل الدولية الخامسة حول الأنظمة المعتمدة في الوقت الحقيقي الموجهة للكائنات . معهد مهندسي الكهرباء والإلكترونيات (IEEE). ص 125-129. doi :10.1109/WORDSF.1999.842343. ISBN 0-7695-0616-X. S2CID  6891092.تم الاسترجاع بتاريخ 21 يناير 2021.
  20. ^ Griesemer, Robert (1993). "لغة للتطبيقات العددية على أجهزة الكمبيوتر المتجهة". وقائع مؤتمر CONPAR 90: VAPP IV، Diss Nr. 10277. ETH Zurich.
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Oberon_(لغة_برمجة)&oldid=1258945317"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate