بروتيل
بروتيل اختصار لـ "لغة فرض النوع الموجهة نحو الإجراءات". بروتيل هي لغة برمجة صُممت عام 1975 من قِبل شركة نورتل نتووركس ، وتُستخدم في أنظمة تحويل الاتصالات مثل DMS-100 . [ 1 ] [ 2 ] بروتيل-2 هي النسخة الموجهة نحو الكائنات من بروتيل. [ 3 ] [ 4 ]
صُممت لغة PROTEL لتلبية احتياجات الاتصالات الهاتفية الرقمية، وهي أساس سلسلة أنظمة التحويل DMS-100 . PROTEL لغة برمجة قوية الكتابة، ذات بنية كتلية، تعتمد بشكل كبير على لغتي PASCAL و ALGOL 68، وتتميز بأسلوب إسناد المتغيرات من اليسار إلى اليمين، ومصفوفات متغيرة الحجم، وهياكل قابلة للتوسيع. وقد قام مصممو PROTEL بتوسيع لغة PASCAL بشكل ملحوظ بإضافة خاصية الترجمة الخارجية وتوسيع هياكل البيانات المتاحة في اللغة. [ 3 ]
يتكامل مُترجم لغة PROTEL بشكل وثيق مع نظام التشغيل (SOS) والتطبيق (CALLP) وبيئة التطوير (PLS) والمعالج (NT40) في الأصل. جميع مكونات PLS وSOS وCALLP والمترجم نفسه مكتوبة بلغة PROTEL. لذا، لا بد لأي وصف للغة PROTEL أن يتضمن بعض جوانب المكونات الأخرى.
يتميز PROTEL بفرض أنواع صارمة للغاية، لكن الترابط الوثيق بين المكونات يخلق فرصًا لتجاوز بعض عمليات التحقق من الأنواع للمبرمجين المهرة باستخدام ميزات المترجم الداخلية مباشرة.
يعتبر برنامج PROTEL "مليئًا بالكلمات"، حيث يحتوي على عدد كبير من الكلمات المحجوزة مع بعض العبارات التي تبدو وكأنها باللغة الإنجليزية.
شفرة مصدر PROTEL غير حساسة لحالة الأحرف، ولكن وفقًا للعرف، يتم استخدام الأحرف الكبيرة للكلمات المحجوزة.
المتغيرات والتخصيص
يتم تعريف معظم المتغيرات العامة وجميع المتغيرات المحلية باستخدام الكلمة المحجوزة DECL .
- DECL myvar INT;
يمكن تهيئة المتغيرات باستخدام الكلمة المفتاحية INIT.
- DECL myvar INT INIT 42;
تستخدم الثوابت الكلمة المفتاحية IS، بينما يستخدم النظام الست عشري #.
- DECL myconst INT IS #F00D;
يمكن للمتغيرات العامة استخدام تعريفات PROTECTED أو PRIVATE لتحديد البيانات المحمية ضد الكتابة أو البيانات المحلية الخاصة بالخيوط على التوالي. تتطلب الكتابة إلى البيانات المحمية استخدام دوال أساسية مدمجة تُعدّل البيانات المحمية بطريقة آمنة. تبقى البيانات المحمية محفوظة بعد جميع عمليات إعادة التشغيل باستثناء إعادة تحميل صورة النظام .
- محمي myprotdata INT؛
- write_protected_store( myprotdata, value );
ملاحظة: وسيطات WRITE_PROTECTED_STORE لا تعتمد على نوع البيانات طالما أن أنواع الوسيطين متطابقة.
يوفر PRIVATE نسخة خاصة من البيانات لكل عملية تستخدمها. لا توجد وظيفة COW، حيث يتم تخصيص نسخة خاصة لكل عملية، ويمكن تهيئتها اختيارياً عند إنشائها.
- خاص myprivatedata عدد صحيح؛
ملاحظة: المتغيرات المحلية المعرفة باستخدام DECL هي متغيرات خاصة بطبيعتها.
غازينتا
يُستخدم مصطلح "جازينتا" بشكل عام للإشارة إلى عامل الإسناد "->". ويُشتق اسمه من عبارة "يدخل في"، أي أن التعبير "جازينتا" (يدخل في) متغير. تُقيّم التعبيرات بترتيب صارم من اليسار إلى اليمين دون أي أسبقية للعوامل. ويُعدّ عدم وجود أسبقية للعوامل إرثًا من معالج NT40 الذي استخدم وحدة حساب ومنطق (ALU) قائمة على المكدس باستخدام منطق RPN. وتُستخدم الأقواس لتحديد أولويات التعبيرات الفرعية.
- expression -> myvar;
نصائح
يُستخدم عامل المؤشر @ ويُوضع بعد المؤشر ptr. المؤشر الفارغ (NULL) هو قيمة مُحددة مُسبقًا تضمن عدم إشارته إلى عنوان مُعين. فهو ليس 0 ولا -1 ولا أيًا من أنماط الذاكرة غير المُهيأة المُحددة مُسبقًا (#FDFD). بعبارة أخرى، المؤشر ليس فارغًا افتراضيًا، بل يجب تحديد قيمته في الكود. لا يدعم البرنامج عمليات حسابية على المؤشرات.
- DECL myptr PTR TO INT INIT NULL;
- DECL mydata INT;
- myptr@ -> mydata;
ملاحظة: سيؤدي إلغاء مرجعية مؤشر فارغ إلى حدوث خطأ في الوصول إلى البيانات.
الواصفات
الواصف 'DESC' هو بنية مُعرَّفة من قِبل المُصرِّف، تحتوي على مؤشر إلى مصفوفة وحدها الأعلى. يتم فهرسة المصفوفة المُوصَّفة باستخدام صيغة المصفوفة البسيطة 'MY_DESC[I]'، ويمكن استخدام عامل التشغيل UPB للوصول إلى الحد الأعلى 'UPB MYDESC'. يوجد أيضًا عامل التشغيل TDSIZE كإرث من تطبيق الواصفات في نظام NT40: TDSIZE = UPB+1. تُجري الواصفات فحصًا تلقائيًا لحدود المصفوفات المُخصَّصة ديناميكيًا أثناء التشغيل. سيؤدي فهرسة واصف خارج النطاق أو فهرسة واصف فارغ إلى حدوث خطأ في فحص نطاق الواصف. يُستخدم UPB عادةً بواسطة برامج التطبيقات للتعامل مع الفهرسة خارج النطاق بشكل أكثر سلاسة.
- DECL my_int_array DESC OF INT INIT NULL;
ملاحظة: يمكن استخدام NULL للمؤشرات والوصفات.
تستخدم السلاسل النصية الواصفات بشكل مكثف. تتميز السلاسل النصية بطول محدد ولا تحتوي على حرف إنهاء فارغ.
- DECL foo DESC OF CHAR IS "my string named foo";
مكعبات
يتم تحديد نطاق الكتلة بواسطة عبارات BLOCK و ENDBLOCK، والتي تشبه BEGIN END في لغة باسكال أو { } في لغة سي. يمكن تسمية الكتل اختياريًا لتحسين فحص المترجم والوظائف.
- [label:] كتلة
- بعض التعليمات البرمجية
- خروج [التسمية]؛
- المزيد من التعليمات البرمجية
- نهاية الكتلة [التسمية]
إجراءات
لا يتم التمييز بين الإجراءات والوظائف إلا من خلال وجود عبارة RETURNS وضرورة تضمين عبارة RETURN. ويمكن إدراج عبارة RETURN في أي مكان ضمن الوظيفة أو الإجراء.
تصريح
- PROC myprocname( argument list ) IS FORWARD;
- PROC myfuncname( argument list ) RETURNS type IS FORWARD;
تطبيق
- PROC myfuncname( argument list ) RETURNS type IS
- حاجز
- ...شفرة...
- أرجع قيمة ما.
- نهاية الكتلة
الهياكل
الجدول (TABLE) هو بنية المصفوفة الأساسية. يُستخدم الجدول فقط للمصفوفات التي يكون حجمها معروفًا وقت الترجمة. تُعدّ الواصفات الطريقة المُفضّلة للإشارة إلى المصفوفات. سيؤدي فهرسة جدول خارج النطاق إلى حدوث خطأ في فحص نطاق الجدول. كما تنطبق عوامل التشغيل UPB وTDSIZE على الجداول.
النقابات
تُعدّ الطبقة المتراكبة (OVERLAY) بنية الاتحاد الأساسية. ويتم تعريفها واستخدامها بطريقة مشابهة للغات المنحدرة من لغة باسكال.
المناطق
المناطق عبارة عن كتل ذاكرة يمكن تحويلها إلى جداول وطبقات. يتم تعريفها بالبايت، وعادةً ما تكون كبيرة بما يكفي للسماح بالتوسع المستقبلي. ويعود ذلك إلى الرغبة في ترقية برنامج إدارة المستندات أثناء التشغيل دون الحاجة إلى إعادة تشغيله. تسمح الطبيعة المعيارية لـ PROTEL باستبدال أجزاء صغيرة نسبيًا من التعليمات البرمجية في عملية التحميل؛ فإذا تم التخطيط للمناطق بذكاء، فلن يؤثر ذلك على موضع الوحدات في الذاكرة، وبالتالي تجنب إعادة التشغيل.
الأنظمة الفرعية والوحدات والأقسام
القسم هو ملف نصي يحتوي على شفرة المصدر وتوجيهات لإدارة أنواع الأقسام المختلفة ومواقعها في التسلسل الهرمي للوحدات. القسم هو أصغر وحدة تجميع. الوحدة هي أصغر وحدة ربط وتحميل، وتحتوي على قسم واحد أو أكثر. النظام الفرعي هو أصغر وحدة تغليف، ويحتوي على وحدة واحدة أو أكثر.
التحكم في التدفق
يوجد شكلان لعبارة CASE (switch). يستخدم CASE جدولًا وسيطًا، بينما يستخدم SELECT منطق if-then-else التسلسلي. الحالات في CASE حصرية، ولا تنتقل إلى الحالات الأخرى كما في لغة C.
مراجع
- ↑ كريشنا ، سانديب ساهاي، برايان نيكلسون، إس. (2003). الاستعانة بمصادر خارجية عالمية في مجال تكنولوجيا المعلومات : تطوير البرمجيات عبر الحدود . كامبريدج: مطبعة جامعة كامبريدج. ص 7. ISBN 978-0521816045.
{{cite book}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - ↑ تيليسيس (3)، 1989
{{citation}}: مفقود أو فارغ|title=( مساعدة ) - 1 2 "تجربة مع لغة برمجة نمطية ذات كتابة محددة: بروتيل" ، وقائع المؤتمر الدولي الخامس لهندسة البرمجيات ICSE '81
- ↑ ديني، ب.؛ بوتابا، ر.؛ لوغريبو، ل.، محرران. (1997). تفاعلات الميزات في شبكات الاتصالات السلكية واللاسلكية IV . أمستردام: دار نشر IOS. ص 23. ISBN 978-9051993479.
- لغات البرمجة الإجرائية
- نورتل
- لغات البرمجة التي تم ابتكارها في القرن العشرين
