نشأة لغة السي بلس ب...
 

نشأة لغة السي بلس بلس C++ programming language  

  RSS

Jad Ghabrawei
(@jadghabrawi)
Reputable Member Mobile1Tech team
Joined: 3 weeks ago
Posts: 35
05/01/2020 3:21 pm  

بدأ تاريخ لغة C++ منذ بدء تاريخ لغة C. فلغة C++ لم تنشأ من فراغ بل نشأة على أسس و قواعد لغة C. وكذلك الحال بالنسبة للغة C، فهي متأثرة بلغات أخرى سبقتها. لذا لا بد أولاً من معرفة نبذة تاريخية عن لغة C والأسباب التي أدت إلى انتشارها حول العالم.

 

C Language

لغة الـ C

ظهرت لغة C في عام 1972م على يد "دينيس ريتشي" وكانت متأثرةً باللغات التي سبقتها وهي لغة   B (1970م)، و لغة BCPL (1969م)، ولغة ALGOL-68 )1968م(. في الأصل طورت لغة B  وسمية NB ثم أعيد تسميتها إلى لغة  C. وبالرغم أن لغة الـ C  مصممة لكتابة برامج النظم(1) (Systems Programming) إلا إنها مناسبة لجميع أنواع التطبيقات البرمجية الأخرى.

لغة الـ C مختلفة عن اللغات التي سبقتها من حيث التصميم. فاللغات السابقة كانت مصممة علي أيدي لجان نظرية بعيدة عن الجانب العملي. أما لغة الـ C فهي مصممة ومنفذة على أيدي مبرمجين عمليين عملوا على إضافة كل ما يحتاجونه من مميزات في اللغة من واقع خبرتهم العملية. ونتيجة لذلك، تميزت وأصبحت من أشهر اللغات البرمجية المستخدمة في العالم على المستويين الصناعي و التعليمي، فمعظم  البرامج المستخدمة بملايين الناس مكتوبة بلغة الـ  C. وكذلك يرجع سبب انتشارها كونها جزاءاً من نظام تشغيل UNIX المشهور، حيث أن مترجم الـ C (Compiler) ملحقاً مع الـ UNIX  وهو مجاناً في الغالب؛ مما أتاح الفرصة للمبرمجين من استخدامه، وحتى أن معظم الـ UNIX مكتوبا بلغة الـ C.

ومن مميزات هذه اللغة التي جعلت المبرمجين يفضلونها عن اللغات الأخرى كونها لغة عامة عالية المستوى (High Level Language)  مثل الـ Pascal و الـ ALGOL،  تدعم البرمجة الهيكلية والتركيبية ولكنها تختلف عن تلك اللغات فيما توفره من إمكانيات و تسهيلات للمبرمج لا تتوفر إلا بلغة التجميع (Assembly Language). فهي تتيح للمبرمج إمكانية التحكم و السيطرة على مستوى البت(2) الممثلة لجميع أنواع البيانات. هذه الميزة جعلتها اللغة المفضلة لكتابة برامج النظم المختلفة التي تتطلب السرعة و الكفاءة و التي تكتب عادة بلغة التجميع. فيتوفر في لغة C سهولة اللغات عالية المستوى، و السرعة و الكفاءة والتحكم التي تتميز بها لغة التجميع؛ ولهذا السبب سمية لغة C باللغة الوسط (Middle Level Language). ويمكن تلخيص مميزات و خصائص لغة الـ C في النقاط التالية:

بعد عرض مميزات وشهرة ونجاح لغة C قد يتساءل البعض: لماذا نحتاج إلى لغة أخرى مثل لغة C++؟ لمعرفة الإجابة عن هذا السؤال لابد من معرفة مراحل تطور لغات البرمجة.

فمنذ اختراع الحاسب كانت البرامج تكتب بلغة الآلة مباشرة، وهي طريقة مرهقة للمبرمجين؛ حيث كانت البرامج تكتب على شكل سلسلة من الأصفار و الواحدات. هذه الطريقة عملية طالما أن البرامج لا تزيد عن بضع مئات من الأوامر. وبعد زيادة درجة تعقيد البرامج وزيادة حجمها؛ ظهرت لغة التجميع التي تمكن المبرمجين من استخدام رموز لأوامر الآلة بدلاً من سلاسل الأصفار و الواحدات، وبالتالي استطاع المبرمجين من التغلب على برامج اكبر حجما إلى حد ما. ومع استمرار زيادة تعقيد البرامج ظهرت لغات عالية المستوى، وهي لغات هيكلية مدعومة بأدوات تمكن المبرمجين من التغلب على البرامج المتوسطة التعقيد. وتعتبر لغة الـ C واحدة من تلك اللغات.

وفي بداية الثمانينيات(1980م) تجاوزت حجم البرامج الدرجة التي لا يمكن للمبرمجين التغلب عليها باستخدام اللغات الهيكلية. ولحل هذه المشكلة، ظهرت اللغات التي تدعم برمجة الكائنات Object Oriented Programming. وهي طريقة تمكن المبرمجين من التغلب على حجم البرامج باستخدام الفئات و الكائنات، كما سنراها لاحقا.

ولغة الـ C لغة هيكلية إجرائية لا تدعم برمجة الكائنات. لذلك لابد من تحسينها وتوسيعها من أجل دعم برمجة الكائنات. هذه الحاجة أدت إلى ظهور لغة الـ C++ التي تمكن المبرمجين من التغلب على البرامج الكبيرة و المعقدة.

وقد قام ستروسترب Stroustrup في معامل بل عام 1979م بتطوير لغة الـ C من أجل دعم برمجة الكائنات، وأطلق عليها اسم "C والفئات". وفي عام 1983م أعاد تسميتها إلى لغة "C++". وقد حافظة على معظم خصائص ومميزات و فوائد لغة الـ C التي سبق ذكرها، لذا أصبحت اللغة المفضلة للمبرمجين في بناء الأنظمة التي تتطلب السرعة و الكفاءة. بعبارة أخرى، لغة الـ C++ هي إصدار محسن للغة الـ C مما جعلها تحافظ بل زاد من شهرتها العالمية.

 

ANSI / ISO Standard

مقاييس ANSI / ISO

مع ازدياد شهرة لغة C++ وكونها اللغة المفضلة للمبرمجين المحترفين؛ ظهرت الحاجة إلى وضع مقاييس موحدة لها من أجل الحفاظ على شكلها ومزاياها. لذا شكلت لجنة برعاية المعهد القومي الأمريكي للمقاييس ANSI والمنظمة الدولية للمقاييس ISO من أجل هذا الغرض. وفي بداية عام 1994م انتهت اللجنة من وضع تعريف جديد موحد للغة C++ ُسمى بـ ANSI/ISO C++، وهذا يعتبر الإصدار القياسي الأول للغة البرمجة C++.

وبعد الإصدار الأول لـ ANSI/ISO C++ ظهرت إصدارات أخرى منقّحة لها. حيث ظهر آخر إصدار عام 1998م بعد إضافة القوالب المكتبية القياسية(3) STL إلى مواصفات ANSI/ISO C++. يحتوي هذا الإصدار على مواصفات C++ والتي يطلق علية اختصاراً بـ C++ القياسية بدل من ANSI/ISO C++. وأصبحت مقاييس ANSI/ISO هي المقاييس التي تلتزم بها معظم مترجمات لغة C++، ومن ضمنها المترجمين الشهيرين: Visual C++.Net  و Borland C++.

This topic was modified 3 weeks ago by Jad Ghabrawei

Quote
Share:
Blue
Default
Pear
Black Emo
{blue}:grinning:
{blue}:wink:
{blue}:face:
{blue}:inlove:
{blue}:sweaty:
{blue}:surprised:
{blue}:lovekiss:
{blue}:laugh:
{blue}:formalsmile:
{blue}:displeased:
{blue}:cool:
{blue}:resent:
{blue}:nerd:
{blue}:screaming:
{blue}:amazed:
{blue}:sad:
{blue}:deceitful:
{blue}:starryeyes:
{blue}:evil:
{blue}:shocked:
{blue}:tears:
{blue}:sulky:
{blue}:smile:
{blue}:vomited:
{blue}:hi:
{blue}:afraid:
{blue}:crazy:
{blue}:rabid:
{blue}:fighting:
{blue}:nonoise:
{blue}:blushed:
{blue}:idontknow:
{blue}:scared:
{blue}:razz:
{blue}:kiss:
{blue}:eat:
{blue}:shutmouth:
{blue}:gape:
{blue}:suspicious:
{blue}:laughingoutloud:
{blue}:bruise:
{blue}:crying:
{blue}:pray:
{blue}:serious:
{blue}:excitement:
:)
:d
:wink:
:mrgreen:
:neutral:
:twisted:
:arrow:
:shock:
:???:
:cool:
:evil:
:oops:
:razz:
:roll:
:cry:
:eek:
:lol:
:mad:
:sad:
:!:
:?:
:idea:
:hmm:
:beg:
:whew:
:chuckle:
:silly:
:envy:
:shutmouth:
{pear}:happy:
{pear}:smile:
{pear}:laugh:
{pear}:laughingoutloud:
{pear}:crying:
{pear}:exhausted:
{pear}:nerd:
{pear}:surprised:
{pear}:veryhungry:
{pear}:wink:
{blackemo}:laughtertotears:
{blackemo}:gift:
{blackemo}:love:
{blackemo}:inlove:
{blackemo}:shamefaced:
{blackemo}:heart:
{blackemo}:crazy:
{blackemo}:anguished:
{blackemo}:bruise:
{blackemo}:easymoney:
{blackemo}:exhausted:
{blackemo}:vampire:
{blackemo}:shutmouth:
{blackemo}:wink:
{blackemo}:carnival:
{blackemo}:flowers:
{blackemo}:hotdrink:
{blackemo}:party:

Please Login or Register