-
فرشید پوشنده
1405/05/22
-
22 مرداد 1405
بازگشت به: آموزش برنامه نویسی c++ سی پلاس پلاس
۰.۳ — آشنایی با C/C++
قبل از C++، زبان C بود
زبان C در سال ۱۹۷۲ توسط دنیس ریچی (Dennis Ritchie) در آزمایشگاههای تلفن بل (Bell Telephone Laboratories) توسعه یافت. هدف اصلی از طراحی C، ایجاد یک زبان برنامهنویسی سیستمی (Systems Programming Language) بود — زبانی برای نوشتن سیستمعاملها.
اهداف اصلی ریچی در طراحی C عبارت بودند از:
تولید زبانی حداقلی (Minimalistic) که کامپایل آن آسان باشد.
امکان دسترسی کارآمد به حافظه.
تولید کد کارآمد و سریع.
خودکفا بودن (عدم وابستگی به برنامههای دیگر).
C به عنوان یک زبان سطح بالا طراحی شد تا کنترل زیادی به برنامهنویس بدهد و در عین حال امکان نوشتن برنامههایی را فراهم کند که روی پلتفرمهای مختلف قابل اجرا باشند.
C آنقدر کارآمد و انعطافپذیر بود که در سال ۱۹۷۳، ریچی و کن تامپسون (Ken Thompson) بخش اعظم سیستمعامل یونیکس (Unix) را با استفاده از C بازنویسی کردند. بسیاری از سیستمعاملهای قبلی به زبان اسمبلی نوشته شده بودند. برخلاف اسمبلی که برنامههایی تولید میکند که فقط روی CPUهای خاص قابل اجرا هستند، C قابلیت حملونقل (Portability) عالی داشت و به یونیکس امکان میداد به راحتی روی انواع مختلف کامپیوترها کامپایل شود و این امر به پذیرش گسترده آن کمک کرد. سرنوشت C و یونیکس به هم گره خورد و محبوبیت C تا حدی مدیون موفقیت یونیکس به عنوان یک سیستمعامل بود.
در سال ۱۹۷۸، برایان کرنیگان (Brian Kernighan) و دنیس ریچی کتابی به نام «زبان برنامهنویسی C» (The C Programming Language) منتشر کردند. این کتاب که معمولاً با نام K&R (بر اساس حروف اول نام خانوادگی نویسندگان) شناخته میشود، یک مشخصات غیررسمی برای زبان C ارائه داد و به یک استاندارد عملی (De Facto Standard) تبدیل شد. زمانی که حداکثر قابلیت حملونقل مورد نیاز بود، برنامهنویسان به توصیههای K&R پایبند میماندند، زیرا اکثر کامپایلرهای آن زمان بر اساس استانداردهای K&R پیادهسازی شده بودند.
در سال ۱۹۸۳، موسسه ملی استانداردهای آمریکا (ANSI) کمیتهای را برای تدوین یک استاندارد رسمی برای C تشکیل داد. در سال ۱۹۸۹ (کمیتهها برای انجام هر کاری زمان زیادی میبرند!)، کار خود را به پایان رساندند و استاندارد C89 را منتشر کردند که بیشتر با نام ANSI C شناخته میشود. در سال ۱۹۹۰، سازمان بینالمللی استانداردسازی (ISO) استاندارد ANSI C را (با چند تغییر جزئی) پذیرفت. این نسخه از C به C90 معروف شد. کامپایلرها به تدریج با ANSI C/C90 سازگار شدند و برنامههایی که حداکثر قابلیت حملونقل را میخواستند، بر اساس این استاندارد نوشته میشدند.
در سال ۱۹۹۹، کمیته ISO نسخه جدیدی از C را منتشر کرد که به طور غیررسمی C99 نامیده شد. C99 بسیاری از ویژگیهایی را پذیرفت که قبلاً به عنوان افزونه (Extension) به کامپایلرها راه یافته بودند یا در C++ پیادهسازی شده بودند.
تاریخچه C++
زبان C++ (تلفظ: «سی پلاس پلاس») توسط بیارنه استراستروپ (Bjarne Stroustrup) در آزمایشگاههای بل به عنوان یک افزونه بر روی زبان C، از سال ۱۹۷۹ آغاز شد. C++ ویژگیهای جدید بسیاری را به زبان C اضافه میکند و شاید بتوان آن را به عنوان ابرمجموعهای (Superset) از C در نظر گرفت، اگرچه این موضوع کاملاً دقیق نیست (زیرا C99 ویژگیهایی را معرفی کرد که در C++ وجود ندارند).
نوآوری قابلتوجه C++ نسبت به C، پشتیبانی از برنامهنویسی شیءگرا (Object-Oriented Programming) است. در مورد اینکه «شیء» چیست و چه تفاوتی با روشهای سنتی برنامهنویسی دارد، در فصلهای بعدی به تفصیل صحبت خواهیم کرد.
C++ در سال ۱۹۹۸ توسط کمیته ISO استانداردسازی شد. این به این معناست که کمیته استانداردهای ISO سندی (به نام سند استاندارد) را تصویب کرد که توصیف رسمی از زبان C++ را ارائه میدهد. هدف از استانداردسازی، کمک به اطمینان از رفتار یکسان کد C++ در کامپایلرها و پلتفرمهای مختلف است.
یک بهروزرسانی جزئی از این زبان در سال ۲۰۰۳ منتشر شد که به طور غیررسمی C++03 نامیده میشود.
از آن زمان تاکنون، پنج بهروزرسانی عمده برای زبان C++ (با نامهای غیررسمی C++11، C++14، C++17، C++20 و C++23) منتشر شده است که هر کدام قابلیتهای جدیدی را اضافه کردهاند. بهویژه C++11 تعداد زیادی قابلیت جدید اضافه کرد و به طور گسترده به عنوان نسخه پایه جدید این زبان در نظر گرفته میشود. انتظار میرود بهروزرسانیهای بعدی این زبان هر سه سال یا حدوداً همین مقدار انجام شوند.
از آنجایی که نام رسمی استانداردهای تصویبشده پیچیده است (نام رسمی C++20، ISO/IEC 14882:2020 است)، استانداردها معمولاً با نامهای غیررسمی شامل دو رقم آخر سال انتشار (یا انتشار مورد انتظار) شناخته میشوند. برای مثال، C++20 به نسخهای از زبان اشاره دارد که در سال ۲۰۲۰ منتشر شده است.
فلسفه طراحی C و C++
فلسفه طراحی زیربنایی C و C++ را میتوان با جمله «به برنامهنویس اعتماد کن» (Trust the Programmer) خلاصه کرد — که هم فوقالعاده است و هم خطرناک! C++ به گونهای طراحی شده است که درجه بالایی از آزادی را به برنامهنویس بدهد تا هر کاری که میخواهد انجام دهد. با این حال، این بدان معناست که زبان اغلب شما را از انجام کارهایی که منطقی به نظر نمیرسند، باز نمیدارد، زیرا فرض میکند که شما به دلیلی که خودش نمیفهمد، این کار را انجام میدهید.
تلههای (Pitfalls) زیادی وجود دارند که برنامهنویسان تازهکار در صورت بیخبری، به احتمال زیاد در آنها گرفتار میشوند. این یکی از دلایل اصلی است که میدانیم آنچه نباید در C/C++ انجام داد تقریباً به همان اندازه مهم است که میدانیم چه کاری باید انجام داد.
C++ در چه زمینههایی کاربرد دارد؟
C++ در موقعیتهایی که به عملکرد بالا و کنترل دقیق بر حافظه و سایر منابع نیاز است، عالی عمل میکند. در ادامه چند نمونه از کاربردهای C++ آورده شده است:
بازیهای ویدیویی
سیستمهای بیدرنگ (Real-Time Systems) (مانند سیستمهای حملونقل، تولید و غیره)
برنامههای مالی با عملکرد بالا (مانند معاملات با فرکانس بالا)
برنامههای گرافیکی و شبیهسازی
برنامههای بهرهوری و اداری
نرمافزارهای توکار (Embedded Software)
پردازش صدا و تصویر
هوش مصنوعی و شبکههای عصبی
علاوه بر این، C++ دارای کتابخانههای شخص ثالث (Third-Party) با کیفیت بالایی است که میتوانند زمان توسعه را به طور قابلتوجهی کاهش دهند.
آیا C++ در حال مرگ است؟
خیر! نظرسنجیها به طور مداوم نشان میدهند که C++ دومین یا سومین زبان کامپایلری محبوب (پس از Java و گاهی C# و درست جلوتر از C) و پنجمین یا ششمین زبان محبوب به طور کلی (به استثنای HTML، SQL و زبانهای اسکریپتنویسی شل) است.
C++ یکی از محبوبترین زبانها برای یادگیری برنامهنویسی است که به دلیل فراوانی منابع آموزشی، جامعه بزرگ و تعداد دورههای دانشگاهی که آن را تدریس میکنند، همچنان جایگاه خود را حفظ کرده است.
با بهروزرسانیهای زبان هر سه سال، تعداد زیاد کتابخانههای شخص ثالث مفید و تسلط بر صنعت همیشه محبوب بازیهای ویدیویی، C++ همچنان به شکوفایی خود ادامه میدهد.
آیا برای شروع این آموزشها نیاز به دانستن C دارم؟
خیر! شروع با C++ کاملاً مناسب است و ما هر آنچه را که نیاز دارید بدانید (از جمله تلههایی که باید از آنها دوری کنید) در طول مسیر به شما آموزش خواهیم داد.
پس از یادگیری C++، اگر روزی نیاز پیدا کنید، یادگیری C استاندارد برای شما بسیار آسان خواهد بود. امروزه، C بیشتر برای موارد استفاده تخصصی استفاده میشود: کدهایی که روی دستگاههای توکار (Embedded) اجرا میشوند، زمانی که نیاز به تعامل با زبانهای دیگری دارید که فقط با C رابط دارند، و غیره. برای اکثر موارد دیگر، C++ توصیه میشود.
خلاصه درس
زبان C در سال ۱۹۷۲ توسط دنیس ریچی برای نوشتن سیستمعاملها طراحی شد.
C زبانی حداقلی، کارآمد و قابلحمل است.
کتاب K&R اولین استاندارد عملی C بود.
استانداردهای رسمی C شامل C89 (ANSI C)، C90 و C99 هستند.
C++ توسط بیارنه استراستروپ به عنوان افزونهای بر C توسعه یافت.
C++ از برنامهنویسی شیءگرا پشتیبانی میکند.
C++ در سال ۱۹۹۸ استاندارد شد و بهروزرسانیهای مهمی مانند C++11، C++14، C++17، C++20 و C++23 دریافت کرد.
فلسفه C++ «اعتماد به برنامهنویس» است که هم قدرتمند و هم خطرناک است.
C++ در بازیسازی، سیستمهای بیدرنگ، مالی، گرافیک، هوش مصنوعی و بسیاری زمینههای دیگر کاربرد دارد.
C++ زبانی زنده و پویا است و همچنان محبوبیت بالایی دارد.
برای شروع این آموزشها، نیازی به دانستن C ندارید.
سوالات متداول
سوال: آیا برای یادگیری C++ نیاز به پیشنیاز خاصی دارم؟
خیر. این آموزشها از سطح صفر شروع میشوند و تمام مفاهیم پایه را پوشش میدهند.
سوال: کدام نسخه از C++ را یاد بگیرم؟
این آموزشها بر اساس استاندارد C++17 و C++20 طراحی شدهاند که جدیدترین و کاملترین ویژگیهای زبان را پوشش میدهند.
سوال: آیا C++ برای تازهکارها مناسب است؟
بله! اگرچه C++ زبانی قدرتمند و پیچیده است، اما با رویکرد گامبهگام و مثالهای فراوان، برای مبتدیان نیز کاملاً مناسب است.