تاريخ تطور لغة سي. §1 معلومات عامة عن اللغة. مراحل تصميم البرنامج. نماذج دورة حياة التطبيق. لغة C و UNIX

C ++ (تُنطق c-plus-plus) هي لغة برمجة مجمعة مكتوبة بشكل ثابت للأغراض العامة يمكن استخدامها لإنشاء برامج من أي مستوى من التعقيد.
لأكثر من 20 عامًا ، كانت هذه اللغة من بين أكثر ثلاث لغات برمجة شيوعًا وأكثرها طلبًا. (يمكن التحقق من ذلك عن طريق زيارة موقع TIOBE).
نشأت اللغة في أوائل الثمانينيات ، عندما جاء بيورن ستروستروب موظف Bell Labs بعدد من التحسينات على لغة سي لتلبية احتياجاته الخاصة.

Bjarne Stroustrup - مبتكر لغة C ++

قرر Stroustrup تمديد لغة C مع الميزات المتوفرة في لغة Simula. تعتبر لغة C هي اللغة الأساسية لنظام UNIX الذي تعمل عليه أجهزة كمبيوتر Bell ، وهي لغة سريعة وغنية ومحمولة. أضاف Stroustrup إليها القدرة على العمل مع الفئات والأشياء. نتيجة لذلك ، اتضح أن مشاكل النمذجة العملية يمكن الوصول إليها من حيث وقت التطوير (بسبب استخدام فئات تشبه Simula) ومن حيث وقت الحساب (بسبب سرعة C).
إليك كيف يقولها مطور اللغة بنفسه:



في عام 1998 ، تم نشر معيار اللغة الأول ، المعروف باسم C ++ 98 ، من قبل لجنة المعايير. تواصل C ++ التطور لتلبي المتطلبات الحديثة. إحدى المجموعات التي تطور لغة C ++ وترسل اقتراحات إلى لجنة توحيد C ++ لتحسينها هي تعزيز، التي تتعامل ، من بين أمور أخرى ، مع تحسين قدرات اللغة عن طريق إضافة ميزات البرمجة الوصفية إليها. تم إصدار أحدث معيار في عام 2017 ويسمى سي ++ 17. لن يكون المعيار التالي طويلاً في المستقبل ومن المتوقع أن يظهر في عام 2020.
لا أحد يمتلك حقوق لغة C ++ ، فهي مجانية. في مارس 2016 ، تم إنشاء مجموعة العمل WG21 C ++ في روسيا. تم تنظيم المجموعة لجمع المقترحات الخاصة بمعيار C ++ ، وتقديمها إلى اللجنة ، والدفاع عنها في الاجتماعات العامة للمنظمة الدولية للتوحيد القياسي.
C ++ هي لغة متعددة النماذج (من الكلمة paradigm - أسلوب كتابة برامج الكمبيوتر) ، والتي تتضمن مجموعة واسعة من أساليب وتقنيات البرمجة المختلفة. غالبًا ما يشار إليها على أنها لغة موجهة للكائنات ، ولكن ، بالمعنى الدقيق للكلمة ، هذا ليس هو الحال. في عملية العمل ، يتمتع المطور بالحرية المطلقة في اختيار الأدوات بحيث يتم حل المشكلة باستخدام نهج أو آخر بأكبر قدر ممكن من الكفاءة. بمعنى آخر ، لا تجبر C ++ المبرمج على الالتزام بنمط واحد فقط من تطوير البرامج (على سبيل المثال ، موجه للكائنات).
يحتوي C ++ على مكتبة قياسية غنية تتضمن حاويات وخوارزميات مشتركة ، و I / O ، وتعبيرات منتظمة ، ودعم متعدد مؤشرات الترابط ، والمزيد. أثرت C ++ على العديد من لغات البرمجة ، بما في ذلك: Java ، C # ، D. نظرًا لأن C ++ تنتمي إلى عائلة اللغات بناءً على بناء جملة لغة C ، يمكن إتقان لغات البرمجة الأخرى لهذه العائلة بسهولة: JavaScript و PHP و Perl و Objective-C وغيرها الكثير. إلخ ، بما في ذلك اللغة الأم نفسها - C. ()
خلال وجودها ، تم ترسيخ الأساطير المستقرة في لغة C ++ ، والتي يمكن دحضها بسهولة (انظر هنا: الجزء 1 والجزء 2)

