لغة برمجة ECL
لغة البرمجة ونظام ECL عبارة عن لغة برمجة عالية المستوى قابلة للتوسيع وبيئة تطوير طُوّرت في جامعة هارفارد في سبعينيات القرن الماضي. يشير اسم "ECL" إلى "لغة الحاسوب القابلة للتوسيع" أو "اللغة الانتقائية". استخدمت بعض المنشورات اسم "ECL" للإشارة إلى النظام ككل، و" EL/1 " (اللغة القابلة للتوسيع) للإشارة إلى اللغة.
كانت لغة ECL نظامًا تفاعليًا تُمثَّل فيه البرامج داخل النظام؛ وكان لديها مُترجم ومُفسِّر متوافقان . كانت تتمتع ببنية نحوية شبيهة بلغة ALGOL ونظام أنواع بيانات قابل للتوسيع ، حيث تُعتبر أنواع البيانات عناصر أساسية . كانت كائنات البيانات عبارة عن قيم، وليست مراجع، وكانت اصطلاحات الاستدعاء تُتيح خيارًا بين الاستدعاء بالقيمة والاستدعاء بالمرجع لكل وسيط.
استُخدمت لغة ECL بشكل أساسي في البحث والتدريس في تصميم لغات البرمجة ، ومنهجية البرمجة (وخاصة البرمجة بالتحسين التحويلي )، وبيئات البرمجة في جامعة هارفارد، مع أنه يُقال إنها استُخدمت أيضًا في بعض الوكالات الحكومية. طُبقت لأول مرة على جهاز PDP-10 ، ثم طُبقت لاحقًا (بصيغة تفسيرية فقط) على جهاز PDP-11 باستخدام لغة BLISS -11، وتم تجميعها بشكل متقاطع على جهاز PDP-10.
الإجراءات وفئات الربط
يمكن تعريف إجراء ECL لحساب القاسم المشترك الأكبر لعددين صحيحين وفقًا لخوارزمية إقليدس على النحو التالي:
القاسم المشترك الأكبر <-EXPR ( m : INT BYVAL , n : INT BYVAL ; INT )يبدأDECL r : INT ;يكررr <- rem ( m , n );r = 0 => n ;m <- n ;n <- r ;نهاية؛نهايةهذا تعيين لثابت إجراء للمتغير gcd. السطر
EXPR(m:INT BYVAL, n: INT BYVAL; INT)
يشير هذا إلى أن الإجراء يأخذ وسيطين، من النوع INT، يُسميان mو n، ويعيد نتيجة من النوع INT. (تُسمى أنواع البيانات " أوضاعًا " في لغة ECL). يشير صنف الربطBYVAL في كل تعريف وسيط إلى أن هذا الوسيط يُمرر بالقيمة . تُسمى المكونات الحسابية لبرنامج ECL " أشكالًا" . بعض الأشكال تُشبه تعابير لغات البرمجة الأخرى، والبعض الآخر يُشبه عبارات. يُنتج تنفيذ الشكل دائمًا قيمة. بنية REPEAT... ENDهي شكل حلقة تكرارية. تنفيذ البنية
r = 0 => n
r = 0عندما يُقيّم النموذج إلى قيمة معينة، TRUEيتوقف تنفيذ الحلقة عند هذه القيمة n. تصبح قيمة العبارة الأخيرة في نموذج الكتلة ( BEGIN... END) هي قيمة نموذج الكتلة. أما قيمة النموذج في تعريف الإجراء فتصبح نتيجة استدعاء الإجراء.
بالإضافة إلى فئة الربط `bind-class` BYVAL، تحتوي لغة ECL على فئات ربط `bind-class` SHAREDو` bind LIKE- class` UNEVALو` LISTEDbind-class`. SHAREDتشير فئة الربط `bind-class` إلى أنه سيتم تمرير مُعامل بالمرجع . LIKEوتتسبب فئة الربط `bind-class` في تمرير المُعامل بالمرجع إن أمكن، وبالقيمة إن لم يكن ذلك ممكنًا (على سبيل المثال، إذا كان المُعامل الفعلي قيمةً خالصة، أو متغيرًا يجب تطبيق تحويل نوع عليه). UNEVALتُحدد فئة الربط `bind-class` أنه سيتم تمرير شجرة بناء جملة مجردة للمُعامل الفعلي إلى المُعامل الرسمي؛ وهذا يوفر مرونةً استثنائية للمبرمجين لابتكار رموزهم الخاصة، مع دلالات التقييم الخاصة بهم، لبعض مُعاملات الإجراءات. LISTEDتُشبه فئة الربط `bind-class` فئة الربط `bind-class` UNEVAL، ولكنها توفر إمكانيةً مشابهةً لتلك الخاصة بالوسائط المتغيرة في لغة C : LISTEDلا يمكن أن تظهر فئة الربط إلا في المُعامل الرسمي الأخير للإجراء، ويرتبط هذا المُعامل الرسمي بقائمة من تمثيلات شجرة بناء الجملة المجردة ، واحدة لكل مُعامل فعلي متبقٍ. تحتوي لغة ECL على EVALدالة مُدمجة لتقييم شجرة بناء الجملة المجردة . بدلاً من ذلك، هناك وظائف يمكن للمبرمجين من خلالها استكشاف عقد شجرة بناء الجملة المجردة ومعالجتها وفقًا لمنطقهم الخاص.
انظر أيضاً
مراجع
PISEL = وقائع الندوة الدولية حول اللغات القابلة للتوسيع ، غرونوبل، فرنسا، 1971، نُشرت في ACM SIGPLAN Notices 6 :12، ديسمبر 1971.
- بنيامين م. بروسغول، "تطبيق لأنواع بيانات ECL"، PISEL، ص 87-95.
- توماس إي. تشيثام الابن ، وجلين إتش. هولواي، وجودي إيه. تاونلي، "تحسين البرامج عن طريق التحويل"، وقائع المؤتمر الدولي الخامس لهندسة البرمجيات ، 1981، الصفحات 430-437. ISBN 0-89791-146-6
- Glenn H. Holloway, "تكامل المترجم/المترجم في ECL"، PISEL، ص 129-134.
- تشارلز ج. برينر، "مرافق هيكل التحكم في ECL"، PISEL، ص 104-112.
- بن ويجبريت، "نظرة عامة على نظام برمجة ECL"، PISEL، ص 26-28.
- بن ويغبريت، "دراسات في لغات البرمجة القابلة للتوسيع". تقرير فني ESD-TR-70-297. جامعة هارفارد، كامبريدج، ماساتشوستس، مايو 1970.
- غلين هولواي، جودي تاونلي، جاي سبيتزن، بن ويغبريت، "دليل مبرمج ECL"، التقرير 23-74، مركز أبحاث تكنولوجيا الحوسبة، جامعة هارفارد، ديسمبر 1974.
- لاري ديننبرغ، "تنفيذ PDP-11 ECL"، التقرير الفني 29-77، مركز أبحاث تكنولوجيا الحوسبة، جامعة هارفارد، يونيو 1977.
- لغات البرمجة التعليمية
- جامعة هارفارد
- لغات برمجة ذات بنية قابلة للتوسيع
