سي++
Paradigm | لغة برمجة متعددة الأنماط:إجرائية، كائنية التوجه، generic |
---|---|
Designed by | بيارنه ستروستروپ |
Developer |
بيارنه ستروستروپ معامل بل ISO/IEC JTC1/SC22/WG21 |
First appeared | 1983 |
الإصدار المستقر | ISO/IEC 14882:2003
/ 2003 |
الإطلاق الپروڤة | C++0x
|
Typing discipline | Static, unsafe, nominative |
OS | عابر للمنصات (متعدد المنصات) |
Filename extensions | .h .hh .hpp .hxx .h++ .cc .cpp .cxx .c++ |
Website | [{{#property:P856 {{#property:P856 ] |
Major implementations | |
Borland C++ Builder, GCC, Intel C++ Compiler, Microsoft Visual C++, Sun Studio, Turbo C++, Comeau C/C++, clang | |
اللهجات | |
ISO/IEC C++ 1998, ISO/IEC C++ 2003 | |
Influenced by | |
C, سيميولا, Ada 83, ALGOL 68, CLU, ML | |
Influenced | |
Perl, LPC, Lua, Pike, Ada 95, جاڤا, PHP, D, C99, C#, Aikido, Falcon | |
|
سي بلس بلس ++C هي لغة برمجة للإستخدامات العامة، تعتبر لغة السي++ لغة برمجة كائنية. والتي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات القابلة الكبيرة. ولغة السي بلس بلس ++C من لغات البرمجة العالية المستوي وفي نفس الوقت قريبة من لغة التجميع ذات المستوي المحدود. وهي لغة ناشئة من لغة C الذي قام بتطويرها بيارن ستروستروب إلي ++C.
تاريخ
طور بيارنه ستروستروپ (Bjarne Stroustrup), والذي كان يعمل في مختبرات بيل, لغة السي++ في الثمانينات كتحسين للغة السي، تضم السي++ جميع مزايا السي بالأضافة إلى مزايا البرمجة الكائنية، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج، وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
ومثلها مثل لغة السي، فان السي++ هي لغة متعددة الاستخدامات إلا أنها مناسبة لبرامج أنظمة التشغيل. وتخط معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام السي++ ومنها نظام جنو/لينكس.
ويتجنب الكثير من المبرمجين لغة السي++ والسي نظراً لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجوال بيسك وديلفي ثم جاڤا وسي شارب والأخيرتين هما مجرد تسهيل (وليس تطوير) للغة السي++ وبدا في وقت معين حتى لغات مثل الجاڤا يفترض أن تستولي على سوق البرمجيات التجارية من السي++ مع هجرة عدد كبير من مبرمجى السى++ إلى جافا وسي شارب، إلا أنه سرعان ما استوعب المبرمجون حتى السي++ هي السبيل الوحيد لانتاج برامج تجارية قوية وسريعة وتؤدى المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
بين السي والسي++
- تدعم السي++ السي بشكل تام (نظريا أوهذا ما تقوله الشركات المنتجة للمترجمات) وعمليا يمكن لمعظم برامج السى حتى تترجم بواسطة مترجمات سى++ ولهذا تسمى هذه المترجمات بمترجمات سي/سي++. - إلا حتى الأمر لا يخلومن بعض المشاكل غير المتسقطة، مثلا قد يحدث حتى تسمى متغيراً باسم new وهي حدثة محجوزة في سي++ وليست محجوزة في سي.
الجديد في سي++
لغات برمجة | |
لغات كائنية | |
سي++ ++C |
سي شارپ #C |
دلفي (لغة برمجة) Delphi |
ادا 95 Ada |
جاڤا Java |
سمولتوك Smalltalk |
روبي Ruby |
اوبجكت پاسكال Object Pascal |
لغات تقليدية | |
بيسيك Basic |
سي C |
باسكال Pascal |
كوبول COBOL |
فورتران FORTRAN |
أسمبلي Assembly |
لغات وظيفية | |
ليسپ Lisp |
پرولوگ Prolog |
پايثون Python |
پاريس Paris |
هندسة برامج | |
الاضافة الأهم التى أتت بها السى++ عن السى هى من طبيعة الحال اليرمجه عن طريق الكائنات. حيث تعتمد السى على البرمجة الاجرائية والتى كانت كافية في وقتها. الا حتى بظهور أنظمة التشغيل ذات القابلة الرسومية انتقل معظم المبرمجين إلى البرمجة بالكائنات . الا حتى السى مازالت تستخدم في برمجة الويندوز.
وهذا بالاضافة إلى بضعة اضافات أخرى مثل :
- مخطات جديدة لأداء مهام الادخال والاخراج تعتمد على الكائنات.
- حدثة iniline التى تضمن الاجراء الفرعى في الأساسى بدلا من استنادىئه.
- استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد.
سبب صعوبتها
ربما تعود مسببات صعوبة لغتى السى والسى++ لأسباب تاريخية أكثر منها واقعية وهوما يردده المبرمجين المعتادين على استخدام السى++ وهذا يعود بنا إلى أصل لغة السى وهي لغة السي بي إل CPL والتي اشتهرت بشدة تعقيدها مما تسبب في ابتعاد المبرمجين عنها فتم تطويرها وتبسيطها إلى لغة سميت BCPL ولم تلقى الكثير من النجاح ولكنها تطوت إلى لغة البي B وعندما أرادوا تطويرها سموها سى( وهذا هوأصل تسمية السي)، وبالطبع ورثت السي++ خصائص لغة سي. الا أنه لا يمكن انكار حتى مفاهيم مثل المؤشرات pointers ، والاشارات هى مفاهيم مربكة للمبرمج المبتدىء، بالضافة إلى مفاهيم التوارث Inheritance وتعدد الشكل polymorphism والقوالب Templates التى تربك حتى المبرمجين المحترفين. وكذلك لا تقدم سى++ الحماية الكافية للمبرمج كى لا يقع في أخطاء التشغيل التى قد تتسبب في توقف الحاسوب عن العمل. كيف؟
في لغة الفيجوال بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كالأتي:
Dim A(20) As Integer
ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ ويتوقف برنامجك. أما في السى++ فاذا عهدت مصفوفة بنفس الحجم : int a[20] // integer a from 0-19 not from 0-20 وعندما تحاول الوصول إلى العنصر رقم عشرين مثلا تكون قد تعديت حدود المصفوفة إلى جزء من الذاكرة من الممكن تكون مخصصة لبرنامج أخر أومعلومات حساسة لنظام التشغيل. والمشكلة الأخرى التى تربك الكثيرون حتى أول عنصر بالمصفوفة هو0 وليس 1 وحجمها 20 أى حتى العنصر الأخير هو19 وليس 20 مثل البيسك.
سبب قوتها
المعروف أنه حدثا اقتربت لغة البرمجة من لغة الحاسوب (Machine Code) حدثا زادت قوتها وما يمكن حتى تعمله بها وفي الوقت نفسه حدثا زادت صعوبتها وتعقيداتها، وفي السابق كان المبرمجون يضطرون إلى كتابة برامج معينة بلغة التجميع (أسمبلي) لأنها كانت اللغة الأقرب للحاسوب الا حتى ذلك كان أمرا في غاية التعقيد والصعوبة. ومع ظهور أنظمة التشغيل بدءا بيونكس بدأت بإستخدام لغة سي بدل من لغة أسمبلي في تطوير برامجها، وبظهور مبدأ البرمجة الكائنية التوجه، وإزدياد حجم البرامج المستخدمة وعدم كون سرعة تطبيق البرمجيات قضية حرجة، وإنتشار فكرة إعادة إستخدام البرمجيات بشكل كبير مع مبدأ البرمجة الكائنية التوجه، أصبحت السى++ بديلا جيدا للغات سابقة من ضمنها لغة التجميع ولغة سي وغيرها من اللغات التقليدية يريح المبرمجين من عنائها وفي الوقت نفسه لا تدفع بالمبرمج إلى تقديم التنازلات التى تتطلبها لغات مثل بيسك وكوبول وباسكال وغيرها. ورغم حتى السى والسى++ هما في النهاية لغات عالية المستوى الا انه قد تم تصنيفهم كلغات متوسطة بين اللغات العالية المستوى مثل بيسك وكوبول ولغة التجميع وتسمى ب لغات متوسطة المستوى Intermediate Language وتم اعتبار السى كمستوى ثالث بين مستوى رابع ومستوى ثانى ( لغة التجميع أوأسمبلي) . ويتطرف بعض المبرمجين أكثر من ذلك ويصفون السي والسي++ بأنها لغة تجميع ننطقة Portable Assembly. يضاف إلى ذلك حتى هذه اللغة تدعم برمجة كائنية التوجه مما يجعلها قابلة لللإستخدام لكائنية التوجهية أوعدمها والذي يجعلها لغة مرنة وذات شعبية لها جماهيرها الواسعة من المبرمجين المحبين للغة السي أوالمبرمجين الذين اعتادوا على لغات برمجة قائمة على كائنية التوجه مثل لفة الجافا.
أمثلة
مثال Hello, World بالسي++
#include <iostream> int main () { std::cout << "Hello, world!" << std::endl; return 0;
انظر أيضاً
- The C++ Programming Language
- C++0x, the planned new standard for C++
- Comparison of integrated development environments for C/C++
- مقارنة لغات البرمجة
- List of C++ compilers
- List of C++ template libraries
- Comparison of Java and C++
الهامش
- ^ Stroustrup, Bjarne (1997). "1". The C++ Programming Language (Third ed.). ISBN . OCLC 59193992.
|access-date=
requires|url=
(help)
وصلات خارجية
- صفحة بيارنه ستروستروب
- مرجع في ال ++C
- مترجم مجاني لنظام ويندوز
- المترجم الحر من جنو