أوكام (لغة برمجة)
أوكام هي لغة برمجة متزامنة تعتمد على جبر العمليات المتسلسلة المتصلة (CSP)، [ 1 ] وتشترك معه في العديد من خصائصها. سُميت نسبةً إلى الفيلسوف ويليام الأوكام ، الذي سُميت قاعدة أوكام باسمه.
لغة أوكام هي لغة برمجة إجرائية (مثل باسكال ). طُوّرت بواسطة ديفيد ماي وآخرين في شركة إنموس (العلامة التجارية INMOS)، بإشراف توني هوار ، كلغة برمجة أصلية لمعالجاتهم الدقيقة ترانسبوتر ، ولكن تتوفر تطبيقات لمنصات أخرى. الإصدار الأكثر شهرة هو أوكام 2؛ وقد كتب دليل برمجته ستيفن إريكسون-زينيث وآخرون في إنموس .
ملخص
في الأمثلة التالية، يُعدّ التنسيق والمسافة البادئة عنصرين أساسيين لتحليل الكود: تنتهي التعبيرات بنهاية السطر، ويجب أن تكون قوائم التعبيرات على نفس مستوى المسافة البادئة. هذه الخاصية، المسماة قاعدة التجاوز ، موجودة أيضًا في لغات أخرى مثل هاسكل وبايثون .
تتم عملية التواصل بين العمليات عبر قنوات مُسماة . تُخرج إحدى العمليات البيانات إلى قناة عبر قناة معينة، !بينما تُدخل عملية أخرى البيانات باستخدام قناة أخرى ?. لا يمكن أن تتم عملية الإدخال أو الإخراج حتى يكون الطرف الآخر جاهزًا لاستقبال البيانات أو إرسالها. (في حالة عدم المتابعة ، يُقال غالبًا أن العملية تتوقف عند القناة. مع ذلك، لن يقوم البرنامج بالانتظار أو الاستقصاء؛ لذا فإن مصطلحات مثل " انتظار" أو "تعليق" أو "استسلام" قد تُعبّر أيضًا عن هذا السلوك؛ وذلك في سياق أنه لن يمنع العمليات المستقلة الأخرى من العمل). أمثلة (حيث c متغير):
لوحة المفاتيح؟ ج
شاشة ! ج
SEQيُقدّم (التسلسلي) قائمةً من التعبيرات التي تُقيّم بالتتابع. وهذا ليس ضمنيًا كما هو الحال في معظم لغات البرمجة الأخرى. مثال:
التسلسل x := x + 1 y := x * x
PAR(متوازي) يبدأ قائمة من التعبيرات التي يمكن تقييمها بشكل متزامن. مثال:
المستوى p() q()
ALT(البديل) يُحدد قائمة بالأوامر المحمية . تتكون هذه الأوامر من شرط منطقي وتعبير إدخال، وكلاهما اختياري. يُعتبر كل أمر محمي يكون شرطه صحيحًا وقناة الإدخال جاهزة ناجحًا. يتم اختيار أحد البدائل الناجحة للتنفيذ. مثال:
ALT count1 < 100 & c1 ? data التسلسل count1 := count1 + 1 تم دمج البيانات! count2 < 100 & c2 ? data التسلسل count2 := count2 + 1 تم دمج البيانات! الحالة؟ طلب التسلسل اخرج! العد 1 اخرج! العد 2
سيقوم هذا بقراءة البيانات من القناتين c1 أو c2 (أيهما جاهزة) وتمريرها إلى قناة مدمجة. إذا وصل عدد مرات ظهور القيمة (countN) إلى 100، فسيتم تعطيل عمليات القراءة من القناة المقابلة. يتم الرد على أي طلب على قناة الحالة بإخراج عدد مرات الظهور إلى القناة المطلوبة out.
تنقيحات لغوية

