لغات البرمجة

لغة برمجة Obliq: نظرة شاملة

لغة البرمجة Obliq هي لغة برمجة مفسرة وموجهة نحو الكائنات، تم تصميمها لتسهيل الحساب الموزع ومتعدد التخطيطات محليًا بشكل بسيط وسهل للمبرمج، مع توفير سلامة البرنامج ونظام نوع ضمني. تم كتابة المفسر بلغة Modula-3، مما يوفر لـ Obliq إمكانية الوصول الكامل إلى قدرات كائنات الشبكة في Modula-3. تم تطوير خوارزمية استدلال النوع لتجميع السجلات والأنواع الفرعية والأنواع العاودية لـ Obliq، والأهم من ذلك أنه تم إثبات أنها NP-complete، وأن أدنى تعقيد لها يكون Ο(n^3)، أو إذا تحت النمذجة الأخرى تحت شروط معينة يكون ΰ Ο(n^2)، وأن أفضل تنفيذ معروف لها يعمل في Ο(n^5). يشبه جملة Obliq لغة Modula-3 إلى حد كبير، وأكبر الفروقات تكمن في أن Obliq لا تحتاج إلى متغيرات مكتوبة بنوع محدد بوضوح (أي يمكن للمتغير أن يحمل أي نوع بيانات يسمح به فحص النوع وإذا لم يتم قبول واحد، أي سيتم رمي خطأ تنفيذ التعبير المعطى) على الرغم من أن التصريحات بالأنواع الصريحة مسموح بها وتتم تجاهلها من قبل المفسر. الأنواع الأساسية في اللغة تشمل البوليانية والأعداد الصحيحة والأعداد الحقيقية والأحرف والسلاسل النصية والمصفوفات. تدعم Obliq مجموعة عادية من الهياكل التحكم التسلسلي (الشروطية والتكرارية وأشكال معالجة الاستثناءات)، بالإضافة إلى أشكال تحكم خاصة للتوازي (مؤقتات وبيانات محرسة). بالإضافة إلى ذلك، يمكن لكائنات Obliq أن تُنسخ وتُنسخ بأمان عن بُعد بواسطة أي جهاز في كائن شبكي موزع ويمكن ذلك بطريقة شفافة. المكتبة القياسية الكبيرة لـ Obliq توفر دعمًا قويًا للعمليات الرياضية والإدخال/الإخراج والاستمرارية والتحكم في الخيط والرسومات والرسوم المتحركة. الحساب الموزع يعتمد على الكائنات: الكائنات تحمل حالة، وهي محلية لعملية معينة. نطاق الكائنات والمتغيرات الأخرى هو محض لغوي. يمكن للكائنات استدعاء أساليب الكائنات الأخرى، حتى لو كانت تلك الكائنات على جهاز آخر في الشبكة. تتألف الكائنات Obliq ببساطة من مجموعات من الحقول المسماة (مماثلة للفتحات في Self و Smalltalk)، وتدعم التوريث عن طريق التفويض (مثل Self). يشمل الاستخدامات الشائعة لـ Obliq برمجة عبر الشبكات، والرسوم المتحركة ثلاثية الأبعاد، والحساب الموزع عبر Ethernet LAN. يتم تضمين Obliq مجانًا مع توزيع DEC Modula-3، ولكن هناك نسخ أخرى مجانية متاحة في أماكن أخرى بما في ذلك التجميعات المُحضَّرة مسبقًا لأنظمة تشغيل عديدة.