تاريخ اللغة وإصدار المعايير

1983

منشئ اللغة - بيورن ستروستروب، في Bell Labs ، إصدارًا مبكرًا من C ++ ("C مع الفئات")

1985

أول إصدار تجاري لـ C ++ ، تأخذ اللغة اسمًا حديثًا

1986

إصدار الطبعة الأولى من لغة البرمجة C ++ ، وهو كتاب بلغة C ++ من تأليف Bjorn Stroustrup

1998

تم التصديق على معيار لغة C ++ الدولي: ISO / IEC 14882: 1998 "معيار لغة البرمجة C ++"

2003
2005

إصدار التقرير الفني للمكتبة 1 (TR1). على الرغم من أنه ليس جزءًا رسميًا من المعيار ، فقد وصف التقرير الامتدادات للمكتبة القياسية التي يجب تضمينها في الإصدار التالي من لغة C ++.

2011

إصدار معيار جديد - C ++ 11 أو ISO / IEC 14882: 2011 ؛ تضمن المعيار الجديد إضافات إلى جوهر اللغة وامتدادًا للمكتبة القياسية ، بما في ذلك الكثير من TR1

2014

إصدار معيار C ++ 14 ("المعيار الدولي ISO / IEC 14882: 2014 (E) لغة البرمجة C ++") ؛ يمكن اعتبار C ++ 14 امتدادًا صغيرًا لـ C ++ 11 ، يحتوي في الغالب على إصلاحات للأخطاء وتحسينات طفيفة.

2017

إصدار المعيار الجديد هو C ++ 1z (C ++ 17). لقد أجرى هذا المعيار العديد من التغييرات والإضافات. على سبيل المثال ، تضمنت STD مكتبات بمعيار C11 ، ونظام ملفات يعتمد على نظام Boost :: files ، ومعظم مكتبة TS I التجريبية.

2020

C ++ 20 هو الاسم غير الرسمي لمعيار ISO / IEC للغة البرمجة C ++ ، والذي يُتوقع بعد C ++ 17. مشروع معيار N4800.

فلسفة C ++

في The Design and Evolution of C ++ (2007) ، يصف Bjorn Stroustrup المبادئ التي اتبعها عند تصميم C ++ (الواردة بصيغة مختصرة):

  • احصل على لغة عالمية مع أنواع بيانات ثابتة وفعالية وقابلية النقل لـ C.
  • دعم مباشر وشامل لمجموعة متنوعة من أنماط البرمجة.
  • امنح المبرمج حرية الاختيار ، حتى لو أعطته الفرصة للاختيار بشكل غير صحيح.
  • حافظ على التوافق مع C قدر الإمكان ، مما يجعل من الممكن التبديل بسهولة من البرمجة إلى C.
  • تجنب الخلط بين C و C ++: أي بناء مسموح به في كلتا اللغتين يجب أن يعني نفس الشيء في كل منهما ويؤدي إلى نفس سلوك البرنامج.
  • تجنب الميزات التي تعتمد على النظام الأساسي أو لا تكون عامة.
  • "لا تدفع مقابل ما لا تستخدمه" - يجب ألا تتسبب أي ميزة لغة في تدهور أداء البرامج التي لا تستخدمها.
  • لا تتطلب بيئة برمجة معقدة للغاية.

C و C ++

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

البرنامج 9.1

#تتضمن int main () (printf ("٪ s \ n"، (sizeof ("a") == sizeof (char))؟ "C ++": "C")؛ return 0؛)

هذا يرجع إلى حقيقة أن ثوابت الحرف في C من النوع int ، وفي C ++ تكون من النوع char ، لكن أحجام هذه الأنواع تختلف.

نماذج دورة حياة التطبيق