أوكام 1
كانت لغة أوكام 1 [ 2 ] (التي صدرت عام 1983) نسخة أولية من اللغة، استعارت من عمل ديفيد ماي على لغة EPL ولغة CSP لتوني هوار. وقد دعمت هذه النسخة نوع البيانات VAR فقط ، وهو نوع صحيح يتوافق مع طول الكلمة الأصلي للبنية المستهدفة، بالإضافة إلى المصفوفات أحادية البعد.
أوكام 2
occam 2 [ 3 ] هو امتداد أنتجته شركة Inmos Ltd في عام 1987 يضيف دعم الفاصلة العائمة والوظائف والمصفوفات متعددة الأبعاد وأنواع بيانات أخرى مثل الأحجام المختلفة للأعداد الصحيحة (INT16، INT32) والبايتات.
مع هذا التعديل، أصبحت لغة occam قادرة على التعبير عن البرامج المفيدة، في حين أن occam 1 كانت أكثر ملاءمة لفحص الخوارزميات واستكشاف اللغة الجديدة (ومع ذلك، تمت كتابة مترجم occam 1 بلغة occam 1، [ 4 ] لذلك يوجد دليل على إمكانية كتابة برامج مفيدة ذات حجم معقول بلغة occam 1، على الرغم من حدودها).
أوكام 2.1
كانت لغة أوكام 2.1 [ 1 ] آخر إصدارات سلسلة تطويرات لغة أوكام التي ساهمت بها شركة إنموس. تم تعريفها عام 1994، وتأثرت باقتراح سابق للغة أوكام 3 (المعروفة أيضًا باسم "أوكام 91" خلال مراحل تطويرها الأولى) والتي ابتكرها جيف باريت في إنموس في أوائل التسعينيات. تم توزيع دليل مرجعي منقح يصف أوكام 3 لإبداء ملاحظات المجتمع [ 5 ]، ولكن لم يتم تنفيذ اللغة بالكامل في أي مترجم برمجي.
أضافت نسخة occam 2.1 العديد من الميزات الجديدة إلى occam 2، بما في ذلك:
- أنواع البيانات المسماة (نوع البيانات س هو ص)
- السجلات المسماة
- تسجيلات مليئة
- تخفيف بعض قواعد تحويل الأنواع
- مشغلون جدد (مثل BYTESIN)
- إعادة كتابة أنواع القنوات ومصفوفات القنوات
- إمكانية إرجاع مصفوفة ذات طول ثابت من الدالة.
للاطلاع على قائمة كاملة بالتغييرات، راجع الملحق P من دليل Inmos occam 2.1 المرجعي .
أوكام-π
يُعدّ occam-π [ 6 ] الاسم الشائع لنسخة occam المُطبّقة في الإصدارات اللاحقة من مُصرّف Kent Retargetable occam ( KRoC ). وتُشيرإضافة الرمز π (باي) إلى اسم occam إلى تضمين KRoC occam لعدة أفكار مُستوحاة من حساب π . ويحتوي هذا المُصرّف على العديد من الإضافات الهامة لمُصرّف occam 2.1، على سبيل المثال:
انظر أيضاً
مراجع
- 1 2 أوكام 2.1 دليل مرجعي (PDF) . شركة SGS-Thomson Microelectronics المحدودة. 1995-05-12.وثيقة إنموس 72 occ 45 03
- ↑ دليل برمجة أوكام . برنتيس هول. 1984. ISBN 0-13-629296-8.
- ↑ إريكسون-زينيث، ستيفن (1988). دليل مرجعي لـ occam 2. برنتيس هول. ISBN 0-13-629312-3.
- ↑ كوك، باري م؛ بيل، آر إم إيه (11 أبريل 1999). "أوكام على مصفوفات البوابات القابلة للبرمجة الميدانية" . في: كوك، باري م. (محرر). البنى واللغات والتقنيات للأنظمة المتزامنة . الاجتماع الفني الثاني والعشرون لمجموعة مستخدمي أوكام وترانسبوتر العالمية. كيلي، المملكة المتحدة: دار نشر IOS. ص 219. ISBN 90-5199-480-Xتم الاطلاع عليه بتاريخ 28-11-2016 .
- ↑ باريت، جيف؛ إريكسون-زينيث، ستيفن (31-03-1992). "دليل مرجعي لأوكام 3" (ملف PDF) . إنموس . تم الاطلاع عليه بتاريخ 24-03-2008 .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ بارنز، فريد؛ ويلش، بيتر (14 يناير 2006). "أوكام-باي: مزج أفضل ما في نظرية حل المسائل المعقدة وحساب باي" . cs.kent.ac.uk. تاريخ الاسترجاع: 24 نوفمبر 2006 .
للمزيد من القراءة
- هندسة العمليات المتصلة 2007 – WoTUG-30 . دار نشر IOS. 2007. 513 صفحة. ISBN 978-1-58603-767-3.
- هندسة العمليات المتصلة 2006 – WoTUG-29 . دار نشر IOS. 2006. 391 صفحة. ISBN 978-1-58603-671-3.
- هندسة العمليات المتصلة 2005 – WoTUG-28 . دار نشر IOS. 2005. 405 صفحة. ISBN 978-1-58603-561-7.
- كيريدج، جون، محرر. (1993). ترانسبوتر وبحوث أوكام: اتجاهات جديدة . دار نشر IOS. 253 صفحة . ISBN 0-8247-0711-7.
- روسكو، أندرو ويليام ؛ هوار، تشارلز أنتوني ريتشارد (1986). قوانين برمجة أوكام . مجموعة أبحاث البرمجة، جامعة أكسفورد.
- إيجوروف، أ.، الجامعة التقنية – صوفيا، (1983–2011) كتب في هندسة الكمبيوتر
روابط خارجية
- معلومات، ومُجمّعون، ومحررون، وأدوات مساعدة في صفحات WoTUG occam
- المترجمات والوثائق والأمثلة والمشاريع والأدوات المساعدة في أرشيف الحوسبة المتوازية على الإنترنت (لم يعد يتم تحديثه)
- كتب أوكام على موقع Transputer.net
- لغة أوكام-باي .
- مترجم Tock occam – (مترجم من occam إلى C من Kent) مترجم قائم على Haskell لـ occam واللغات ذات الصلة.
- لغات البرمجة المتزامنة
- لغات البرمجة الإجرائية
- لغات البرمجة التي تم إنشاؤها عام 1983
