C++ C-plus-plus-programing:
سي++ :
(تنطق: سي بلس بلس) (بالإنجليزية: ++C) هي لغة برمجة كائنية، متعددة أنماط البرمجة، مصرفة، سكونية الأنماط. وتضم العديد من ميزات لغات البرمجة عالية المستوى ومنخفضة المستوى. بدأ تطوير هذه اللغة كامتداد للغة C تحت اسم (C مع الصفوف) من قبل بيارن ستروستروب في مختبرات بل عام 1979 وتم إضافة العديد من الميزات الأخرى لاحقاً وتغير الاسم عام 1983 ليصبح ++C من باب الدعابة عبر استخدام معامل الزيادة لجانب اسم لغة C تأكيداً على أنها "التالي للغة C".
تعتبر ++C إحدى اللغات الأكثر شيوعاً وقد استخدمت على نطاق واسع في بناء أنظمة التشغيل والتعامل مع البنية الصلبة للحاسوب ابتداءً من الأنظمة البرمجية وبرامج المستخدم، مروراً بمشغلات الأجهزة والأنظمة المضمنة وانتهاءً بالمخدمات عالية الأداء وبرامج التسلية كالألعاب الفيديوية نظراً لقدرة تصريفها إلى كود لغة تجميع شديد الفعالية . أحد أكثر استخدامات ++C إثارةً للإعجاب حسب رأي ستروستروب هو استخدام ++C في كتابة قسم كبير من أنظمة القيادة الأوتوماتيكية للعربات التي تجولت على سطح المريخ (مارس روفر) .
يوجد العديد من المصرفات التجارية والمفتوحة المصدر لـ++C، من هذه المصرفات مشروع جنو، مصرفات إنتل، مصرفات مايكروسوفت، مصرفات استديو أوراكل سولاريس، مصرفات ديجيتال مارس، ومصرفات إيمباركاديرو تكنولوجيز. لقد أثرت لغة ++C بالعديد من لغات البرمجة الشائعة مثل #C وجافا. في حين تستخدم لغات أخرى كلغة Objective-C نحواً شديد الاختلاف ومقاربة مختلفة في إضافة الصفوف إلى C.
بدأت ++C كتحسين للغة C، أولاً عبر إضافة الصفوف ومن ثم التوابع الظاهرية وتحميل المعاملات الحسابية والوراثة المتعددة والقوالب ومعالجة الاستئناءات بالإضافة إلى ميزات الأخرى. بعد سنوات من التطوير تم تصديق ++C عام 1998 كمعيار آيزو ذو الاسم ISO/IEC 14882:1998. وفي عام 2003 تم تعديل المعيار وفقاً لوثيقة التصحيح التقنية ISO/IEC 14882:2003. يتضمن المعيار الحالي ISO/IEC 14882:2011 مجموعة من الميزات التي تم الاتفاق عليها ونشرها كمعيار جديد من المنظمة الدولية للمعايير في أيلول 2011 والذي عُرف سابقاً باسم C++11.
التاريخ :
بدأ بيارن ستروستروب العمل على مشروعه C مع الصفوف (C with Classes) عام 1979، وقد استلهم فكرة هذا المشروع أثناء عمله على أطروحة الدكتوراه حيث قضى وقتاً طويلاً بالبرمجة. لقد اكتشف ستروستروب أن العديد من ميزات لغة Simula ملائمة في الحقيقة لتطوير برمجيات ضخمة إلا أن بطء أداء التطبيقات المكتوبة بهذه اللغة كان يحول دون استخدامها بشكل عملي، وفي الوقت نفسه كانت تتمتع اللغة BCPL بأداء جيد إلا أنها منخفضة المستوى وبالتالي يصعب استخدامها في تطوير برمجيات ضخمة، قاد هذا الاكتشاف ستروستروب إلى فكرة تطوير لغة برمجة جديدة تجمع المزايا الحسنة من هاتين اللغتين.
واجه ستروستروب لاحقاً مشكلة تحليل نواة نظام Unix فيما يتعلق بالحوسبة الموزعة خلال عمله في مختبرات بل وتذكر المعضلات التي واجته خلال عمله على أطروحته فعقد العزم على تحسين لغة C بإضافة ميزات شبيهة بتلك الموجودة في لغة Simula. اختار ستروستروب لغة C لكونها لغة عمومية، سريعة، محمولة، وشائعة الاستخدام. لقد ألهمت ستروستروب -بالإضافة إلى C وSimula- عدد من اللغات الأخرى وهي ِALGOL68 وML وCLU وAda.
عمل ستروستروب على تطوير مصرف اسمه Cfront يقوم بتصريف كود ++C إلى كود C مكافئ، وقد قام من خلاله بإضافة بعض الميزات الجديدة إلى لغة C متل الصنوف، الصنوف المشتقة، التنميط القوي (بالإنجليزية: strong typing)، التضمين (بالإنجليزية: inlining)، والقيم الافتراضية. تم طرح أول إصدار تجاري من ++C في 14 تشرين الأول 1985.
في عام 1983 تم تغيير اسم اللغة من C with Classes إلى ++C (حيث أن ++ هو معامل الزيادة بلغة C) كما تم إضافة مجموعة من الميزات متل التوابع الظاهرية، التحميل الزائد للمعاملات والتوابع، المراجع (بالإنجليزية: references)، الثوابت، التحكم بالذاكرة المدار من قبل المستخدم، تحقق محسن من الأنماط، والتعليقات السطرية باستخدام خطين مائلين (//) على نمط لغة BCPL. في عام 1985 نُشر الإصدار الأول من كتاب لغة البرمجة ++C ليزود المبرمجين بأحد أهم المراجع عن هذه اللغة في وقت لم توصّف فيه اللغة بعد كمعيار رسمي. عام 1989 نُشر الإصدار 2.0 من الكتاب وعام 1991 نٌشر الإصدار الثاني المحدث منه. اشتملت الميزات الجديدة على الوراثة المتعددة، الصنوف المجردة (بالإنجليزية: abstract classes)، التوابع الأعضاء السكونية (بالإنجليزية: static member functions)، التوابع الأعضاء الساكنة (بالإنجليزية: const member functions)، والأعضاء المحمية. عام 1990 نُشر دليل ++C المرجعي التفصيلي (The Annotated C++ Reference Manual) وكان حجر الأساس لمعيار اللغة المستقبلي. اشتملت الميزات اللاحقة على القوالب (بالإنجليزية: templates) والاستثناءات وفضاءات الأسماء وتحويلات جديدة بين الأنماط والنمط البولياني.
ترافق تطور لغة ++C مع تطور المكتبة المعيارية. إن مكتبة الدخل والخرج (I/O stream) هي أولى الإضافات إلى المكتبة المعيارية، توفر هذه المكتبة بدائلاً لتوابع الدخل والخرج المعتادة في لغة C مثل printf وscanf. تعتبر مكتبة القوالب القياسية (Standard Template Library) إحدى أهم الإضافات إلى المكتبة المعيارية من بين الإضافات اللاحقة الكثيرة المتتالية. تتميز لغة ++C عن باقي اللغات بقلة عدد الكلمات المفتاحية حيث أن الوظيفية الأساسية تم إدراجها في المكتبة المعيارية على غرار لغة C.
تسمى ++C أحياناً لغة هجينة وذلك بسبب توفيرها العديد من النماذج البرمجة المختلفة وإتاحتها استخدام هذه النماذج مع بعضها البعض كاستخدام النموذج الإجرائي والنموذج الغرضي التوجه أثناء كتابة نفس البرنامج. لقد أثارت إمكانية كتابة برامج إجرائية باستخدام ++C بعض الجدل على اعتبار أنه من المفترض كتابة برامج غرضية التوجه لدى استخدام ++C (وإلا لتم استخدام C مثلاً). بكل الأحوال فإنه من المعتاد دمج النموذجين الإجرائي والغرضي التوجه لدى كتابة برنامج ما. وغالباً ما يسبب هذا بعض المشاكل أثناء فحص الكود أو إتمام كتابة الكود من قبل مبرمج آخر .لا تزال ++C قيد الاستخدام بشكل واسع وتعتبر إحدى اللغات المفضلة في تطوير التطبيقات الاحترافية.
أصل تسمية ++C
يقول ستروستروب: "يؤكد الاسم الطبيعة التطورية للتغيرات المحدثة على لغة C" أثناء مرحلة التطوير تم تسمية ++C بشكل غير رسمي "C الجديدة" (بالإنجليزية: new C) ثم تغير الاسم إلى "C مع الصفوف" (بالإنجليزية: C with classes). يعود الفضل في التسمية النهائية (++C) إلى ريك ماسيتي (أواسط عام 1983) وقد استخدم هذه التسمية لأول مرة في كانون الأول عام 1983. عندما سُؤل ماسيتي عام 1992 عن سبب تسمية اللغة بهذا الاسم أجاب أنه قام بذلك من باب المزاح. ويعود أصل الاسم إلى استخدام معامل الزيادة (++) من لغة C والذي يقوم بزيادة قيمة المتغير المسند له والاستخدام الشائع لرمز (+) للدلالة على حصول تحسين في برنامج حاسوبي. الدعابة تكمن في أن الاسم نفسه يحتوي على خطأ: ذلك أن استخدام الزيادة اللاحقة (بالإنجليزية: post-increment) يسبب زيادة المتحول بعد تقييم قيمة المتحول السابقة (على عكس الزيادة السابقة (بالإنجليزية: pre-increment)) بمعنى أن لغة ++C ليست أفضل من لغة C وإلا فقد كان من الأجدر استخدام الزيادة السابقة بحيث يصبح اسم اللغة C++ بدلاً من استخدام الزيادة اللاحقة كما في الاسم الحالي.
لا توجد لغة باسم C بلاس علماً أنه توجد لغة مختلفة تماماً اسمها +ABCL/c. هنالك بعض اللغات التي سميت بشكل قريب من ++C أشهرها لغة—C ولغة #C.
- التعليقات ومناقشات المبدعون (0) :