دورة الحياةالبرنامج هو فترة زمنية تبدأ من اللحظة التي يتم فيها اتخاذ قرار بشأن الحاجة إلى إنشاء منتج برمجي وتنتهي في وقت انسحابه الكامل من التشغيل. هذه الدورة هي عملية بناء وتطوير البرمجيات (SW). هناك العديد من نماذج دورة الحياة.
نموذج تتاليدورة الحياة (نموذج الشلال الإنجليزي) في عام 1970 من قبل وينستون رويس. يوفر التنفيذ المتسلسل لجميع مراحل المشروع بترتيب ثابت تمامًا. الانتقال إلى المرحلة التالية يعني استكمال العمل في المرحلة السابقة. يتم توثيق المتطلبات المحددة في مرحلة تكوين المتطلبات بدقة في شكل اختصاصات وثابتة طوال مدة تطوير المشروع. تتوج كل مرحلة بإصدار مجموعة كاملة من الوثائق الكافية للتطوير ليواصله فريق تطوير آخر.
مراحل المشروع حسب نموذج الشلال:

  1. تشكيل المتطلبات ؛
  2. تصميم؛
  3. تطبيق؛
  4. اختبارات؛
  5. تطبيق؛
  6. التشغيل والصيانة.

في نموذج الشلال ، يفترض الانتقال من مرحلة مشروع إلى أخرى الصحة الكاملة لنتيجة المرحلة السابقة. في المشاريع الكبيرة ، يكاد يكون من المستحيل تحقيق ذلك. لذلك ، فإن هذا النموذج مناسب فقط لتطوير مشروع صغير. (لم يلتزم دبليو رويس بهذا النموذج واستخدم نموذجًا تكراريًا).
النموذج التكراري
بديل لنموذج الشلال هو نموذج التطوير التكراري والإضافي (IID) ، الذي تم الحصول عليه من T. Gilb في السبعينيات. اسم النموذج التطوري. يقسم نموذج IID دورة حياة المشروع إلى سلسلة من التكرارات ، كل منها يشبه "مشروع صغير" ، بما في ذلك جميع عمليات التطوير المطبقة على إنشاء أجزاء وظيفية أصغر ، مقارنة بالمشروع ككل. الهدف من كل تكرار هو الحصول على نسخة عمل من نظام البرنامج ، بما في ذلك الوظيفة المحددة بواسطة المحتوى المتكامل لجميع التكرارات السابقة والحالية. تحتوي نتيجة التكرار النهائي على جميع الوظائف المطلوبة للمنتج. وهكذا ، مع اكتمال كل تكرار ، يتلقى المنتج زيادة - زيادة - في قدراته ، والتي تتطور بالتالي تطوريًا.


يتم تنفيذ المتغيرات المختلفة للنهج التكراري في معظم منهجيات التطوير الحديثة:

عملية التطوير - العملية الموحدة العقلانية (RUP)

العملية العقلانية الموحدة (RUP)(العملية الموحدة العقلانية) هي منهجية لتطوير البرمجيات تحتفظ بها شركة Rational Software (IBM). توفر المنهجية توصيات لجميع مراحل التطوير: من نمذجة الأعمال إلى اختبار البرنامج النهائي وتشغيله. تستخدم لغة النمذجة الموحدة (UML) كلغة نمذجة.
تتكون دورة الحياة الكاملة لتطوير المنتج من أربع مراحل ، تتضمن كل منها تكرارًا واحدًا أو أكثر.

  • المرحلة الأولية (التأسيس)
  • تحديد نطاق المشروع ومقدار الموارد المطلوبة. يتم تحديد المتطلبات والقيود والوظائف الرئيسية للمنتج. يتم تقييم المخاطر. تخطيط العمل. في نهاية مرحلة البداية ، يتم تقييم إنجاز المرحلة الرئيسية لهدف دورة حياة الهدف ، مما يعني اتفاقًا بين أصحاب المصلحة لمواصلة المشروع.

  • تفصيل
  • وثائق المتطلبات. تصميم وتنفيذ واختبار الهيكل التنفيذي. مواصفات الشروط والتكلفة. تقليل المخاطر الرئيسية. يعني الإكمال الناجح لمرحلة التطوير الوصول إلى المرحلة الأساسية في هندسة دورة الحياة.

  • بناء
  • في مرحلة "البناء" ، يتم تنفيذ معظم وظائف المنتج: اكتمال تصميم التطبيق ، وكتابة شفرة المصدر. تنتهي مرحلة البناء بالإصدار الخارجي الأول للنظام والقدرات التشغيلية الأولية.

  • التنفيذ (الانتقال)
  • في مرحلة "التنفيذ" ، يتم إنشاء الإصدار النهائي للمنتج ونقله من المطور إلى العميل. يتضمن ذلك برنامج اختبار بيتا وتعليم المستخدم وضمان جودة المنتج. في حالة عدم تلبية الجودة لتوقعات المستخدمين أو المعايير المحددة في مرحلة البداية ، يتم تكرار مرحلة التنفيذ مرة أخرى. يعني تحقيق جميع الأهداف الوصول إلى المرحلة الرئيسية للمنتج النهائي (إصدار المنتج) وإكمال دورة التطوير الكاملة.



