سي فرونت
كان Cfront هو المترجم الأصلي للغة C++ (التي كانت تُعرف آنذاك باسم " C مع الفئات") منذ حوالي عام 1983، والذي كان يحوّل C++ إلى C؛ وقد طوّره بيارن ستروستروب في مختبرات AT&T Bell. لم يكن المعالج المسبق يفهم جميع خصائص اللغة ، وكان جزء كبير من الكود يُكتب عبر الترجمات . امتلك Cfront محللًا نحويًا كاملًا ، وقام ببناء جداول الرموز ، وشجرة لكل فئة ودالة ، إلخ. استند Cfront إلى CPre، وهو مترجم C بدأ العمل عليه عام 1979.
بما أن Cfront كُتبت بلغة C++، فقد كان تشغيلها على جهاز لا يحتوي على مُترجم/مُجمِّع C++ تحديًا. إلى جانب مصادر Cfront C++، تم توفير نسخة خاصة "مُعالَجة جزئيًا" من كود C ناتجة عن تجميع Cfront مع نفسه. كان من المفترض تجميع كود C هذا باستخدام مُترجم C الأصلي، ثم يُمكن استخدام الملف التنفيذي الناتج لتجميع مصادر Cfront C++.
انصبّ معظم جهد نقل Cfront إلى جهاز جديد على عمليات الإدخال والإخراج القياسية. كانت تدفقات C++ الخاصة بـ Cfront مرتبطة ارتباطًا وثيقًا بتدفقات الإدخال والإخراج المخزنة مؤقتًا في مكتبة C، ولكن كان التفاعل مع بقية بيئة C محدودًا. كان من الممكن نقل المُصرّف إلى معظم مشتقات System V دون تغييرات تُذكر، ولكن عادةً ما كانت أنظمة BSD تحتوي على تنوعات أكبر في مكتبات C وهياكل الإدخال والإخراج القياسية المرتبطة بها.
شكّلت Cfront أساس لغة C++ حتى عام 1990 تقريبًا، وارتبطت العديد من الحالات الشاذة في C++ بنهجها في ترجمة C++ إلى C. ولا تزال بعض آثار أسلوب ترجمة Cfront موجودة في مُجمّعات C++ الحالية؛ فقد نشأت عملية تغيير أسماء المتغيرات من Cfront، نظرًا لأن أدوات الربط البدائية نسبيًا في ذلك الوقت لم تكن تدعم معلومات النوع في الرموز، كما أن بعض نماذج إنشاء القوالب مُشتقة من جهود Cfront المبكرة. وكانت C++ (وCfront) مسؤولة بشكل مباشر عن العديد من التحسينات في أدوات الربط في أنظمة Unix وتنسيقات ملفات الكائنات ، إذ كانت أول لغة واسعة الانتشار تتطلب التحقق من النوع في وقت الربط، والرموز الضعيفة ، وغيرها من الميزات المماثلة.
تم التخلي عن Cfront 4.0 في عام 1993 بعد محاولة فاشلة لإضافة دعم الاستثناءات . [ 1 ] لقد تجاوزت لغة C++ قدراتها؛ ومع ذلك، أصبح هناك مترجم ذو نهج مماثل متاحًا لاحقًا، وهو Comeau C/C++ .
على غرار قدرة Cfront على معالجة شفرة C++ المصدرية وتحويلها إلى صيغة قابلة للترجمة بواسطة مترجمات C المتوفرة سابقًا، يقوم cppfront بمعالجة الشفرة المصدرية المكتوبة بلغة C++ الجديدة والتجريبية (الصيغة 2) وتحويلها إلى صيغة قابلة للترجمة بواسطة مترجمات C++ (الصيغة 1) المتوفرة سابقًا. [ 2 ] [ 3 ] يختلف cppfront في نطاقه، إذ لا يُجري العديد من فحوصات التحقق من صحة الشفرة، بل يعتمد على مترجم C++ لإجراء أي فحوصات تتطلب فهمًا غير محلي للشفرة، مثل التحقق من الاستخدام الصحيح للرموز . أما Cfront، فكان مترجمًا كاملًا يستهدف لغة C بدلًا من لغة التجميع .
مراجع
- ↑ سكوت مايرز ، أهم برامج لغة C++ على الإطلاق ، 2006
- ↑ "فلسفة ومبادئ لغة C++ الاحترافية" . 2022. ص 373.
- ↑ بول كريل. "مشروع Cppfront يهدف إلى تحديث لغة C++" . إنفو وورلد.
- ملحوظات
- بيارن ستروستروب. "تطوير لغة في العالم الحقيقي ومن أجله: سي++ 1991-2006" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 20 نوفمبر 2007.
- بيارن ستروستروب. "الأسئلة الشائعة لبيارن ستروستروب" .
- بيارن ستروستروب. "تصميم وتطور لغة C++" .
روابط خارجية
- إصدارات Cfront في أرشيف المصادر التاريخية للغة C++
- cfront v3 ، تقرير cfront للإصدار الرابع من خطة 9 من مختبرات بيل
- Cfront 3.0.3 ، "مترجم AT&T/Bell Labs من لغة C++ إلى لغة C من عام 1994، تم تعديله ليعمل على الأجهزة الحديثة"
- مترجمات لغة C++
- أدوات برمجة يونكس
