تعريف بلغة C++
مـنتديات لــــــــــمة حـــــاسوب الاهـــــلية :: [¦ الأقسام البرمجيه - Forums software ¦] :: قسم لغه C++|C
صفحة 1 من اصل 1
تعريف بلغة C++
سي بلس بلس ++C هي [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] للإستخدامات العامة، تعتبر لغة السي++ لغة [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط].
و التي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة
الكبيرة. و لغة السي بلس بلس ++C من لغات البرمجة العالية المستوي و في نفس
الوقت قريبة من لغة التجميع ذات المستوي المحدود. و هي لغة ناشئة من لغة C
الذي قام بتطويرها [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] إلي ++C.
تاريخ
طور [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] (Bjarne Stroustrup), و الذي كان يعمل في مختبرات بيل, لغة السي++ في الثمانينات كتحسين للغة [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]، تشمل السي++ جميع مزايا السي بالأضافة إلى مزايا [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
و مثلها مثل لغة السى, فان السى++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. و تكتب معظم أجزاء [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] و برامج مساعدة أنظمة التشغيل باستخدام السى++ و منها نظام [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط].
و يتجنب الكثير من المبرمجين لغة السى++ و السى نظرا لشهرتهما [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] معقدة. و قد أدى ذلك إلى استخدام الكثيرين للغات مثل [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] و [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] ثم [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] و [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]
و الأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السى++ و بدا في وقت معين
أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السى++ مع
هجرة عدد كبير من مبرمجى السى++ إلى جافا و سى شارب ، الا أنه سرعان ما
أدرك المبرمجون أن السى++ هى السبيل الوحيد لانتاج برامج تجارية قوية و
سريعة و تؤدى المطلوب منها بكفاءة و بأقل عدد من الأخطاء.
بين السى و السى++
- تدعم السى++ السى بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة
للمترجمات) و عمليا يمكن لمعظم برامج السى أن تترجم بواسطة مترجمات سى++ و
لهذا تسمى هذه المترجمات بمترجمات سى/سى++. - الا أن الأمر لا يخلو من بعض
المشاكل غير المتوقعه, مثلا قد يحدث أن تسمى متغيرا باسم new و هى كلمة
محجوزه في سى++ و ليست محجوزة في سى.
الجديد في سى++
الاضافة الأهم التى أتت بها السى++ عن السى هى بالطبع اليرمجه عن طريق
الكائنات. حيث تعتمد السى على البرمجة الاجرائية و التى كانت كافية في
وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم
المبرمجين إلى البرمجة بالكائنات . الا أن السى مازالت تستخدم في برمجة
الويندوز.
و هذا بالاضافة إلى بضعة اضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الادخال و الاخراج تعتمد على الكائنات.
- كلمة inline التى تضمن الاجراء الفرعى في الأساسى بدلا من استدعائه.
- استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد.
سبب صعوبتها
ربما تعود أسباب صعوبة لغتى السى و السى++ لأسباب تاريخية أكثر منها
واقعية و هو ما يردده المبرمجين المعتادين على استخدام السى++ و هذا يعود
بنا إلى أصل لغة السى و هى لغة السى بى ال 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 بالسي++
كود:
التطور المستقبلي
سي++ يواصل التطوّر لتلبية المتطلبات المستقبلية. نسخة جديدة من سي++
القياسية حاليا هي قيد التطوير، لقبة سي++0اكس، يشّار بأنّه يتوقع أن يكون
إصدارها قبل 2010. يشير العمل الحالي بأنّ سي++ سيواصل الإستفادة من طبيعته
متعددة المثال. [Boost.org] مجموعة تعمل للإستفادة إلى أبعد الحدود من
سي++ في شكله الحالي. هم يتوسّعون كثيرا في سي++ من حيث الوظيفية والقدرات
وينصحون أيضا سي++ لجنة معايير التي فيها تعمل الميزّات حسنا والتي تحتاج
التحسين.
وصلات خارجية
و التي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة
الكبيرة. و لغة السي بلس بلس ++C من لغات البرمجة العالية المستوي و في نفس
الوقت قريبة من لغة التجميع ذات المستوي المحدود. و هي لغة ناشئة من لغة C
الذي قام بتطويرها [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] إلي ++C.
تاريخ
طور [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] (Bjarne Stroustrup), و الذي كان يعمل في مختبرات بيل, لغة السي++ في الثمانينات كتحسين للغة [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]، تشمل السي++ جميع مزايا السي بالأضافة إلى مزايا [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
و مثلها مثل لغة السى, فان السى++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. و تكتب معظم أجزاء [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] و برامج مساعدة أنظمة التشغيل باستخدام السى++ و منها نظام [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط].
و يتجنب الكثير من المبرمجين لغة السى++ و السى نظرا لشهرتهما [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] معقدة. و قد أدى ذلك إلى استخدام الكثيرين للغات مثل [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] و [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] ثم [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط] و [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]
و الأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السى++ و بدا في وقت معين
أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السى++ مع
هجرة عدد كبير من مبرمجى السى++ إلى جافا و سى شارب ، الا أنه سرعان ما
أدرك المبرمجون أن السى++ هى السبيل الوحيد لانتاج برامج تجارية قوية و
سريعة و تؤدى المطلوب منها بكفاءة و بأقل عدد من الأخطاء.
بين السى و السى++
- تدعم السى++ السى بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة
للمترجمات) و عمليا يمكن لمعظم برامج السى أن تترجم بواسطة مترجمات سى++ و
لهذا تسمى هذه المترجمات بمترجمات سى/سى++. - الا أن الأمر لا يخلو من بعض
المشاكل غير المتوقعه, مثلا قد يحدث أن تسمى متغيرا باسم new و هى كلمة
محجوزه في سى++ و ليست محجوزة في سى.
الجديد في سى++
الاضافة الأهم التى أتت بها السى++ عن السى هى بالطبع اليرمجه عن طريق
الكائنات. حيث تعتمد السى على البرمجة الاجرائية و التى كانت كافية في
وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم
المبرمجين إلى البرمجة بالكائنات . الا أن السى مازالت تستخدم في برمجة
الويندوز.
و هذا بالاضافة إلى بضعة اضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الادخال و الاخراج تعتمد على الكائنات.
- كلمة inline التى تضمن الاجراء الفرعى في الأساسى بدلا من استدعائه.
- استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد.
سبب صعوبتها
ربما تعود أسباب صعوبة لغتى السى و السى++ لأسباب تاريخية أكثر منها
واقعية و هو ما يردده المبرمجين المعتادين على استخدام السى++ و هذا يعود
بنا إلى أصل لغة السى و هى لغة السى بى ال 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;
}
التطور المستقبلي
سي++ يواصل التطوّر لتلبية المتطلبات المستقبلية. نسخة جديدة من سي++
القياسية حاليا هي قيد التطوير، لقبة سي++0اكس، يشّار بأنّه يتوقع أن يكون
إصدارها قبل 2010. يشير العمل الحالي بأنّ سي++ سيواصل الإستفادة من طبيعته
متعددة المثال. [Boost.org] مجموعة تعمل للإستفادة إلى أبعد الحدود من
سي++ في شكله الحالي. هم يتوسّعون كثيرا في سي++ من حيث الوظيفية والقدرات
وينصحون أيضا سي++ لجنة معايير التي فيها تعمل الميزّات حسنا والتي تحتاج
التحسين.
وصلات خارجية
- [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]
- [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]
- [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]
- [وحدهم المديرون لديهم صلاحيات معاينة هذا الرابط]
مـنتديات لــــــــــمة حـــــاسوب الاهـــــلية :: [¦ الأقسام البرمجيه - Forums software ¦] :: قسم لغه C++|C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى