سي++ (لغة برمجة)سي++ (تنطق:
سي بلس بلس) (
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]: ++C) هي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] للاستخدامات العامة، تعتبر لغة السي++ لغة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. والتي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة الكبيرة وللتعامل مع البنية الصلبة للحاسب. ولغة السي بلس بلس ++C من لغات البرمجة العالية المستوى وفي نفس الوقت قريبة من لغة التجميع ذات المستوى المحدود، كما أنها تعد لغة برمجة إجرائية (يمكن كتابة برنامج يحتوي على إجراءات وتوابع فقط) كما تعد لغة غرضية التوجه (البرنامج المكتوب عبارة عن أصناف وتستخدم الخواص المتاحة من كبسلة وتعددية الأشكال والوراثة والتركيب).
//
تاريخ السي بلس بلسطوّر
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] (Bjarne Stroustrup) خلال عمله في مختبرات بيل لغة سي++ في الثمانينات كتحسين للغة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. تشمل سي++ جميع مزايا السي بالإضافة إلى مزايا
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. تسهّل لغة سي++ الأسلوب المُهيكل والمنهجي لعملية تصميم البرامج، وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
كما هو الحال مع لغة السي، فإن سي++ لغة متعددة الاستخدامات، إلا أنها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وبرامج مساعدة أنظمة التشغيل باستخدام سي++ ومنها نظام
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط].
و يتجنب الكثير من المبرمجين لغتي سي وسي++ نظراً لشهرتهما
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ثم
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. الأخيرتين هما مجرد تسهيل (وليس تطوير) للغة سي++، وبدا في وقت معين أن لغات مثل
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] سوف تستولي على سوق البرمجيات التجارية من سي++ مع هجرة عدد كبير من مبرمجي السي++ إلى
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]، إلا أنه سرعان ما أدرك المبرمجون أن السي++ هي السبيل الوحيد لإنتاج برامج تجارية قوية وسريعة وتؤدي المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
بين السي والسي++- وفقاً لمواصفات سي++، فإنها تدعم لغة سي بشكل كامل (دعم رجعي). وعملياً يمكن لمعظم برامج السي أن تترجم بواسطة مترجمات سي++ ولهذا تسمى هذه المترجمات بمترجمات سي/سي++. إلا أن الأمر لا يخلو من بعض المشاكل غير المتوقعة، مثلاً قد يحدث أن تسمى متغيراً باسم new وهى كلمة محجوزه في سي++ وليست محجوزة في سي.
الجديد في سي++الإضافة الأهم التي أتت بها السي++ عن السي هي البرمجة عن طريق الكائنات. حيث تعتمد السي على البرمجة الإجرائية والتي كانت كافية في وقتها. إلا أن ظهور أنظمة التشغيل ذات الواجهة الرسومية نقل العديد من المبرمجين إلى البرمجة بالكائنات. بالرغم من ذلك فإن السي ما زالت تُستخدم في برمجة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]. أبرز هذه الإضافات هي:
- الصفوف والكائنات.
- التحميل الزائد للعمليات: ويعتبرها الكثير أهم إضافة في سي++، لأنها جعلت من سي++ لغة قابلة للتوسع. هناك أكثر من 30 عملية يمكن التحميل الزائد عليها.
- القوالب.
- التعددية الشكلية.
- الوراثة: وهي إمكانية تطوير صنف جديد يرث جميع خصائص صنف آخر. في هذه الحالة يسمى الصنف بالصنف المشتق.
[ إضافات أخرى
- استخدام الرمز // لتضمين الملاحظات بطول سطر واحد والتي يتم تجاهلها من قِبل المترجم عند القيام بعملية الترجمة.
[سبب صعوبتهاربما تعود أسباب صعوبة لغتي السي والسي++ لأسباب تاريخية أكثر منها واقعية وهو ما يردده المبرمجين المعتادين على استخدام السي++ وهذا يعود بنا إلى أصل لغة السي وهي لغة السي بي ال 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 مثل البيسك.
أمثلة مثال لطباعة !Hello، World بالسي++# include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
مثال اخر
# include<iostream>
using namespace std;
void main()
{
cout<<"i love my country";
}
ملاحظة: في
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] القديمة وبعض المصرفات الحديثة يجب وضع iostream.h عوضاً عن iostream لتعمل الشيفرة.
التطور المستقبليلا تزال لغة سي++ تواصل تطورها. فهناك نسخة جديدة من سي++ قيد التطوير، وتسمى سي++0اكس، وقد صدرت في مارس 2009، يشير العمل الحالي بأنّ سي++ سيواصل الاستفادة من طبيعته متعددة المثال.
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] مجموعة تعمل للاستفادة إلى أبعد الحدود من سي++ في شكله الحالي. هم يتوسّعون كثيرا في سي++ من حيث الوظيفية والقدرات وينصحون أيضا لجنة معايير سي++ التي تعمل فيها الميزّات حسنا والتي تحتاج التحسين.