C++
لغة السي بلس بلس ++C من لغات البرمجة العالية المستوي وفي نفس الوقت قريبة من لغة التجميع ذات المستوي المحدود. وهي لغة ناشئة من لغة C الذي قام بتطويرها بيارن ستروستروب إلي ++C.
تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
ومثلها مثل لغة السي، فان السي++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام السي++ ومنها نظام لينكس Linux / ويندوز
و يتجنب الكثير من المبرمجين لغة السي++ والسي نظرا لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجوال بيسك ودلفي ثم جافا وسي شارب والأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السي++ وبدا في وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السي++ مع هجرة عدد كبير من مبرمجى السي++ إلى جافا وسي شارب ، الا أنه سرعان ما أدرك المبرمجون أن السي++ هى السبيل الوحيد لانتاج برامج تجارية قوية وسريعة وتؤدى المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
++ الجديد في سي
الاضافة الأهم التى أتت بها السي++ عن السي هى بالطبع اليرمجه عن طريق الكائنات. حيث تعتمد السي على البرمجة الاجرائية والتى كانت كافية في وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم المبرمجين إلى البرمجة بالكائنات . الا أن السي مازالت تستخدم في برمجة الويندوز.
و هذا بالاضافة إلى بضعة اضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الادخال والاخراج تعتمد على الكائنات. & - كلمة 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 مثل البيسك.
تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
ومثلها مثل لغة السي، فان السي++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام السي++ ومنها نظام لينكس Linux / ويندوز
و يتجنب الكثير من المبرمجين لغة السي++ والسي نظرا لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجوال بيسك ودلفي ثم جافا وسي شارب والأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السي++ وبدا في وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السي++ مع هجرة عدد كبير من مبرمجى السي++ إلى جافا وسي شارب ، الا أنه سرعان ما أدرك المبرمجون أن السي++ هى السبيل الوحيد لانتاج برامج تجارية قوية وسريعة وتؤدى المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
++ الجديد في سي
الاضافة الأهم التى أتت بها السي++ عن السي هى بالطبع اليرمجه عن طريق الكائنات. حيث تعتمد السي على البرمجة الاجرائية والتى كانت كافية في وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم المبرمجين إلى البرمجة بالكائنات . الا أن السي مازالت تستخدم في برمجة الويندوز.
و هذا بالاضافة إلى بضعة اضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الادخال والاخراج تعتمد على الكائنات. & - كلمة 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 مثل البيسك.
ليست هناك تعليقات:
إرسال تعليق