منتدى أحلـــى كـــلام
عزيزى الزائر

كونك زائر غير مسجل

* سيتم عرض اعلانات لك، هذه الاعلانات لا تظهر للاعظاء.
* لن تتمكن من مشاهدة بعض محتويات مواضيعنا.

ندعوك للتسجيل بأقل من دقيقة
* لتتمكن من مشاهدة كافة محتويات المواضيع التى ترغب فى قرآئتها .
* وقف عرض الاعلانات.

SiteAdmin

لغة الـ C و ++ C اسباب صعوباتها وقوتها وتاريخ تسميتها بالـC

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

لغة الـ C و ++ C اسباب صعوباتها وقوتها وتاريخ تسميتها بالـC

مُساهمة من طرف SiteAdmin في الأربعاء يونيو 09, 2010 1:48 pm

طور بيارن ستروستروب (Bjarne Stroustrup), و الذي كان يعمل فى مختبرات بيل, لغة السي++ في الثمانينات كتحسين للغة السي، تشمل السي++ جميع مزايا السي بالأضافة الى مزايا البرمجة الكائنية، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.

و مثلها مثل لغة السى, فان السى++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. و تكتب معظم أجزاء أنظمة التشغيل و برامج مساعدة أنظمة التشغيل باستخدام السى++ و منها نظام جنو لينكس.
و يتجنب الكثير من المبرمجين لغة السى++ و السى نظرا لشهرتهما كلغات برمجة معقدة. و قد أدى ذلك الى استخدام الكثيرين للغات مثل فيجوال بيسك و ديلفي ثم جافا و سي شارب و الأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السى++ و بدا فى وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السى++ مع هجرة عدد كبير من مبرمجى السى++ الى جافا و سى شارب , الا أنه سرعان ما أدرك المبرمجون أن السى++ هى السبيل الوحيد لانتاج برامج تجارية قوية و سريعة و تؤدى المطلوب منها بكفاءة و بأقل عدد من الأخطاء.
بين السى و السى++
- تدعم السى++ السى بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة للمترجمات) و عمليا يمكن لمعظم برامج السى أن تترجم بواسطة مترجمات سى++ و لهذا تسمى هذه المترجمات بمترجمات سى/سى++. - الا أن الأمر لا يخلو من بعض المشاكل غير المتوقعه, مثلا قد يحدث أن تسمى متغيرا باسم new و هى كلمة محجوزه فى سى++ و ليست محجوزة فى سى.
الجديد فى سى++
الاضافة الأهم التى أتت بها السى++ عن السى هى بالطبع اليرمجه عن طريق الكائنات. حيث تعتمد السى على البرمجة الاجرائية و التى كانت كافية فى وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم المبرمجين الى البرمجة بالكائنات . الا أن السى مازالت تستخدم فى برمجة الويندوز.
و هذا بالاضافة الى بضعة اضافات أخرى مثل :
- مكتبات جديدة لأداء مهام الادخال و الاخراج تعتمد على الكائنات.
- كلمة iniline التى تضمن الاجراء الفرعى فى الأساسى بدلا من استدعائه.
- استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد.

سبب صعوبتها:

ربما تعود أسباب صعوبة لغتى السى و السى++ لأسباب تاريخية أكثر منها واقعية و هو ما يردده المبرمجين المعتادين على استخدام السى++ و هذا يعود بنا الى أصل لغة السى و هى لغة السى بى ال CPL و التى اشتهرت بشدة تعقيدها مما تسبب فى ابتعاد المبرمجين عنها فتم تطويرها و تبسيطها الى لغة سميت BCPL و لم تلقى الكثير من النجاح و لكنها تطوت الى لغة البى B و عندما أرادو تطويرها سموها سى( و هذا هو أصل تسمية السى) , و بالطبع ورثت السى++ خصائص لغة سى. الا أنه لا يمكن انكار أن مفاهيم مثل المؤشرات pointers , و الاشارات هى مفاهيم مربكة للمبرمج المبتدىء , بالضافة الى مفاهيم التوارث Inheritance و تعدد الشكل polymorphism و القوالب Templates التى تربك حتى المبرمجين المحترفين. و كذلك لا تقدم سى++ الحماية الكافية للمبرمج كى لا يقع فى أخطاء التشغيل التى قد تتسبب فى توقف الحاسوب عن العمل. كيف؟
فى لغة الفيجوال بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كلأتى :

int a[20] // integer a from 0-19 not from 0-20

ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ و يتوقف برنامجك. أما فى السى++ فاذا عرفت مصفوفة بنفس الحجم و عندما تحاول الوصول الى العنصر رقم عشرين مثلا تكون قد تعديت حدود المصفوفة الى جزء من الذاكرة ربما تكون مخصصة لبرنامج أخر أو معلومات حساسة لنظام التشغيل. و المشكلة الأخرى التى تربك الكثيرون أن أول عنصر بالمصفوفة هو 0 و ليس 1 و حجمها 20 أى أن العنصر الأخير هو 19 و ليس 20 مثل البيسك.

سبب قوتها:

المعروف أنه كلما اقتربت لغة البرمجة من لغة الحاسوب (Machine Code) كلما زادت قوتها و ما يمكن أن تفعلة بها و فى الوقت نفسه كلما زادت صعوبتها و تعقيداتها , و فى السابق كان المبرمجون يضطرون الى كتابة برامج معينة بلغة التجميع (أسمبلي) لأنها كانت اللغة الأقرب للحاسوب الا أن ذلك كان أمرا فى غاية التعقيد و الصعوبة. و مع ظهور أنظمة التشغيل بدءا بـ بيونكس بدأت بإستخدام لغة سي بدل من لغة أسمبلي في تطوير برامجها، وبظهور مبدأ البرمجة الكائنية التوجه، وإزدياد حجم البرامج المستخدمة وعدم كون سرعة تطبيق البرمجيات قضية حرجة، وإنتشار فكرة إعادة إستخدام البرمجيات بشكل كبير مع مبدأ البرمجة الكائنية التوجه، أصبحت السى++ بديلا جيدا للغات سابقة من ضمنها لغة التجميع ولغة سي وغيرها من اللغات التقليدية يريح المبرمجين من عنائها و فى الوقت نفسه لا تدفع بالمبرمج الى تقديم التنازلات التى تتطلبها لغات مثل بيسك و كوبول و باسكال و غيرها. و رغم أن السى و السى++ هما فى النهاية لغات عالية المستوى الا انه قد تم تصنيفهم كلغات متوسطة بين اللغات العالية المستوى مثل بيسك و كوبول و لغة التجميع و تسمى ب لغات متوسطة المستوى Intermediate Language و تم اعتبار السى كمستوى ثالث بين مستوى رابع و مستوى ثانى ( لغة التجميع أو أسمبلي) . و يتطرف بعض المبرمجين أكثر من ذلك و يصفون السى و السى++ بأنها لغة تجميع نقالة Portable Assembly. Dim A(20) As Integer
avatar
SiteAdmin
Admin
Admin

عدد المساهمات : 333
نقاط : 2040
تقييم العضو : 6
تاريخ التسجيل : 09/06/2010
العمر : 43
الموقع : Banker

http://ahlakalam.to-relax.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى