علاء عضو
عدد المساهمات : 5 نقاط : 15 تاريخ التسجيل : 20/11/2013
| موضوع: تاريخ وفلسفة لغة البرمجة ++C الثلاثاء أكتوبر 27, 2015 12:23 pm | |
|
التاريخ: بدأ بيارن ستروستروب العمل على مشروعه 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[2].
في عام 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" (ستروستروب، 1994) يصف بيارن ستروستروب بعض القواعد التي استلهم منها تصميم ++C: صُممت ++C كلغة عمومية، سكونية التنميط وتتمتع بفعالية ومحمولية لغة C صُممت ++C لتدعم بشكل مباشر وغني عدة أنماط برمجية (برمجة إجرائية، تجريد البيانات، البرمجة الكائنية والبرمجة العامة) صُممت ++C لتتيح المبرمج حرية الخيار حتى وإن كان اختيار المبرمج غير صحيح صُممت ++C بحيث تتوافق مع لغة C قدر الإمكان لتوفر بالتالي انتقالاً سلساً إليها لدى الحاجة تتجنب ++C الميزات الخاصة بمنصة محددة فقط وغير عمومية لا تحمّل ++C البرمجيات المكتوبة أعباء ميزات اللغة في حال عدم استخدامها (مبدأ العبء المعدوم) صممت لغة ++C كي تعمل بدون وجود بيئات تطوير معقدة في كتاب "النموذج الكائني للغة ++C" (ليبمان، 1996) يشرح الكاتب إمكانية تحويل مصرفات ++C العبارات البرمجية إلى توضعات داخل الذاكرة. إلا أن هذا لا يمنع بالطبع مصممي المصرفات من اعتماد طرقهم الخاصة في كتابة مصرفات متوافقة مع المعيار المرجعي ++C.المصدر: https://ar.wikipedia.org/wiki/%D8%B3%D9%8A%2B%2B#.D8.A7.D9.84.D8.AA.D8.A7.D8.B1.D9.8A.D8.AE | |
|