CGOL
CGOL [ 1 ] [ 2 ] (تُنطق "سي غول" ) هي صيغة بديلة تتميز بتدوين جبري قابل للتوسيع للغة برمجة ليسب . صُممت في الأصل للغة ماك ليسب بواسطة فوغان برات ، ثم نُقلت لاحقًا إلى كومون ليسب . [ 3 ]
تعتمد لغة CGOL على صيغة وسطية تقليدية ، على غرار لغة ALGOL ، بدلاً من صيغة البادئة التقليدية للغة Lisp ذات الأقواس الموحدة . ويستند محلل CGOL إلى تصميم برات لتحليل أسبقية المعاملات من أعلى إلى أسفل ، [ 4 ] [ 5 ] والذي يُشار إليه أحيانًا بشكل غير رسمي باسم " محلل برات ".
من الناحية الدلالية، فإن CGOL هي في الأساس مجرد Common Lisp، مع بعض دعم القراءة والطابعة الإضافي.
يمكن اعتبار CGOL تجسيدًا أكثر نجاحًا لبعض الأفكار الأساسية التي بُني عليها مشروع LISP 2 السابق . كان LISP 2 خليفةً لـ LISP 1.5 ، وكان يهدف إلى توفير بنية ALGOL. تم التخلي عن LISP 2، بينما يُمكن استخدام قاعدة بيانات CGOL اليوم. والسبب في ذلك هو أن CGOL، على عكس LISP 2، مُنفذة كدوال ووحدات ماكرو قابلة للنقل مكتوبة بلغة Lisp، ولا تتطلب أي تعديلات على تطبيق Lisp الأساسي.
بناء الجملة
تتوفر رموز خاصة للعديد من عمليات لغة Common Lisp الشائعة الاستخدام. على سبيل المثال، يمكن كتابة روتين ضرب المصفوفات على النحو التالي:
لكل i من 1 إلى n، لكل k من 1 إلى n، قم بما يلي: ( ac : = 0 ؛ لكل j من 1 إلى n، قم بما يلي : ac := ac + a ( i , j ) * b ( j , k ) ؛ c ( i , k ) := ac )تحتوي لغة CGOL على عملية infix .(في إشارة إلى دالة Common Lisp cons) وعملية infix @(في إشارة إلى دالة Common Lisp append):
أ.(ب@ج) = (أب)@ج
يتوافق المثال السابق مع هذا النص في لغة Common Lisp الأصلية:
( يساوي ( يضم أ ( يضم ب ج )) ( يضم ( يضم أ ب ) ج ))يستخدم CGOL ofلقراءة وتعيين الخصائص:
والد س : = أخ قريب صيتوافق المثال السابق مع هذا النص في لغة Common Lisp الأصلية:
( PUTPROP X ( GET ( GET Y RELATIVE ) 'BROTHER ) 'FATHER )يوضح هذا كيف تُشير لغة CGOL إلى دالة ذات وسيطين:
x,y; 1/sqrt(x**2 + y**2)
يتوافق المثال السابق مع هذا النص في لغة Common Lisp الأصلية:
( لامدا ( س ص ) ( خارج القسمة 1 ( جذر ( زائد ( مضاعف س 2 ) ( مضاعف ص 2 )))))تعتمد بنية لغة CGOL على البيانات، وبالتالي فهي قابلة للتعديل والتوسيع.
الحالة وشفرة المصدر
من المعروف أن CGOL يعمل على لغة Armed Bear Common Lisp . [ 6 ]
يتوفر كود المصدر الخاص بـ CGOL وبعض الملفات النصية التي تحتوي على مناقشات عنه كبرامج مجانية من مستودع الذكاء الاصطناعي بجامعة كارنيجي ميلون . [ 3 ]
مراجع
- ↑ برات، فوغان ر. CGOL: تمثيل خارجي بديل لمستخدمي لغة ليسب. ورقة عمل الذكاء الاصطناعي 121. مختبر الذكاء الاصطناعي بمعهد ماساتشوستس للتكنولوجيا (كامبريدج، ماساتشوستس). 1976.
- ↑ برات، فوغان ر. CGOL - تدوين جبري لمستخدمي MACLISP. 27 يناير 1977.
- 1 2 CGOL: لغة شبيهة بلغة Algol يتم تجميعها إلى Common Lisp
- ↑ برات، فوغان ر. أسبقية العمليات من أعلى إلى أسفل. وقائع ندوة ACM حول مبادئ لغات البرمجة . 1973. ص 41-51.
- ↑ فان دي فانتر، مايكل ل. صياغة رسمية وإثبات صحة نظام لغة CGOL (رسالة ماجستير). تقرير فني لمختبر علوم الحاسوب في معهد ماساتشوستس للتكنولوجيا MIT-LCS-TR-147 (كامبريدج، ماساتشوستس). 1975.
- ↑ مدونة CGOL حول تطوير تطبيق لغة Common Lisp باستخدام لغة Armed Bear .
- عائلة لغات البرمجة ليسب
