لغة CMU Common Lisp

CMUCL هو تطبيق مجاني للغة Common Lisp ، تم تطويره في الأصل في جامعة كارنيجي ميلون .

يعمل برنامج CMUCL على معظم المنصات الشبيهة بنظام يونكس ، بما في ذلك لينكس وبي إس دي ؛ كما توجد نسخة تجريبية منه لنظام ويندوز . ويُشتق برنامج Steel Bank Common Lisp من CMUCL. أما برنامج Scieneer Common Lisp فهو نسخة تجارية مشتقة من CMUCL.

تاريخ

يعود تاريخ أقدم تطبيق لـ CMUCL إلى ما قبل لغة Common Lisp، وكان جزءًا من Spice Lisp ، حوالي عام 1980. في عام 1985، بدأ روب ماكلاكلان إعادة كتابة المُصرّف ليصبح مُصرّف بايثون، وتم نقل CMUCL إلى محطات عمل يونكس مثل IBM PC RT وMIPS وSPARC. لم تدعم الإصدارات الأولى من CMUCL معمارية x86 من إنتل بسبب نقص المسجلات. فصل CMUCL بشكل صارم بين أنواع البيانات المُوسومة والبيانات الفورية، وكان جامع البيانات المهملة يعتمد على معرفة أن نصف مسجلات وحدة المعالجة المركزية لا يمكنه استيعاب سوى الأنواع المُوسومة، والنصف الآخر لا يمكنه استيعاب سوى الأنواع غير المُوسومة. لم يترك هذا عددًا كافيًا من المسجلات لواجهة خلفية لبايثون.

بعد أن ألغت جامعة كارنيجي ميلون المشروع (لصالح تطبيق ديلان باستخدام بعض قواعد مُترجم CMUCL)، تولت مجموعة من المتطوعين مهمة الصيانة. وبحلول عام 1996، كانت هذه المجموعة تُصدر تحديثات منتظمة على بنيتها التحتية الخاصة.

في نفس الفترة تقريبًا، تم إنجاز نسخة متوافقة مع معمارية x86 من إنتل، حيث عملت أولًا على نظام FreeBSD ، ثم لاحقًا على نظام Linux . وتم حل مشكلة نقص السجلات بواسطة جامع قمامة جديد محافظ. يقبل هذا الجامع أي قيمة من أي نوع في السجلات، ويتعامل مع أي شيء قد يكون مؤشرًا على أنه مؤشر، وذلك لغرض عدم جمعه أو نقله إلى هدفه.

المترجم ووحدات تنفيذ التعليمات البرمجية الأخرى

  • يحتوي CMUCL على مترجم يستخدم بشكل أساسي لـ REPL ، ولكن يمكن استخدامه لتحميل ملفات Lisp بشكل أسرع والتي لا تحتاج إلى تجميع.
  • آلة لتفسير الشفرة البايتية المضغوطة (التي يمكن إصدارها من المترجم). نادرًا ما تُستخدم هذه الآلة الآن، ولكنها كانت شائعة في الإصدارات الأولى من CMUCL لأن أحجام الصور كانت تُقلل بشكل كبير في وقت كانت فيه سرعة التنزيل على الإنترنت منخفضة.
  • مُترجم لغة برمجة أصلية يُسمى "بايثون" (لا يُخلط بينه وبين لغة البرمجة بايثون ). إذا كُتبت شفرة المصدر بلغة Common Lisp مع تعريفات مناسبة، ونُظمت مع مراعاة السرعة، فإن مُترجم بايثون يُنتج شفرة خالية تقريبًا من الحمل الزائد مقارنةً بالشفرة المُترجمة من لغات مثل C++. بعض أوجه القصور، مثل واجهات استدعاء الدوال وعدم وجود مصفوفات خالية من المؤشرات لأنواع البيانات المُعرّفة من قِبل المستخدم، تُمليها معايير Common Lisp، ولا يزال من الضروري إيجاد حلول بديلة لها (مثل تضمين المزيد من التعليمات البرمجية واستخدام وحدات الماكرو لإنشاء بنيات تبدو كبنى مُعرّفة من قِبل المستخدم، ولكنها في الواقع تصل إلى حقول في مصفوفات مُخصصة مُسبقًا). يتميز مُترجم بايثون أيضًا باستنتاجات قوية للأنواع ، مما يُساعد المُبرمج في كتابة شفرة خالية من الحمل الزائد إما عن طريق استنتاج الأنواع تلقائيًا أو تقديم تلميحات حول فرص التحسين الضائعة.

سمات

انظر أيضاً

مراجع