اینترنت پنجره ها اندروید
بسط دادن

Adventik یک آژانس دیجیتالی با خدمات کامل است. تاریخ زبان C زبان Ci

C ++ یک زبان برنامه نویسی همه منظوره کامپایل شده است که ویژگی های زبان های برنامه نویسی سطح بالا و سطح پایین را ترکیب می کند. در مقایسه با نسخه قبلی خود، زبان برنامه نویسی C، بیشترین توجه به پشتیبانی از برنامه نویسی شی گرا و عمومی معطوف شده است. نام "زبان برنامه نویسی C ++" از زبان برنامه نویسی C می آید که در آن عملگر unary ++ افزایش یک متغیر را نشان می دهد.

زبان برنامه نویسی C ++ به طور گسترده برای توسعه نرم افزار استفاده می شود. یعنی ایجاد برنامه های کاربردی مختلف، توسعه سیستم عامل ها، درایورهای دستگاه، و همچنین بازی های ویدئویی و بسیاری موارد دیگر. در اوایل دهه 1980 توسط Björn Stroustrup ساخته شد. او تعدادی پیشرفت در زبان برنامه نویسی C برای استفاده خودش ارائه کرد. آن ها در ابتدا برای ایجاد زبان برنامه نویسی C ++ برنامه ریزی نشده بود.

از پارادایم های برنامه نویسی مانند برنامه نویسی رویه ای، برنامه نویسی شی گرا، برنامه نویسی عمومی پشتیبانی می کند، ماژولار بودن، کامپایل جداگانه، مدیریت استثنا، انتزاع داده ها، اعلان انواع (کلاس ها) اشیا، توابع مجازی را فراهم می کند.

نام زبان به دست آمده از عملگر C ++ unary postfix increment (افزایش مقدار یک متغیر به اندازه یک) می آید. نام C + استفاده نشد زیرا یک خطای نحوی در C است و علاوه بر این، نام توسط زبان دیگری گرفته شده است. این زبان همچنین D نامگذاری نشد زیرا "این یک پسوند C است و سعی نمی کند با حذف عناصر C مشکلات را برطرف کند."

مزایای زبان:

1. مقیاس پذیری. در زبان ++C، برنامه‌ها برای طیف گسترده‌ای از پلتفرم‌ها و سیستم‌ها توسعه می‌یابند.

2. امکان کار در سطح پایین با حافظه، آدرس، پورت ها.

3. امکان ایجاد الگوریتم های تعمیم یافته برای انواع مختلف داده ها، تخصصی بودن آنها و محاسبات گردآوری با استفاده از قالب ها.

4. کراس پلتفرم. کامپایلرها برای تعداد زیادی از پلتفرم ها در دسترس هستند، در زبان C ++ آنها برنامه هایی را برای طیف گسترده ای از پلتفرم ها و سیستم ها توسعه می دهند.

5. کارایی. این زبان طوری طراحی شده است که برنامه نویس حداکثر کنترل را بر تمام جنبه های ساختار و ترتیب اجرای برنامه بدهد.

معایب زبان:

1. وجود بسیاری از ویژگی ها که اصول ایمنی نوع را نقض می کند منجر به این واقعیت می شود که یک خطای ظریف می تواند به راحتی در برنامه های C ++ رخنه کند.