"تكنولوجيا المعلومات. هندسة النظم والبرمجيات. عمليات دورة حياة البرمجيات ". تم اعتماد هذا المعيار من قبل الوكالة الفيدرالية للتنظيم الفني والمقاييس في الاتحاد الروسي وهو مشابه للمعيار الدولي ISO / IEC 12207: 2008. يحدد هذا المعيار إطارًا عامًا لعمليات دورة حياة البرنامج التي يمكن استخدامها كدليل في صناعة البرمجيات. لا يقترح المعيار نموذج دورة حياة محددًا. أحكامه شائعة في أي نماذج دورة حياة وأساليب وتقنيات لإنشاء البرامج. يصف هيكل عمليات دورة الحياة دون تحديد كيفية تنفيذ أو أداء الأنشطة والمهام المدرجة في هذه العمليات.

عرض الدرس
مواضيع الرسائل
  • مؤسسة البرمجيات الحرة (FSF)
  • تراخيص البرمجيات الحرة
  • البرمجيات الحرة والمفتوحة المصدر
  • تاريخ تطور لغات البرمجة
  • تاريخ C. C و C ++
  • تاريخ
  • انتقاد C ++
  • تاريخ UNIX
  • نموذج دورة حياة البرمجيات الحلزونية
  • UML (لغة النمذجة الإنجليزية الموحدة - لغة النمذجة الموحدة)
  • إطار عمل حلول Microsoft
  • IDE لبرمجة C / C ++ على Windows
  • مترجمي C / C ++
  • إنشاء تطبيق وحدة التحكم على Windows
أسئلة
  1. لماذا لا يتم استخدام نموذج تطوير برمجيات الشلال في المشاريع الكبيرة؟
  2. ما الفرق بين نماذج الشلال ونماذج التطوير التكرارية؟
  3. ضع قائمة بمراحل تطوير البرمجيات في منهجية Rational Unified Process (RUP)

لغة البرمجة C ++

آخر تحديث: 08/28/2017

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

لها جذورها في لغة C ، التي تم تطويرها في 1969-1973 في Bell Labs بواسطة المبرمج Dennis Ritchie. في أوائل الثمانينيات ، طور المبرمج الدنماركي Bjarne Stroustrup ، ثم في Bell Labs ، C ++ كامتداد للغة C. في الواقع ، في البداية ، استكملت لغة ++ C لغة C ببعض ميزات البرمجة الموجهة للكائنات. وهكذا أطلق عليها Stroustrup نفسه في البداية "C مع الفصول" ("C مع الفصول").

بعد ذلك ، بدأت اللغة الجديدة تكتسب شعبية. تمت إضافة ميزات جديدة إليها لم تجعلها مجرد إضافة إلى C ، ولكن لغة برمجة جديدة تمامًا. نتيجة لذلك ، تمت إعادة تسمية "C مع الفئات" إلى C ++. ومنذ ذلك الحين ، بدأت كلتا اللغتين في التطور بشكل مستقل عن بعضهما البعض.

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

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

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

معالم التطور

في 1979-80 ، طور Bjarne Stroustrup امتدادًا للغة C - "C مع الفصول". في عام 1983 تمت إعادة تسمية اللغة إلى C ++.

في عام 1985 ، تم إصدار أول نسخة تجارية من لغة C ++ ، وكذلك الإصدار الأول من كتاب "The C ++ Programming Language" ، والذي مثل الوصف الأول لهذه اللغة في غياب معيار رسمي.

في عام 1989 ، تم إصدار نسخة جديدة من لغة C ++ 2.0 ، والتي تضمنت عددًا من الميزات الجديدة. بعد ذلك ، تطورت اللغة ببطء نسبيًا حتى عام 2011. ولكن في الوقت نفسه ، في عام 1998 ، جرت المحاولة الأولى لتوحيد اللغة من قبل ISO (المنظمة الدولية للتوحيد القياسي). كان أول معيار يسمى ISO / IEC 14882: 1998 أو C ++ 98 للاختصار. في وقت لاحق من عام 2003 تم نشر نسخة جديدة من معيار C ++ 03.

