سكوب (برنامج)

SCOOP ( برمجة الكائنات المتزامنة البسيطة ) هو نموذج تزامن مصمم للغة البرمجة Eiffel ، وقد ابتكره مبتكر ومصمم Eiffel، برتراند ماير .

تُعرّف SCOOP طريقةً لكتابة برنامج كائني التوجه دون استخدام مفهوم الخيوط أو الأقفال أو غيرها من أساليب البرمجة المتعددة التقليدية . وهذا يسمح للمترجم أو بيئة التشغيل بتحسين مستوى التزامن، بالإضافة إلى التخلص من عيوب التصميم الشائعة مثل حالات الجمود.

صُمم النموذج لأول مرة في أوائل التسعينيات ونُشر عام ١٩٩٣ في مجلة اتصالات رابطة مكائن ​​الحوسبة [ ١ ]. ووُصفت نسخة مُحدثة منه في الفصل ٣٠ من كتاب "بناء البرمجيات الموجهة للكائنات" [ ٢ ] . طوّرت شركة إيفل سوفتوير نموذجًا أوليًا عام ١٩٩٥. تُقدم مقالة لكومبتون ووالكر [ ٣ ] نظرة عامة على SCOOP وتصف تطبيقًا مبكرًا آخر. نشر نينالتوفسكي وأرسلان وماير وصفًا للنموذج عام ٢٠٠٣ [ ٤ ]. استمر العمل على SCOOP في قسم هندسة البرمجيات في المعهد الفدرالي السويسري للتكنولوجيا في زيورخ [ ٥ ] . أصبح SCOOP متاحًا كجزء أساسي من برنامج إيفل ستوديو في أوائل عام ٢٠١١ [ ٦ ] .

نظرة عامة فنية

يعمل SCOOP من خلال السماح بتعريف مراجع لكائنات معينة ككائنات منفصلة . في الكود أدناه، local_inventoryيتم تعريف كيان كنوع منفصل، وذلك بتحديد الكلمة المفتاحية للغة إيفل separateفي التعريف.

المخزون المحلي : مخزون منفصل

قد يتولى معالج SCOOP معالجة كائن منفصل يختلف عن المعالج الذي يعالج الكائن المرجعي. معالج SCOOP هو مفهوم مجرد لسلسلة تحكم مستقلة تتولى تنفيذ العمليات على كائن واحد أو أكثر. معالجات SCOOP مستقلة عن آليات التزامن الأساسية مثل سلاسل المعالجات ، ونوى المعالجات المتعددة ، وأنظمة الحوسبة الموزعة .

بالإضافة إلى مفهوم الفصل، يستغل SCOOP مبادئ التصميم التعاقدي كجزء من استراتيجية SCOOP لمزامنة الوصول إلى الموارد المشتركة المنفصلة. على سبيل المثال، قد يكون الشرط الأساسي لوصول المستهلك إلى عنصر في مثال المخزون المذكور أعلاه هو وجود هذا العنصر بالفعل. ويتم التعبير عن ذلك من خلال عقد على خاصية الفئة INVENTORYالتي تُعيد العنصر.

المنتج : المنتج -- يتطلب المنتج الحالي وجود المنتج في المخزون : يحتوي على المنتج

local_inventory.itemفي المعالجة التسلسلية التقليدية، يكون العميل الذي ينوي إجراء مكالمة مسؤولاً عن التأكد من local_inventory.has_itemتحقق الشرط المسبق قبل إجراء المكالمة. إذا تم إجراء المكالمة itemفي حالة has_itemلم يتحقق فيها الشرط المسبق، فسيتعرض المتصل لاستثناء انتهاك الشرط المسبق.

في ظل وجود SCOOP ونظرًا لاستقلالية local_inventory، فإن إجراء الفحص على has_itemقبل استدعاء itemلن يكون موثوقًا. وذلك لأن حالة local_inventoryقد تكون تغيرت نتيجة طلبات من معالجات SCOOP أخرى بين وقت إجراء الفحص ووقت itemإمكانية استدعاء .

نتيجةً لذلك، عند تفعيل SCOOP، has_itemيتحول الشرط المسبق من شرط صحة ، والذي سيؤدي إلى استثناء في حالة حدوث انتهاك، إلى شرط انتظارitem . سيؤدي شرط الانتظار إلى تأخير التنفيذ حتى has_itemيتحقق الشرط. في تطبيق Eiffel Software، إذا لم يتم تفعيل SCOOP، separateيتم تجاهل الكلمة المفتاحية ويُفترض المعالجة التسلسلية.

انظر أيضاً

مراجع

  1. برتراند ماير: البرمجة المنهجية المتزامنة الموجهة للكائنات ، في اتصالات ACM، 36، 9، سبتمبر 1993، ص 56-80، متاح أيضًا عبر الإنترنت .
  2. برتراند ماير: بناء البرمجيات الموجهة للكائنات ، الطبعة الثانية، برنتيس هول، 1997
  3. كومبتون، مايكل؛ ووكر، ريتشارد (2002). "نظام تشغيل لـ SCOOP" . مجلة تكنولوجيا الكائنات . 1 (3): 119-157 . doi : 10.5381/jot.2002.1.3.a8 .
  4. نينالتوفسكي، ب.؛ أرسلان، ف.؛ ماير، ب. (2003). "البرمجة المتزامنة الموجهة للكائنات على .NET" (ملف PDF) . وقائع IEE - البرمجيات . 150 (5): 308. doi : 10.1049/ip-sen:20030992 (غير نشط في 12 يوليو 2025).{{cite journal}}: صيانة CS1: رقم التعريف الرقمي غير نشط اعتبارًا من يوليو 2025 ( رابط )
  5. المعهد الفدرالي السويسري للتكنولوجيا في زيورخ، قسم هندسة البرمجيات: صفحة مشروع SCOOP
  6. برنامج إيفل: سكوب: التزامن لإيفل