2. پشتیبانی ضعیف از ماژولار بودن. اتصال یک رابط ماژول خارجی از طریق درج فایل هدر پیش پردازنده (#include) به طور جدی سرعت کامپایل را هنگام اتصال تعداد زیادی ماژول کاهش می دهد.

3. یادگیری و کامپایل زبان C ++ دشوار است.

4. برخی از تبدیل های نوع بصری نیستند. به طور خاص، عملیات روی اعداد بدون علامت و علامت، نتایج بدون علامت تولید می کند.

5. برخی عدم وجود سیستم جمع آوری زباله داخلی را از معایب زبان C ++ می دانند. از سوی دیگر، C ++ دارای ابزار کافی برای حذف تقریباً استفاده از نشانگرهای خطرناک است؛ هیچ مشکل اساسی در پیاده سازی و استفاده از جمع آوری زباله (در سطح کتابخانه ها، نه زبان) وجود ندارد. فقدان جمع آوری زباله داخلی به کاربر این امکان را می دهد که استراتژی مدیریت منابع خود را انتخاب کند.

زبان برنامه نویسی ++ C

آخرین به روز رسانی: 1396/08/28

زبان برنامه نویسی C ++ یک زبان برنامه نویسی کامپایل شده سطح بالا، تایپ ایستا و همه منظوره است که برای ساخت طیف گسترده ای از برنامه ها مناسب است. امروزه C ++ یکی از محبوب ترین و گسترده ترین زبان ها است.

این زبان ریشه در زبان C دارد که در سال‌های 1969-1973 در آزمایشگاه‌های بل توسط برنامه‌نویس دنیس ریچی توسعه یافت. در اوایل دهه 1980، برنامه نویس دانمارکی Bjarne Stroustrup، که در آن زمان در آزمایشگاه Bell بود، C ++ را به عنوان پسوند زبان C توسعه داد. در واقع، در ابتدا، C ++ به سادگی زبان C را با برخی از قابلیت های برنامه نویسی شی گرا تکمیل کرد. و بنابراین خود استروستروپ در ابتدا از آن به عنوان "C با کلاس ها" یاد کرد.

پس از آن، زبان جدید شروع به محبوبیت کرد. ویژگی های جدیدی به آن اضافه شد که آن را نه تنها یک زبان برنامه نویسی کاملاً جدید به C اضافه کرد. در نتیجه ، "C با کلاس" به C ++ تغییر نام داد. و از آن زمان به بعد، هر دو زبان شروع به توسعه مستقل از یکدیگر کردند.

C ++ یک زبان قدرتمند است که قابلیت های حافظه غنی را از C به ارث برده است. بنابراین ، C ++ اغلب کاربرد خود را در برنامه نویسی سیستم پیدا می کند ، به ویژه هنگام ایجاد سیستم عامل ها ، درایورها ، ابزارهای مختلف ، آنتی ویروس ها و غیره. ضمناً ویندوز بیشتر به زبان C ++ نوشته شده است. اما استفاده از این زبان تنها به برنامه نویسی سیستم محدود نمی شود. C ++ را می توان در برنامه های هر سطحی که سرعت و عملکرد مهم هستند استفاده کرد. اغلب برای ایجاد برنامه های گرافیکی، برنامه های کاربردی مختلف استفاده می شود. همچنین، به ویژه اغلب برای ایجاد بازی هایی با تجسم غنی غنی استفاده می شود. علاوه بر این، جهت موبایل اخیراً شتاب بیشتری گرفته است، جایی که C ++ نیز کاربرد خود را پیدا کرده است. و حتی در توسعه وب نیز می توان از C ++ برای ایجاد برنامه های کاربردی وب یا نوعی خدمات کمکی که برنامه های وب را ارائه می دهد استفاده کرد. به طور کلی ، C ++ یک زبان پرکاربرد است که تقریباً می توانید هر نوع برنامه ای را در آن ایجاد کنید.

C ++ یک زبان کامپایل شده است، به این معنی که کامپایلر کد منبع C ++ را به یک فایل اجرایی که حاوی مجموعه ای از دستورالعمل های ماشین است ترجمه می کند. اما پلتفرم های مختلف ویژگی های خاص خود را دارند، بنابراین برنامه های کامپایل شده را نمی توان به سادگی از یک پلتفرم به پلتفرم دیگر منتقل کرد و در آنجا اجرا کرد. با این حال، در سطح کد منبع، برنامه های C ++ عمدتا قابل حمل هستند، مگر اینکه از برخی توابع خاص برای سیستم عامل فعلی استفاده شود. و وجود کامپایلرها، کتابخانه‌ها و ابزارهای توسعه تقریباً برای همه پلتفرم‌های رایج به شما امکان می‌دهد همان کد منبع C ++ را در برنامه‌های این پلتفرم‌ها کامپایل کنید.

برخلاف C، C ++ به شما اجازه می‌دهد تا برنامه‌ها را به سبک شی گرا بنویسید، که یک برنامه را به عنوان مجموعه‌ای از کلاس‌ها و اشیاء در حال تعامل نشان می‌دهد. این امر ساخت برنامه های کاربردی بزرگ را آسان می کند.

مراحل اصلی توسعه

در سال های 1979-1980، 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 ++ توسعه یافته توسط پروژه گنو در درجه اول استفاده خواهد شد.

همچنین می توانید از IDE هایی مانند Visual Studio، Netbeans، Eclipse، Qt و غیره برای ایجاد برنامه استفاده کنید.

دلیل این وضعیت زبان C چیست؟ از نظر تاریخی ، این زبان از سیستم عامل یونیکس جدا نیست ، که امروزه تولد دوباره خود را تجربه می کند. دهه 60 عصر شکل گیری سیستم عامل ها و زبان های برنامه نویسی سطح بالا بود. در آن دوره، سیستم عامل و کامپایلرها به طور مستقل برای هر نوع کامپیوتر، و اغلب حتی زبان های برنامه نویسی خودشان (به عنوان مثال، PL / I) را به خاطر بسپارید. در عین حال، مشترک بودن مشکلات ناشی از این امر قبلاً آشکار شده است. تلاش برای ایجاد یک سیستم عامل تلفن همراه جهانی پاسخی به تحقق این اشتراک بود و این امر مستلزم یک زبان برنامه نویسی به همان اندازه جهانی و تلفن همراه بود. C به چنین زبانی تبدیل شد و یونیکس اولین سیستم عاملی بود که تقریباً به طور کامل به یک زبان سطح بالا نوشته شد.

رابطه نزدیک با یونیکس به C زمینه آزمایشی داد که در آن زمان هیچ زبان دیگری نداشت. وظایف برنامه نویسی سیستم در آن زمان چالش برانگیزترین در صنعت در نظر گرفته می شد. در بیشتر موارد، آنها به قدری به ماشین وابسته بودند که بسیاری از آنها اصلاً راه حل خود را متفاوت از اسمبلر فکر نمی کردند. زبان های سطح بالا برای برنامه نویسی کاربردی در نظر گرفته شده بودند و فقط به طور محدود توابع لازم برای کار سیستم و اغلب فقط برای نوع خاصی از ماشین را اجرا می کردند.

زبان C از همان ابتدا ایجاد شد تا امکان نوشتن وظایف سیستم در آن وجود داشته باشد. سازندگان C یک مدل انتزاعی از مجری زبان ایجاد نکردند، بلکه به سادگی آن قابلیت هایی را که در تمرین برنامه نویسی سیستم ها بیشتر مورد نیاز بود، در آن پیاده سازی کردند. اینها اول از همه ابزار کار مستقیم با حافظه، ساختارهای کنترل ساختاری و سازماندهی مدولار برنامه بودند. و در واقع هیچ چیز دیگری در زبان گنجانده نشده است. همه چیز دیگر به کتابخانه زمان اجرا منتقل شد. بنابراین، بدخواهان گاهی از زبان C به عنوان یک زبان اسمبلی ساختاری یاد می کنند. اما هرچه با هم صحبت کردند، این رویکرد بسیار موفق بود. به لطف او، سطح جدیدی از نظر نسبت سادگی و قابلیت های زبانی به دست آمد.

با این حال، عامل دیگری وجود دارد که موفقیت این زبان را تعیین کرده است. سازندگان به طرز بسیار ماهرانه ای ویژگی های وابسته به ماشین و مستقل را در آن تقسیم کردند. به لطف این، بیشتر برنامه ها را می توان به صورت جهانی نوشت - عملکرد آنها به معماری پردازنده و حافظه بستگی ندارد. تعداد کمی از قسمت های کد وابسته به سخت افزار مشابه را می توان در ماژول های جداگانه محلی سازی کرد. و با استفاده از پیش پردازنده، می توانید ماژول هایی ایجاد کنید که وقتی روی پلتفرم های مختلف کامپایل شوند، کدهای وابسته به ماشین مربوطه را تولید می کنند.

نحو زبان C بحث های زیادی را ایجاد کرده است. اختصارات به کار رفته در آن در صورت استفاده بیش از حد می تواند برنامه را کاملاً ناخوانا کند. اما همانطور که دایکسترا گفت تقصیر ابزارها نیست که از آنها بی سواد استفاده می شود. در واقع، اختصارات نحو ارائه شده در C با رایج ترین موقعیت های کلیشه ای در عمل مطابقت دارد. اگر اختصارات اصطلاحی برای نمایش رسا و فشرده چنین موقعیت هایی در نظر گرفته شوند، مزایای آنها بی قید و شرط و آشکار می شود.

بنابراین، C به عنوان یک زبان برنامه نویسی سیستم جهانی ظاهر شد. اما او در این چارچوب باقی نماند. در پایان دهه 80، زبان C، با سوق دادن Fortran به عنوان رهبر، محبوبیت زیادی در بین برنامه نویسان در سراسر جهان به دست آورد و شروع به استفاده در طیف گسترده ای از وظایف کاربردی کرد. گسترش یونیکس (و از این رو C) در محیط دانشگاه ، جایی که نسل جدیدی از برنامه نویسان آموزش دیده بودند ، نقش مهمی در اینجا ایفا کرد.

مانند همه زبانها ، C به تدریج بهبود یافت ، اما بیشتر پیشرفتها رادیکال نبود. مهم ترین آنها را شاید باید معرفی مشخصات دقیق انواع توابع در نظر گرفت که به طور قابل توجهی قابلیت اطمینان تعامل بین مدولار را در C افزایش داد. همه این پیشرفت ها در سال 1989 در استاندارد ANSI گنجانده شد، که هنوز هم تعریف می کند. زبان C.

اما اگر همه چیز خیلی بی ابر است، پس چرا همه زبان های دیگر هنوز در حال استفاده هستند که از وجود آنها پشتیبانی می کند؟ پاشنه آشیل زبان C این بود که برای کارهایی که در دهه 90 در دستور کار قرار گرفتند بسیار سطح پایین بود. علاوه بر این، این مشکل دو جنبه دارد. از یک طرف، ابزارهای سطح پایین در زبان ساخته شده اند - اول از همه، این زبان با حافظه و حساب آدرس کار می کند. بی جهت نیست که تغییر در عمق بیت پردازنده ها برای بسیاری از برنامه های C بسیار دردناک است. از سوی دیگر ، C فاقد ابزارهای سطح بالا است - انواع داده ها و اشیاء انتزاعی ، چند شکلی ، مدیریت استثنا. در نتیجه، در برنامه های C، تکنیک اجرای وظیفه اغلب بر جنبه محتوایی آن غالب است.

اولین تلاش ها برای اصلاح این کاستی ها در اوایل دهه 1980 آغاز شد. حتی در آن زمان ، Bjarne Stroustrup در AT&T Bell Labs شروع به توسعه پسوند زبان C تحت نام کد کرد. سبک توسعه کاملاً با روحی که زبان C در آن ایجاد شد مطابقت داشت - ویژگیهای خاصی به منظور سهولت بیشتر کار افراد و گروههای خاص به آن وارد شد. اولین مترجم تجاری یک زبان جدید به نام C ++ در سال 1983 ظاهر شد. این یک پیش پردازشگر بود که برنامه را به کد C ترجمه کرد. با این حال، تولد واقعی این زبان را می توان انتشار کتاب استروستروپ در سال 1985 دانست. از این لحظه بود که C ++ شروع به محبوبیت جهانی کرد.

نوآوری اصلی در C ++ مکانیسم کلاس است که امکان تعریف و استفاده از انواع داده های جدید را فراهم می کند. برنامه نویس نمایش داخلی یک شی کلاس و مجموعه ای از روش های تابع برای دسترسی به این نمایش را توصیف می کند. یکی از اهداف گرامی در ایجاد C ++ تمایل به افزایش درصد استفاده مجدد از کدهای قبلاً نوشته شده بود. مفهوم کلاس‌ها مکانیزم ارثی را برای این کار پیشنهاد کرد. وراثت به شما این امکان را می دهد که کلاس های جدید (مشتق شده) با نمایش گسترده و متدهای اصلاح شده بدون تأثیر بر کد کامپایل شده کلاس های اصلی (پایه) ایجاد کنید. در عین حال، وراثت یکی از مکانیسم‌های پیاده‌سازی چندشکلی را فراهم می‌کند - مفهوم اساسی برنامه‌نویسی شی‌گرا، که طبق آن می‌توان از همان کد برای انجام همان نوع پردازش انواع داده‌های مختلف استفاده کرد. در واقع، پلی مورفیسم نیز یکی از روش های اطمینان از استفاده مجدد از کد است.

معرفی کلاس ها تمام نوآوری های زبان C ++ را تمام نمی کند. این یک مکانیسم مدیریت استثنایی ساختاریافته کامل را پیاده‌سازی می‌کند، که نبود آن در C نوشتن برنامه‌های قابل اعتماد را بسیار دشوار می‌کند، مکانیسم الگوسازی یک مکانیسم پیچیده نسل کلان است که عمیقاً در زبان تعبیه شده است و مسیر دیگری را برای استفاده مجدد از کد باز می‌کند، و خیلی بیشتر.

بنابراین، خط کلی توسعه زبان با هدف گسترش قابلیت‌های آن با معرفی ساختارهای سطح بالا جدید و در عین حال حفظ تا حد امکان سازگاری کامل با عملیات ANSI C. بود، به طوری که برنامه‌نویس در واقع کار مستقیم با حافظه و سیستم را متوقف می‌کند. نهادهای وابسته با این حال، این زبان دارای مکانیسم‌هایی نیست که توسعه‌دهنده را مجبور به ساختار صحیح برنامه کند و نویسندگان هیچ توصیه سیستماتیکی در مورد استفاده از ساختارهای نسبتاً پیچیده آن ارائه نکرده‌اند. آنها از ایجاد به موقع کتابخانه کلاس استاندارد که معمول ترین ساختار داده را پیاده سازی می کند ، مراقبت نکردند.

همه اینها به این واقعیت منجر شد که بسیاری از توسعه دهندگان مجبور شدند خود هزارتوهای معناشناسی زبان را کشف کنند و به طور مستقل اصطلاحات موفقی را جستجو کنند. به عنوان مثال، در مرحله اول توسعه زبان، بسیاری از سازندگان کتابخانه های کلاس به دنبال ایجاد یک سلسله مراتب کلاسی با یک کلاس پایه مشترک Object بودند. این ایده از اسمال تاک، یکی از معروف ترین زبان های شی گرا وام گرفته شده است. با این حال، معلوم شد که در C ++ کاملاً غیرقابل اجرا است - سلسله مراتب کتابخانه کلاس که به دقت فکر شده بود انعطاف ناپذیر بود و کار کلاس ها واضح نبود. برای اینکه کتابخانه‌های کلاس قابل استفاده باشند، باید در منبع تهیه می‌شدند.

ظاهر کلاس های قالب کاملاً این جهت توسعه را رد کرد. وراثت فقط در مواردی مورد استفاده قرار گرفت که نیاز به تولید نسخه تخصصی یک کلاس موجود بود. کتابخانه ها از طبقات مجزا و سلسله مراتب کوچک و نامرتبط تشکیل شدند. با این حال، استفاده مجدد از کد در طول مسیر شروع به کاهش کرد، زیرا C ++ نمی تواند به صورت چند شکلی از کلاس های سلسله مراتب مستقل استفاده کند. استفاده گسترده از الگوها منجر به افزایش غیرقابل قبول مقدار کد کامپایل شده می شود - فراموش نکنیم که الگوها با استفاده از روشهای تولید کلان پیاده سازی می شوند.

یکی از بزرگ‌ترین اشکالات C ++، که از نحو C به ارث رسیده است، این است که کامپایلر به توضیحی از ساختار داخلی همه کلاس‌های استفاده شده دسترسی دارد. در نتیجه، تغییر ساختار داخلی نمایش یک کلاس کتابخانه ای منجر به نیاز به کامپایل مجدد همه برنامه هایی می شود که در آن از این کتابخانه استفاده می شود. این امر توسعه دهندگان کتابخانه را از نظر نوسازی آنها بسیار محدود می کند، زیرا هنگام انتشار یک نسخه جدید، آنها باید سازگاری باینری را با نسخه قبلی حفظ کنند. این مشکل است که باعث می شود بسیاری از کارشناسان بر این باورند که C ++ برای اجرای پروژه های بزرگ و فوق بزرگ مناسب نیست.

و با این حال، با وجود کاستی های ذکر شده و حتی در دسترس نبودن استاندارد زبان (این پس از بیش از پانزده سال استفاده است!)، C ++ همچنان یکی از محبوب ترین زبان های برنامه نویسی است. قدرت آن ، اول از همه ، تقریباً با زبان C سازگاری کامل دارد. با تشکر از این ، برنامه نویسان C ++ به همه پیشرفت های ایجاد شده در C دسترسی دارند. در عین حال ، C ++ ، حتی بدون استفاده از کلاس ها ، تعدادی از چنین ویژگی ها و امکانات اضافی مهمی را به C معرفی می کند که بسیاری از آن به سادگی به عنوان یک C بهبود یافته استفاده می کنند.

در مورد مدل شیء ++ C ، تا زمانی که برنامه شما خیلی بزرگ نباشد (صدها هزار خط) ، استفاده از آن کاملاً امکان پذیر است. گرایش اخیر به سمت نرم افزار کامپوننت تنها موقعیت C ++ را تقویت می کند. هنگام توسعه اجزای جداگانه ، اشکالات C ++ هنوز ظاهر نمی شود و پیوند اجزاء به یک سیستم کار دیگر در سطح زبان نیست ، بلکه در سطح سیستم عامل است.

با توجه به همه موارد گفته شده ، چشم انداز C ++ مبهم به نظر نمی رسد. اگرچه انحصار بازار زبان های برنامه نویسی برای او نمی درخشد. شاید فقط بتوانیم با قاطعیت بگوییم که این زبان از نوسازی-توسعه دیگری جان سالم به در نخواهد برد. جای تعجب نیست که وقتی جاوا ظاهر شد، توجه زیادی به آن شد. این زبان که از نظر نحو به C ++ نزدیک است و بنابراین برای بسیاری از برنامه نویسان آشنا به نظر می رسد، از شر فاحش ترین کاستی های C ++ که از دهه 70 به ارث رسیده بود خلاص شده است. با این حال ، به نظر نمی رسد جاوا در حد نقشی باشد که برخی به آن محول کرده اند.

نقش ویژه زبان های C / C ++ در برنامه نویسی مدرن، ارائه آدرس های خاص در اینترنت را که می توانید مطالبی را در آنها پیدا کنید تقریباً بی معنی می کند. به سادگی مکان های زیادی مانند این وجود دارد. با این حال ، اگر علاقمند به کسب اطلاعات بیشتر در مورد تکامل C ++ هستید ، با یک مقاله کوتاه شروع کنید http://citforum.syzran.ru/programming/prg96/76.shtml.

الکساندر سرگیف، [ایمیل محافظت شده]
مقاله از مجله BYTE / روسیه ، مارس 2000

برای اینکه به وضوح استفاده از زبان های توصیف شده را در عمل نشان دهیم، مشکلی را انتخاب کردیم که در آن لازم بود یک سری اعداد صحیح را از ورودی استاندارد یا از یک فایل وارد کنیم و سپس فقط اعداد فرد و برعکس را خروجی کنیم. سفارش. این یکی از ساده‌ترین کارهایی است که اساساً برای حل آن نیاز به کار با آرایه‌ها، حلقه‌ها، شاخه‌بندی و I/O دارد و همچنین به شما امکان می‌دهد تا فراخوانی‌های زیر روال را نشان دهید. در عین حال قابل مشاهده است و به راحتی قابل درک است.

فهرست 1.C

1 #شامل / * اتصال توابع ورودی-خروجی * / 2 3 void main (void) 4 (5 int M؛ / * آرایه از 10 عدد صحیح، شمارش از 0 * / 6 int N؛ 7 برای (N = 0; N<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>= 0; --N) / * از طریق آرایه به صورت معکوس عبور کنید * / 12 اگر (M [N]% 2) / * سفارش دهید و موارد فرد را چاپ کنید * / 13 printf ("% d \ n"، M [N]); چهارده )

  • خط 3.در C / C ++، اجرای برنامه همیشه با تابع اصلی شروع می شود.
  • خطوط 7 و 11.در هدر حلقه، تنظیمات اولیه، شرایط ادامه و قانون محاسبه مجدد پارامتر حلقه با نقطه ویرگول از هم جدا شده اند. عملیات ++ و -/- - معروف ترین اختصارات زبان C به معنای افزایش و کاهش یک متغیر، یعنی افزایش و کاهش مقدار آن یک عدد.
  • خط 8.عملکرد scanfبا توجه به فرمت مشخص شده توسط پارامتر اول، مقادیر متغیرهایی که آدرس آنها توسط پارامترهای باقی مانده مشخص شده است را وارد می کند. در اینجا، آدرسی که مقدار وارد شده است با استفاده از حساب آدرس، به آدرس محل آرایه محاسبه می شود. میک افست اضافه شده است نعناصر. همین اثر را می توان با نوشتن به دست آورد & M [N].
  • خط 12.عمل % باقی مانده تقسیم را محاسبه می کند. وضعیت اپراتور اگراگر مقدار عددی عبارت غیر صفر باشد، تکمیل شده در نظر گرفته می شود.
  • خط 13.عملکرد printf- چاپ بر اساس فرمت به همین صورت عمل می کند scanf، اما به جای آدرس ها، مقادیری به آن ارسال می شود تا نمایش داده شود.
1 #شامل 2 3 قالب کلاس آرایه 4 (5 عمومی: آرایه (اندازه T = 1): M (T جدید)، N (اندازه)، n (0) () 6 آرایه (باطل) (حذف M؛) 7 T تعداد (باطل) ثابت ( return n؛) 8 اپراتور T (int i) const (بازگشت M [i] ؛) 9 خالی افزودن (داده T) ؛ 10 خصوصی: 11 T * M ؛ // آدرس حافظه اختصاص یافته 12 int N ، n ؛ // N - اختصاص داده شده؛ n - استفاده شده 13). قالب 14 15 آرایه خالی :: افزودن (T Data) 16 (اگر (N-n) // اگر همه 17 تخصیص داده شده (int * P = T جدید؛ // فضای استفاده شده است، بیش از 18 را برای (int i = 0; i) اختصاص دهید آ؛ // آرایه ای از اعداد صحیح با اندازه متغیر 28 در حالی که (1) // حلقه بی پایان 29 (int N; 30 cin >> N؛ // cin - جریان ورودی استاندارد 31 اگر (cin.eof ()) شکسته شود؛ // خروج از حلقه تا پایان فایل 32 A.Add (N)؛ // عدد وارد شده را به آرایه 33 اضافه کنید) 34 for (int N = A.Count () - 1; N> = 0; --N) // حلقه از طریق آرایه 35 if ( A [N]% 2) 36 cout<، و حافظه را آزاد می کند
  • خطوط 3-13.کلاس الگو اعلام شده است آرایهبا پارامتر تی... این یک آرایه با اندازه متغیر از اشیاء است تی... البته در وظیفه ما نیازی به استفاده از کلاس قالب نیست. با این حال ، ما می خواهیم نشان دهیم چگونه یک ساختار داده چند شکل در C ++ ایجاد می شود که می تواند با هر نوع عنصری کار کند.
  • خط 5.سازنده کلاس نمایش شی را مقدار دهی اولیه می کند. مثلا در زمینه مآدرس بلوک حافظه سفارش داده شده توسط عملیات وارد می شود تی جدید.
  • خط 8.نمونه ای از بارگذاری بیش از حد یک عملیات. عملکرد اپراتورزمانی فراخوانی می شود که براکت های مربع در سمت راست شی کلاس ظاهر شوند آرایه.
  • خط 9.این تابع در پیاده سازی اصلی است. عناصری را به آرایه اضافه می کند و در صورت نیاز آن را گسترش می دهد. از آنجا که پیچیده تر از بقیه است ، تعریف آن از شرح کلاس گرفته شده است. توابع توصیف شده در بدنه کلاس در C ++ نه با فراخوانی ، بلکه با جایگزینی درون خطی پیاده سازی می شوند. این باعث افزایش سرعت برنامه می شود ، اگرچه حجم آن را افزایش می دهد.
  • خطوط 15-24.تعریف تابع آرایه :: افزودن (T)(به هر حال، این نام کامل او است).
  • خط 27.ما یک شی از نوع ایجاد می کنیم آرایه... معبد آگاگوپارامتر بندی شده بر اساس نوع int.

C ++ (خوانده C-plus-plus) یک زبان برنامه نویسی همه منظوره کامپایل شده و تایپ شده استاتیک است که می تواند برای ایجاد برنامه های هر پیچیدگی استفاده شود.
بیش از 20 سال است که این زبان در بین سه زبان برنامه نویسی محبوب و مورد تقاضا قرار گرفته است. (شما می توانید با مراجعه به وب سایت TIOBE این موضوع را تأیید کنید).
این زبان در اوایل دهه 1980 آغاز شد، زمانی که کارمند آزمایشگاه بل، بیورن استروستروپ، تعدادی پیشرفت را برای زبان C ارائه کرد که مطابق با نیازهای خود باشد.

Bjarne Stroustrup - خالق زبان C ++

Stroustrup تصمیم گرفت که زبان C را با قابلیت های زبان Simula تکمیل کند. زبان C، زبان پایه سیستم یونیکس که کامپیوترهای بل بر روی آن کار می‌کردند، سریع، پر از امکانات و قابل حمل است. Stroustrup قابلیت کار با کلاس ها و اشیاء را به آن اضافه کرد. در نتیجه، مسائل عملی مدل‌سازی هم از نظر زمان توسعه (به دلیل استفاده از کلاس‌های شبیه به Simula) و هم از نظر زمان محاسبه (به دلیل سرعت C) برای حل در دسترس بودند.
در اینجا نحوه بیان خود توسعه دهنده زبان در مورد آن آمده است:



در سال 1998، اولین استاندارد زبان، معروف به C ++ 98، توسط کمیته استانداردسازی منتشر شد. C ++ برای برآوردن نیازهای مدرن به تکامل خود ادامه می دهد. یکی از گروه هایی که زبان C ++ را توسعه داده و پیشنهاداتی را برای بهبود آن به کمیته استانداردسازی C ++ ارسال می کند ، این است تقویت کنید، که از جمله به بهبود قابلیت های زبان با افزودن ویژگی های فرابرنامه نویسی به آن مشغول است. آخرین استاندارد در سال 2017 منتشر شد و نام دارد C ++ 17... استاندارد بعدی دیری نخواهد آمد و همانطور که انتظار می رود در سال 2020 ظاهر خواهد شد.
هیچ کس از حقوق زبان C ++ برخوردار نیست ، این زبان رایگان است. در مارس 2016، یک گروه کاری WG21 C ++ در روسیه ایجاد شد. این گروه برای جمع آوری پیشنهادات برای استاندارد C ++، ارسال آنها به کمیته و دفاع از آنها در جلسات عمومی سازمان بین المللی استاندارد سازماندهی شد.
C ++ یک زبان چند پارادایم (از کلمه پارادایم - سبک نوشتن برنامه های کامپیوتری) است که شامل طیف گسترده ای از سبک ها و فن آوری های مختلف برنامه نویسی است. اغلب از آن به عنوان یک زبان شی گرا یاد می شود، اما به طور دقیق اینطور نیست. در فرآیند کار، توسعه دهنده در انتخاب ابزارها آزادی مطلق به دست می آورد تا مشکل حل شده با استفاده از یک یا روش دیگر تا حد امکان کارآمد حل شود. به عبارت دیگر، C ++ برنامه نویس را مجبور نمی کند که فقط به یک سبک توسعه برنامه (مثلاً شی گرا) پایبند باشد.
C ++ دارای یک کتابخانه استاندارد غنی است که شامل کانتینرها و الگوریتم های رایج، I/O، عبارات منظم، پشتیبانی از چند رشته و غیره است. ++C بر بسیاری از زبان های برنامه نویسی از جمله: Java، C#، D تأثیر گذاشته است. از آنجایی که C ++ متعلق به خانواده زبان های مبتنی بر نحو زبان C است، می توانید به راحتی به سایر زبان های برنامه نویسی این خانواده تسلط داشته باشید. : JavaScript، PHP، Perl، Objective-C و بسیاری دیگر. دیگران، از جمله خود زبان مادر - C. ()
زبان C ++ در طول وجود خود، افسانه‌های پایداری را ایجاد کرده است که به راحتی رد می‌شوند (اینجا را ببینید: قسمت 1 و قسمت 2)

تاریخچه زبان و انتشار استانداردها

1983

خالق زبان - بیورن استروستروپ، کارمند آزمایشگاه بل، نسخه اولیه C ++ را معرفی کرد ("C با کلاس ها")

1985

اولین نسخه تجاری C ++ ، این زبان نام امروزی خود را به خود گرفت

1986

اولین ویرایش زبان برنامه نویسی C ++، یک کتاب C ++ نوشته شده توسط Björn 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، یک سیستم فایل مبتنی بر سیستم فایل تقویتی ::، و بیشتر کتابخانه تجربی TS I است.

2020

C ++ 20 نام غیر رسمی استاندارد ISO / IEC برای زبان برنامه نویسی C ++ است که پس از C ++ 17 انتظار می رود. پیش نویس استاندارد N4800.

فلسفه C ++

در طراحی و تکامل C ++ (2007)، Björne 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")؛ بازگشت 0;)

این به این دلیل است که ثابت های کاراکتر در C از نوع int و در C ++ از نوع char هستند، اما اندازه این نوع ها متفاوت است.

مدل های چرخه عمر برنامه

چرخه زندگینرم افزار دوره زمانی است که از لحظه تصمیم گیری در مورد نیاز به ایجاد یک محصول نرم افزاری شروع می شود و در زمان بازنشستگی کامل آن به پایان می رسد. این چرخه فرآیند ساخت و توسعه نرم افزار (نرم افزار) است. چندین مدل چرخه زندگی وجود دارد.
مدل آبشاریمدل چرخه زندگی در سال 1970 توسط وینستون رویس پیشنهاد شد. اجرای متوالی تمام مراحل پروژه را به ترتیب کاملاً ثابت فراهم می کند. انتقال به مرحله بعدی به معنای تکمیل کامل کار در مرحله قبل است. الزامات مشخص شده در مرحله تشکیل الزامات به طور دقیق در قالب یک تکلیف فنی ثبت شده و برای کل مدت توسعه پروژه ثبت می شود. هر مرحله با انتشار مجموعه کاملی از اسناد به پایان می رسد که برای ادامه توسعه توسط تیم توسعه دیگری کافی است.
مراحل پروژه با توجه به مدل آبشار:

  1. تشکیل الزامات؛
  2. طرح؛
  3. پیاده سازی؛
  4. آزمایش کردن؛
  5. پیاده سازی؛
  6. عملیات و نگهداری.

در مدل آبشاری، انتقال از یک فاز پروژه به فاز دیگر، صحت کامل نتیجه فاز قبلی را فرض می کند. در پروژه های بزرگ، دستیابی به این امر تقریبا غیرممکن است. بنابراین ، این مدل فقط برای توسعه یک پروژه کوچک مناسب است. (خود دبلیو رویس به این مدل پایبند نبود و از مدل تکراری استفاده کرد).
مدل تکراری
یک جایگزین برای مدل آبشار، مدل توسعه تکراری و افزایشی (IID) است که از T. Gilb در دهه 70 بدست آمد. نام مدل تکاملی مدل IID تقسیم چرخه عمر پروژه را به مجموعه‌ای از تکرارها فرض می‌کند، که هر کدام شبیه به یک «پروژه کوچک» است، که شامل تمام فرآیندهای توسعه برای ایجاد قطعات کوچک‌تر از عملکرد، در مقایسه با پروژه به عنوان یک کل است. . هدف هر تکرار به دست آوردن یک نسخه کارآمد از سیستم نرم افزاری است که شامل عملکردی است که توسط محتوای یکپارچه تمام تکرارهای قبلی و فعلی تعریف شده است. نتیجه تکرار نهایی شامل تمام عملکردهای مورد نیاز محصول است. بنابراین، با تکمیل هر تکرار، محصول یک افزایش - یک افزایش - به قابلیت های خود دریافت می کند، که بنابراین، به طور تکاملی توسعه می یابد.


نسخه های مختلف رویکرد تکراری در اکثر روشهای توسعه مدرن پیاده سازی شده است:

فرآیند توسعه - فرآیند یکپارچه منطقی (RUP)

فرآیند یکپارچه منطقی (RUP)(Rational Unified Process) یک متدولوژی توسعه نرم افزار است که توسط Rational Software (IBM) پشتیبانی می شود. این روش توصیه هایی را برای تمام مراحل توسعه ارائه می دهد: از مدل سازی کسب و کار گرفته تا آزمایش و راه اندازی برنامه نهایی. زبان مدل سازی یکپارچه (UML) به عنوان زبان مدل سازی استفاده می شود.
چرخه عمر کامل توسعه محصول شامل چهار مرحله است که هر مرحله شامل یک یا چند تکرار است.

  • مرحله اولیه (شروع)
  • محدوده پروژه و میزان منابع مورد نیاز را تعیین کنید. الزامات اساسی ، محدودیت ها و قابلیت های کلیدی محصول مشخص شده است. ریسک ها ارزیابی می شوند. برنامه ریزی عملی در پایان مرحله اولیه، دستیابی به نقطه عطف هدف چرخه حیات ارزیابی می شود که مستلزم توافق سهامداران در مورد ادامه پروژه است.

  • پیچیدگی
  • الزامات مستندسازی طراحی ، پیاده سازی و آزمایش معماری اجرایی. توضیح شرایط و هزینه. کاهش خطرات عمده تکمیل موفقیت آمیز مرحله توسعه به معنای رسیدن به نقطه عطف معماری چرخه حیات است.

  • ساخت و ساز
  • در مرحله ساخت، بیشتر قابلیت های محصول اجرا می شود: طراحی برنامه کامل شده است، کد منبع نوشته می شود. مرحله ساخت با اولین نسخه خارجی سیستم و نقطه عطف قابلیت عملیاتی اولیه به پایان می رسد.

  • انتقال
  • در مرحله "پیاده سازی"، نسخه نهایی محصول ایجاد و از توسعه دهنده به مشتری منتقل می شود. این شامل یک برنامه آزمایش بتا، آموزش کاربر، و تعیین کیفیت محصول است. اگر کیفیت انتظارات کاربران یا معیارهای تعیین شده در مرحله Start را برآورده نکند ، مرحله پیاده سازی مجدداً تکرار می شود. دستیابی به همه اهداف به معنای رسیدن به نقطه عطف انتشار محصول و تکمیل چرخه توسعه کامل است.



"فناوری اطلاعات. مهندسی سیستم و نرم افزار. فرآیندهای چرخه عمر نرم افزار ". این استاندارد توسط آژانس فدرال مقررات فنی و مترولوژی فدراسیون روسیه پذیرفته شده است و مشابه استاندارد بین المللی ISO / IEC 12207: 2008 است. این استاندارد یک چارچوب کلی برای فرآیندهای چرخه عمر نرم افزار ایجاد می کند که می تواند در صنعت نرم افزار هدایت شود. این استاندارد مدل خاصی از چرخه زندگی را ارائه نمی دهد. مفاد آن برای هر مدل چرخه عمر، روش ها و فناوری های ایجاد نرم افزار مشترک است. ساختار فرآیندهای چرخه عمر را بدون مشخص کردن نحوه پیاده سازی یا انجام فعالیت ها و وظایف موجود در این فرآیندها توصیف می کند.

ارائه درس
موضوعات پیام رسانی
  • بنیاد نرم افزار رایگان (FSF)
  • مجوزهای نرم افزار رایگان
  • نرم افزار آزاد و منبع باز
  • تاریخچه توسعه زبان های برنامه نویسی
  • تاریخچه C. C و C ++
  • تاریخ
  • C ++ انتقاد
  • تاریخچه یونیکس
  • مدل چرخه عمر نرم افزار مارپیچ
  • UML (زبان مدلسازی یکپارچه انگلیسی)
  • چارچوب راه حل های مایکروسافت
  • IDE برای برنامه نویسی C / C ++ در ویندوز
  • کامپایلرهای C / C ++
  • ساخت اپلیکیشن کنسول در ویندوز
سوالات
  1. چرا مدل آبشاری توسعه نرم افزار در پروژه های بزرگ اعمال نمی شود؟
  2. تفاوت بین مدل های توسعه آبشار و تکراری چیست؟
  3. مراحل توسعه نرم افزار در متدولوژی Rational Unified Process (RUP) را فهرست کنید

چرا C ++

C ++ در حال حاضر زبان غالبی است که برای توسعه محصولات نرم افزاری تجاری استفاده می شود. در سال های اخیر، این تسلط به دلیل ادعاهای مشابه زبان برنامه نویسی مانند جاوا، اندکی نوسان داشته است، اما آونگ افکار عمومی به سمت دیگری تغییر کرده است و بسیاری از برنامه نویسانی که C ++ را برای جاوا کنار گذاشته اند، اخیراً به سرعت بازگشته اند. به محبت قدیمی اش در هر صورت ، این دو زبان آنقدر شبیه به هم هستند که با یادگیری یکی از آنها ، به طور خودکار بر 90٪ از زبان دیگر مسلط می شوید.

C# زبان جدیدی است که توسط مایکروسافت برای پلتفرم شبکه توسعه یافته است. در اصل، C # نوعی C ++ است و با وجود تعدادی تفاوت اساسی، زبان های C # و C ++ حدود 90٪ منطبق هستند. احتمالاً زمان زیادی طول خواهد کشید تا C # به رقیب جدی C ++ تبدیل شود. اما حتی اگر این اتفاق بیفتد ، دانستن زبان C ++ یک مزیت مهم است.

C ++ یک زبان برنامه نویسی همه منظوره است. زمینه طبیعی کاربرد آن برنامه نویسی سیستمی است که به معنای وسیع کلمه درک می شود. علاوه بر این ، C ++ با موفقیت در بسیاری از مناطق برنامه کاربردی که بسیار فراتر از محدوده مشخص شده است مورد استفاده قرار گرفته است. در حال حاضر پیاده سازی های C ++ در همه ماشین ها، از فروتن ترین ریز کامپیوترها تا بزرگترین ابرکامپیوترها، تا تقریبا تمام سیستم عامل ها، یافت می شوند.

پیدایش و تکامل زبان C ++

Bjarne Stroustrup توسعه دهنده زبان C ++ و خالق اولین مترجم است. او عضو مرکز محاسبات تحقیقاتی AT&T Bell در موری هیل، نیوجرسی، ایالات متحده آمریکا است. او کارشناسی ارشد خود را در رشته ریاضیات و علوم کامپیوتر از دانشگاه آروس (دانمارک) و دکترای خود را در رشته علوم کامپیوتر از دانشگاه کمبریج (انگلیس) دریافت کرد. او در سیستم های توزیع شده، سیستم عامل ها، مدل سازی و برنامه نویسی تخصص دارد. او به همراه M. A. Ellis نویسنده راهنمای کامل زبان C ++، کتاب راهنمای C ++ با یادداشت‌ها است.

البته C ++ تا حد زیادی مدیون زبان C است که به عنوان زیر مجموعه آن حفظ شده است. تمام ابزارهای سطح پایین ذاتی C نیز حفظ شده اند، که برای حل فوری ترین مشکلات برنامه نویسی سیستم طراحی شده اند. C، به نوبه خود، مدیون زبان قبلی خود، زبان BCPL است. نظر BCPL به C ++ بازیابی شده است. منبع الهام دیگر زبان SIMULA-67 بود. از اینجا بود که مفهوم کلاس ها (همراه با کلاس های مشتق شده و توابع مجازی) به عاریت گرفته شد. توانایی C ++ در بارگذاری بیش از حد اپراتورها و آزادی قرار دادن توضیحات در هر جایی که ممکن است یک اپراتور ظاهر شود، یادآور زبان Algol-68 است.

نسخه‌های قبلی این زبان، به نام «C با کلاس‌ها» از سال 1980 مورد استفاده قرار گرفته‌اند. این زبان به این دلیل به وجود آمد که نویسنده نیاز به نوشتن شبیه‌سازهای مبتنی بر وقفه داشت. اگر کارایی در نظر گرفته نشود، زبان SIMULA-67 برای این کار ایده آل است. زبان C with Classes برای کارهای مدلسازی بزرگ استفاده شد. سپس امکان نوشتن برنامه هایی بر روی آن، که منابع زمان و حافظه برای آنها حیاتی است، تحت آزمایش سختی قرار گرفت. این زبان فاقد بارگذاری بیش از حد عملیات، مراجع، توابع مجازی و بسیاری ویژگی های دیگر بود. برای اولین بار، C ++ از گروه تحقیقاتی که نویسنده در ژوئیه 1983 در آن کار می کرد فراتر رفت، اما پس از آن بسیاری از ویژگی های C ++ هنوز توسعه نیافته بودند.

نام C ++ (si به اضافه پلاس)، توسط ریک ماسیتی در تابستان 1983 ابداع شد. این نام نشان دهنده ماهیت تکاملی تغییرات در زبان C است. نام ++ به عملیات افزایش C اشاره دارد. نام کمی کوتاهتر C + یک خطای نحوی است. علاوه بر این، قبلاً به عنوان نام یک زبان کاملاً متفاوت استفاده شده است. صاحب نظران معناشناسی C متوجه می شوند که C ++ از ++ C بدتر است. این زبان D نامگذاری نشده است، زیرا این زبان پسوند C است و سعی نمی کند هیچ مشکلی را به قیمت کنار گذاشتن قابلیت های C حل کند. تعبیر جالب دیگری از نام C ++ را می توان در ضمیمه یافت. .

در ابتدا C ++ به گونه ای تصور شد که نویسنده و دوستانش نیازی به برنامه نویسی در اسمبلی ، C یا سایر زبانهای سطح بالا مدرن ندارند. هدف اصلی آن ساده سازی و خوشایندتر کردن فرآیند برنامه نویسی برای هر برنامه نویس است. تا همین اواخر، برنامه توسعه C ++ کاغذی وجود نداشت. طراحی، اجرا و مستندسازی به موازات هم پیش رفت. هرگز "پروژه C ++" یا "کمیته توسعه C ++" وجود نداشته است. بنابراین، زبان تکامل یافته و همچنان به تکامل خود ادامه می دهد تا بر تمام مشکلاتی که کاربران با آن مواجه هستند غلبه کند. بحث های نویسنده با دوستان و همکارانش نیز به عنوان انگیزه ای برای توسعه عمل می کند.

از زمان انتشار اولین ویرایش این کتاب، زبان C ++ دستخوش تغییرات و اصلاحات قابل توجهی شده است. عمدتاً با ابهام زدایی در بارگذاری بیش از حد، اتصال و مدیریت حافظه سروکار دارد. با این حال، تغییرات جزئی برای افزایش سازگاری با زبان C انجام شد. چندین تعمیم و پسوندهای مهم نیز معرفی شدند، مانند ارث بری چندگانه، توابع عضو با مشخصات ثابت و ثابت، اعضای محافظت شده، قالب‌های نوع و مدیریت موقعیت‌های خاص. تمام این افزونه‌ها و پیشرفت‌ها با هدف تبدیل C ++ به زبانی بود که می‌توان در آن کتابخانه‌ها ایجاد و استفاده کرد. همه تغییرات در شرح داده شده است.

سایر برنامه های افزودنی که بین سال های 1985 و 1991 معرفی شدند (مانند وراثت چندگانه، توابع عضو استاتیک، و توابع مجازی خالص) از تعمیم تجربه برنامه نویسی C ++ به جای زبان های دیگر تکامل یافته اند.

توسعه های زبان ساخته شده در این شش سال در درجه اول با هدف افزایش بیان C ++ به عنوان یک زبان انتزاعی داده و برنامه نویسی شی گرا به طور کلی، و به عنوان وسیله ای برای ایجاد کتابخانه های با کیفیت بالا با انواع داده های تعریف شده توسط کاربر بود. به خصوص.

در حدود سال 1987، آشکار شد که کار برای استانداردسازی C ++ قریب الوقوع است و باید فوراً پایه و اساس آن آغاز شود.

AT&T Bell Laboratories سهم عمده ای در این کار داشته است. حدود 100 نماینده از حدود 20 سازمان در مورد آنچه که نسخه فعلی راهنمای استاندارد استانداردسازی ANSI و منبع منبع شده است، بررسی و نظر دادند. C ++. سرانجام، به ابتکار هیولت پاکارد، کمیته X3J16 در ANSI در دسامبر 1989 تشکیل شد. انتظار می رود که کار بر روی استانداردسازی C ++ در ANSI (استاندارد آمریکایی) بخشی از کار استانداردسازی توسط ISO (سازمان بین المللی استاندارد) باشد.

C ++ همزمان با توسعه برخی از کلاس های بنیادی تکامل یافته است.