في عام 2011 ، تم نشر معيار C ++ 11 الجديد ، والذي احتوى على العديد من الإضافات وإثراء لغة C ++ بعدد كبير من الميزات الجديدة. تبع ذلك في عام 2014 إضافة بسيطة إلى المعيار ، المعروف أيضًا باسم C ++ 14. ومن المقرر إصدار رئيسي آخر للغة في عام 2017.

المجمعين وبيئات التطوير

لتطوير البرامج في C ++ ، أنت بحاجة إلى مترجم - يقوم بترجمة شفرة المصدر C ++ إلى ملف قابل للتنفيذ ، والذي يمكن تشغيله بعد ذلك. لكن في الوقت الحالي هناك الكثير من المجمعين المختلفين. قد تختلف في جوانب مختلفة ، لا سيما في تنفيذ المعايير. يمكن العثور على قائمة أساسية لمجمعات C ++ على ويكيبيديا. يوصى بالتطوير لاختيار المترجمين الذين يقومون بتطوير وتنفيذ أحدث المعايير. على سبيل المثال ، خلال هذا البرنامج التعليمي ، سيتم استخدام مترجم g ++ المتاح مجانًا ، والذي طوره مشروع GNU ، في الغالب.

يمكنك أيضًا استخدام IDEs مثل Visual Studio و Netbeans و Eclipse و Qt وما إلى ذلك لإنشاء برامج.

لغة C و UNIX

لغة برمجة من(تُنطق "C") في أوائل السبعينيات عندما كان كين طومسون ودينيس ريتشي من شركة Bell Labs يطوران نظام تشغيل UNDC. أولا قاموا بإنشاء جزء المترجم من، ثم استخدمها لتجميع بقية المترجم منوأخيرًا استخدم المترجم الناتج لتجميع UNIX. تم توزيع نظام التشغيل UNIX في الأصل في رموز المصدر على منبين الجامعات والمختبرات ، ويمكن للمتلقي تجميع كود المصدر باللغة منإلى الكود الأصلي باستخدام مترجم مناسب من.

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

لغة التجميع المحمول ج

مقارنة باللغة السابقة - BCPL ، اللغة منتم تحسينه عن طريق إضافة أنواع بيانات طول محددة. على سبيل المثال ، يمكن استخدام نوع البيانات int لإنشاء متغير بعدد معين من البتات (عادةً 16) ، بينما يمكن استخدام نوع البيانات الطويلة لإنشاء متغير عدد صحيح مع عدد أكبر من البتات (عادةً 32). على عكس اللغات عالية المستوى الأخرى ، منيمكن أن تعمل مع عناوين الذاكرة مباشرة باستخدام المؤشرات والمراجع. بقدر ما مناحتفظت بالقدرة على الوصول المباشر إلى الأجهزة ، وغالبًا ما يشار إليها على أنها لغة متوسطة المستوى أو يُشار إليها مازحة باسم "لغة التجميع المتنقلة".

ج- لغة البرمجة المهيكلة

فيما يتعلق بالقواعد والنحو ، منهي لغة برمجة منظمة. بينما يفكر العديد من المبرمجين المعاصرين من حيث الفئات والأشياء ، فإن المبرمجين منالتفكير من حيث الإجراءات والوظائف. في منيمكنك تحديد أنواع البيانات المجردة الخاصة بك باستخدام الكلمة الأساسية الهيكلية. وبالمثل ، يمكنك وصف أنواع الأعداد الصحيحة الخاصة بك (التعدادات) وإعطاء أسماء أخرى لأنواع البيانات الموجودة باستخدام الكلمة الأساسية typedef. بهذا المعنى منهي لغة هيكلية مع جراثيم البرمجة الشيئية.

توحيد لغة سي

انتشار اللغة جعلى أنواع مختلفة من أجهزة الكمبيوتر (تسمى أحيانًا الأنظمة الأساسية للأجهزة) أدى للأسف إلى العديد من الاختلافات في اللغة. كانوا متشابهين ولكن غير متوافقين مع بعضهم البعض. كانت هذه مشكلة كبيرة لمطوري البرامج الذين يحتاجون إلى كتابة برامج متوافقة يمكن تشغيلها على منصات متعددة. أصبح من الواضح أن هناك حاجة إلى إصدار قياسي ج. في عام 1983 شكلت ANSI (لجنة المعايير الوطنية الأمريكية) اللجنة الفنية X3J11 لإنشاء معيار اللغة ج(لتقديم تعريف لغة لا لبس فيه ومستقل عن الآلة). في عام 1989 تمت الموافقة على المعيار. دخلت ANSI في شراكة مع ISO (منظمة المعايير الدولية) لتوحيد المعايير جدوليا؛ تم نشر معيار مشترك في عام 1990 وسمي ANSI / ISO 9899: 1990. لا يزال هذا المعيار قيد التطوير ويتم دعمه من قبل معظم مطوري المترجمين.

ولادة C ++

Bjorn Stroustrup يطلق العنان لإمكانات التوجه الكائني منعن طريق نقل ميزات الفصل سيمولا 67في من. في البداية ، كانت اللغة الجديدة تسمى "C مع الفصول" وعندها فقط بدأ يطلق عليها سي ++. لغة سي ++حققت شعبية من خلال تطويرها في Bell Labs ، ثم تم نقلها لاحقًا إلى الصناعات والشركات الأخرى. تعد اليوم واحدة من أشهر لغات البرمجة (والموثوقة) في العالم. سي ++يرث كل من الجوانب الجيدة والسيئة من.

اعترافات بيورن ستروستروب

بيورن ستروستروب: "خطرت لي سي ++، وكتب تعريفه الأصلي ، وقام بالتنفيذ الأول. اخترت وصياغة معايير التصميم سي ++، طور ميزاته الرئيسية وكان مسؤولاً عن مصير مقترحات تمديد اللغة في لجنة التقييس سي ++"، - يكتب مؤلف أشهر لغات البرمجة. -" اللغة سي ++يدين بالكثير للغة جواللغة جيبقى مجموعة فرعية لغة C ++(لكن C ++ يصلح العديد من العيوب الخطيرة في نظام النوع C). كما احتفظت بالأموال ج، وهي ذات مستوى منخفض بما يكفي للتعامل مع مهام النظام الأكثر أهمية. لغة ج، بدورها ، تدين بالكثير لسلفها ، BCPL ؛ بالمناسبة ، أسلوب التعليق // مأخوذ من سي ++من BCPL. كان المصدر الرئيسي الآخر للإلهام هو اللغة سيمولا 67. تم استعارة مفهوم الطبقات (مع الفئات المشتقة والوظائف الافتراضية) منه. وسائل التحميل الزائد على المشغل والقدرة على وضع الإعلانات في أي مكان يمكن كتابة التعليمات فيه ألغول 68. "

لماذا C ++

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

لماذا كانت هناك حاجة إلى C ++

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

True Object-Oriented C ++

في لغة C ++يتم دعم مبادئ البرمجة الموجهة بشكل كامل ، بما في ذلك الركائز الثلاث التي تقوم عليها: التغليف ، والوراثة ، وتعدد الأشكال. التغليف في سي ++مدعومًا بإنشاء أنواع بيانات غير قياسية (مخصصة) تسمى الفئات. لغة سي ++يدعم الميراث. هذا يعني أنه يمكنك إعلان نوع بيانات جديد (فئة) يمثل امتدادًا لنوع موجود.

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

لغة برمجة سي ++تعتبر حاليًا اللغة السائدة المستخدمة في تطوير المنتجات التجارية ، وتتم كتابة 90٪ من الألعاب بها سي ++باستخدام برنامج DirectX.

المؤلفات

مصادر:

  • H.M.Deitel، P.J.Deitel "كيفية البرمجة في C ++"
  • Bjorn Stroustrup "لغة البرمجة C ++. الإصدار الثالث."
  • سيمون روبنسون وأولي كورنز وجاي جلين وآخرون "C # للمحترفين"
  • جيس ليبرتي "علم نفسك ++ C في 21 يومًا"
  • ستانيسلاف جورناكوف "دروس برمجة DirectX و C ++"

العلامات: تاريخ توحيد C ، ANSI C ، ISO C ، C99 ، C11 ، ISO / IEC C ، C.

أصول

C وهو "منتج مشترك" من إنشاء نظام التشغيل UNIX ، والذي تم تطويره في Bell Laboratories بواسطة Ken Thompson و Denis Ritchie وشركائهم. كتب Thompson بمفرده الإصدار الأصلي من UNIX الذي تم تشغيله على DEC PDP-7 ، وهو أحد الحواسيب الصغيرة الأولى التي تحتوي على 8K كلمة فقط من الذاكرة الرئيسية (كانت 1969 ، بعد كل شيء).

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

سرعان ما انضم ريتشي إلى مشروع UNIX وبدأ الكتابة في B. في عام 1970 ، اشترت Bell Labs PDP-11 للمشروع. نظرًا لأن B كان جاهزًا للتشغيل على PDP-11 ، أعاد Thompson كتابة جزء من UNIX إلى B. في عام 1971 ، أصبح من الواضح أن B لم يكن مناسبًا تمامًا لـ PDP-11 ، لذلك بدأ Ritchie في إنشاء نسخة موسعة من B. He أطلق عليها في البداية NB (New B) ، ولكن عندما أصبحت اللغة مختلفة تمامًا عن B ، تم تغيير الاسم إلى C. بحلول عام 1973 ، كانت اللغة مستقرة بدرجة كافية بحيث يمكن إعادة كتابة UNIX فيها. قدم الانتقال إلى C ميزة مهمة: قابلية النقل. من خلال كتابة مترجم C لكل آلة في Bell Labs ، يمكن لفريق التطوير نقل UNIX إليها.

التوحيد

استمر تطور لغة سي في السبعينيات ، خاصة بين عامي 1977 و 1979 ، عندما نُشر أول كتاب بلغته لغة سي ، وأصبحت لغة البرمجة سي ، التي كتبها بريان كيرنيغان ودينيس ريتشي ، ونُشرت في عام 1978 ، الكتاب المقدس لمبرمجي لغة سي. في غياب معيار رسمي ، أصبح هذا الكتاب - المعروف أيضًا باسم K&R ، أو "الكتاب الأبيض" كما يحب محبو C تسميته - هو المعيار الفعلي. كان هناك عدد قليل من مبرمجي لغة سي في السبعينيات وكان معظمهم من مستخدمي يونيكس. ومع ذلك ، في الثمانينيات ، انتقلت لغة C إلى ما وراء الحدود الضيقة لعالم UNIX. أصبحت برامج التحويل البرمجي لـ C متاحة على أجهزة مختلفة تعمل بأنظمة تشغيل مختلفة. على وجه الخصوص ، بدأ C في الانتشار على منصة IBM PC سريعة التطور.

إلى جانب ارتفاع الشعبية جاءت المشاكل. اتخذ المبرمجون الذين كتبوا مترجمين جدد اللغة الموصوفة في K&R كأساس. لسوء الحظ ، في K&R ، تم وصف بعض ميزات اللغة بشكل غامض ، لذلك فسرها المترجمون في كثير من الأحيان وفقًا لتقديرهم. كما أن الكتاب لم يميز بشكل واضح بين ما هو سمة من سمات اللغة وما هي سمة من سمات نظام التشغيل UNIX. ومما زاد الطين بلة ، بعد نشر K&R ، استمر C في التطوير: تمت إضافة ميزات جديدة إليه وتم حذف الميزات القديمة منه. سرعان ما ظهرت حاجة واضحة لوصف شامل ودقيق وحديث للغة. بدون مثل هذا المعيار ، بدأت لهجات اللغة في الظهور التي تتداخل مع قابلية النقل ، أقوى جانب في اللغة.

بدأ تطوير معيار C الأمريكي في عام 1983 تحت رعاية المعهد الوطني الأمريكي للمعايير (ANSI). بعد العديد من المراجعات ، تم الانتهاء من المعيار في عام 1988 وتم اعتماده رسميًا في ديسمبر 1989 باسم ANSI X3.159-1989. في عام 1990 ، تمت الموافقة عليه من قبل المنظمة الدولية للتوحيد القياسي (ISO) كمعيار دولي ISO / IEC 9899: 1990. يشار إلى هذا الإصدار من اللغة عادةً باسم C89 أو C90 لتجنب الالتباس مع الإصدار الأصلي من C ، والذي يشار إليه عادةً باسم K&R C.

خضعت اللغة لتغييرات طفيفة في عام 1995 (التغييرات موصوفة في وثيقة يشار إليها عادة باسم التعديل 1). حدثت تغييرات أكثر أهمية في عام 1999 ، عندما تم نشر معيار ISO / IEC 9899: 1999. يشار إلى اللغة الموصوفة في هذا المعيار عادةً باسم C99. المصطلحات "ANSI C" و "ANSI / ISO C" و "ISO C" ، التي كانت تستخدم لوصف C99 ، غامضة بسبب وجود معيارين.

في عام 2011 ، إلى جانب مراجعة لغة C ++ ، تم إصدار معيار C11. على الرغم من وجود معيار 11 ، لا يزال العديد من المترجمين لا يدعمون بشكل كامل حتى إصدارات C99 ، لذلك سيتم ذكر استخدام معيار C11 بشكل صريح.

C ++ هي لغة برمجة مجمعة للأغراض العامة تجمع بين ميزات لغات البرمجة عالية المستوى ومنخفضة المستوى. بالمقارنة مع سابقتها ، لغة البرمجة C ، تم التركيز بشكل كبير على دعم البرمجة العامة والموجهة للكائنات. يأتي اسم "لغة البرمجة C ++" من لغة البرمجة C ، حيث يشير عامل التشغيل الأحادي ++ إلى زيادة المتغير.

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

وهو يدعم نماذج البرمجة مثل البرمجة الإجرائية ، والبرمجة الموجهة للكائنات ، والبرمجة العامة ، ويوفر نمطية ، وتجميعًا منفصلاً ، ومعالجة الاستثناءات ، وتجريد البيانات ، وإعلان أنواع الكائنات (الفئات) ، والوظائف الافتراضية.

يأتي اسم اللغة الناتج من عامل الزيادة اللاحقة للإصلاح الأحادي C ++ (زيادة قيمة المتغير بمقدار واحد). لم يتم استخدام الاسم C + لأنه خطأ نحوي في لغة C ، علاوة على أن الاسم مأخوذ من لغة أخرى. لم يتم تسمية اللغة أيضًا باسم D لأنها "امتداد لـ C ولا تحاول إصلاح المشكلات عن طريق إزالة عناصر C".

مزايا اللغة:

1. قابلية التوسع. يستخدم C ++ لتطوير برامج لمجموعة متنوعة من الأنظمة الأساسية والأنظمة.

2. القدرة على العمل بمستوى منخفض مع الذاكرة والعناوين والمنافذ.

3. القدرة على إنشاء خوارزميات معممة لأنواع مختلفة من البيانات وتخصصها وحساباتها في مرحلة التجميع باستخدام القوالب.

4. عبر منصة. تتوفر المجمعات لعدد كبير من الأنظمة الأساسية ، ويتم تطوير البرامج في C ++ لمجموعة متنوعة من الأنظمة الأساسية والأنظمة.

5. الكفاءة. تم تصميم اللغة لمنح المبرمج أقصى قدر من التحكم في جميع جوانب هيكل البرنامج وتنفيذه.

عيوب اللغة:

1. يؤدي وجود العديد من الميزات التي تنتهك مبادئ أمان النوع إلى حقيقة أنه في برامج C ++ يمكن أن يتسلل خطأ خفي بسهولة.

2. ضعف الدعم النمطي. يؤدي تضمين واجهة وحدة خارجية من خلال إدخال المعالج الأولي لملف رأس (# include) إلى إبطاء عملية التجميع بشكل خطير عندما يتم تضمين عدد كبير من الوحدات.

3. لغة C ++ صعبة التعلم والتجميع.

4. بعض أنواع التحويلات ليست بديهية. على وجه الخصوص ، ينتج عن العملية على الأرقام غير الموقعة والموقعة نتيجة غير موقعة.

5. يعتبر البعض أن عدم وجود نظام جمع القمامة المدمج هو عيب في لغة C ++. من ناحية أخرى ، فإن C ++ لديها أدوات كافية للقضاء تقريبًا على استخدام المؤشرات الخطرة ، ولا توجد مشاكل أساسية في تنفيذ واستخدام جمع القمامة (على مستوى المكتبات ، وليس اللغة). يسمح غياب جمع القمامة المضمنة للمستخدم باختيار استراتيجية إدارة الموارد.