++C رتبه چهارم را در رتبه بندی محبوب ترین زبان های برنامه نویسی IEEE دارد. یادگیری ++C سرمایه گذاری عاقلانه برای همه ی برنامه نویسان است. در این مطلب شما را با تاریخچه، ویژگی ها، نحوه ران کردن و همه نکات مهمی که باید بدانید آشنا می کنیم.
زبان برنامه نویسی C++ چیست؟
C++ زبانی پیچیده، کارآمد و جامع است که بر پایه ی C طراحی و در سال ۱۹۷۹ توسط بی یارنه استراس تروپ توسعه داده شده است.
بسیاری از سیستم عامل های فعلی، سیستم درایور ها، مرورگرها و بازی ها از C++ به عنوان زبان اصلی خود استفاده می کنند که باعث می شود C++ از محبوب ترین زبان های امروز باشد. از آن جایی که نسخه پیشرفته و تعمیم یافته زبان C است، C و C++ اغلب به عنوان C/C++ نام گذاری می شوند.
تاریخچه C++
زمانی که بی یارنه استراس تروپ در سال ۱۹۷۹ در AT&T Bell Labs کار میکرد با مشکلاتی در زمینه تحلیل کرنل UNIX برای سیستم های توزیع شده مواجه شد. زبان آن یا بسیار کند و یا بسیار سطح پایین بود. از این رو تصمیم گرفت زبان جدیدی ایجاد کند.
وی برای ساخت این زبان جدید C را انتخاب کرد. دلیل این مسئله آن بود که C یک زبان عمومی، کارآمد و سریع بود. او از دانش خود در زمینه مدل شی گرای زبان SIMULA استفاده کرد و کار روی بسط کلاس ها به زبان C را آغاز نمود. هدف او ایجاد زبانی بود که سطوح بالاتری از تجرید را داشته باشد و همزمان کارایی زبان C نیز حفظ شود.
زبان برنامهنویسی جدید به صورت C withClasse نام گذاری شد اما در ادامه به C++ تغییر کرد. (منظور از ++ اشاره به عملگر افزایشی در زبان C دارد.)
- C++98 زمانی که C++ نخستین بار در سال ۱۹۸۵ منتشر شد، هیچ استاندارد رسمی در موردش وجود نداشت. اولین نسخه استاندارد شده این زبان در سال ۱۹۹۸ انتشار یافت که با نام C++98 شناخته میشود.
- C++03 در سال ۲۰۰۳ نسخه جدید C++ انتشار یافت. C++03 در واقع اصلا استاندارد جدیدی محسوب نمیشد اما برخی مشکلات نسخه C++98 در آن حل شده بود تا یکپارچگی و پرتابل بودن بیشتری تضمین شود.
- C++11) C++0X) استاندارد بعدی زبان C++ در سال ۲۰۱۱ انتشار یافت و با نام C++11 شناخته شد. از آنجا که کمیته C++ مطمئن بود که این نسخه در سال ۲۰۰۹ انتشار خواهد یافت، نام آن را C++0X گذاشت. بعدا به دلیل عدم انتشار این نسخه، Stroustrup این شوخی را مطرح کرد که C++0X به صورت هگزا دسیمال C++0xB تبدیل شده است که معادل C++11 است.
- C++14 ) C++1y) استاندارد C++14 در سال ۲۰۱۴ منتشر شد و مانند C++03 شامل رفع ایرادات و برخی بهبود های جزئی نسبت به C++11 است.
- C++17 ) C++1z) نسخه بعدی از این زبان به نام C++17 در سال ۲۰۱۷ منتشر شد و آخرین نسخه انتشار یافته این زبان محسوب میشود. در این نسخه ویژگی های جدیدی به این زبان اضافه شده است.
ویژگی های C++
C++ به علت عمومی بودن دارای قابلیت های متنوعی است. پرداختن به همه این قابلیت ها کاری زمان بر است. در این جا برخی از قابلیت های مهم این زبان را که باید بدانید ارائه داده ایم.
۱-C++ سریع است: از آنجا که C++ نسخه بسط یافتهای از C است، بخش زبان C آن کاملاً سطح پایین است. این امر موجب ارتقای زیادی در سرعت آن شده است که زبانهای سطح بالا مانند پایتون یا جاوا نمیتوانند ارائه کنند.
۲- C++ دارای نوعبندی صریح است: C++ یک زبان با بیان نوع صریح است، یعنی این زبان به کامپایلر امکان حدس نوع داده ها را نمیدهد. برای نمونه در این زبان نمیتوانید عدد ۱۰ را به صورت “۱۰” بنویسید و انتظار داشته باشید که C++ متوجه شود رشته است. بدین ترتیب کامپایلر میتواند خطا های موجود در نوع داده را پیش از اجرای برنامه تشخیص دهد.
۳- C++ زبان برنامهنویسی چند پارادایمی است C++: از حداقل ۷ سبک مختلف برنامه نویسی پشتیبانی میکند و توسعه دهنده ها آزادی عمل انتخاب هر یک را به دلخواه دارند. برخلاف جاوا و پایتون در این زبان مجبور نیستید از اشیا برای حل همه وظایف استفاده کنید. شما میتوانید سبک برنامه نویسی که با خواست شما سازگارتر است انتخاب کنید.
۴- برنامهنویسی شی گرا با C++ امکان پذیر است: برنامهنویسی شی گرا به حل مسائل پیچیده کمک میکند. با بهرهگیری از مفاهیم شی گرایی در C++ میتوان مسائل پیچیده را با ساخت اشیا به مسائل کوچک تری تقسیم کرد.
۵- کتابخانه استاندارد قدرتمند: (Standard template library – STL) قدرت C++ با بهرهگیری از کتابخانه های استانداردی که در آن وجود دارد افزایش می یابد. این کتابخانه ها شامل الگوریتم های مفیدی هستند که میتوان در زمان کد نویسی از آن ها استفاده کرد.
۵ دلیل که چرا باید C++ یاد بگیرید
این یکی از سوالاتی است که قبل از شروع هر زبان برنامه نویسی باید بپرسید و کمک می کند تا حوزه زبان را درک کنید، قابلیت استفاده در دنیای واقعی را بدانید و تا چه حد می توانید از آن در زمینه پشتیبانی استفاده کنید. در اینجا ۵ دلیل برای یادگیری C++ آورده شده است.
۱- غیر قابل جایگزین است
با توجه به کاربرد زبان برنامه نویسی++C در بازیهای مدرن، سیستم های عامل، مرورگرها و غیره میتوان به جرات گفت که غیر قابل جایگزینی است. بسیاری از برنامه های کاربردی با استفاده از ++C ایجاد شدهاند:
- محصولات Adobe مانند فتوشاپ، ایلستریتور، ایندیزاین
- آمازون- یکی از بزرگ ترین سایت های تجارت الکترونیک
- محصولات Autodesk برای طراحی کامپیوتری
- فیسبوک – یکی از بزرگ ترین شبکه های اجتماعی
به علاوه این واقعیت نیز وجود دارد که یک جامعه بزرگ در حال بهبود ++C هستند و انتظار می رود استفاده از این زبان در آینده بیشتر هم شود.
۲- معماری داخلی کامپیوتر را یاد می گیرید
++C زبان سطح متوسط است، کد هایی که با آن نوشته می شوند، مستقیما با سخت افزار داخلی کامپیوتر کار می کنند به همین دلیل با نحوه ی کار حافظه، نحوه ی ذخیره اطلاعات در آن، نوع بازیابی اطلاعات و… آشنا می شوید و دانش معماری کامپیوتر شما افزایش می یابد.
۳- بیش از ۶۰۰۰۰۰ مخزن C++ در گیت هاب وجود دارد
گیت هاب بزرگ ترین سایت همکاری منبع باز دنیاست. در آن بیش از ۶۰۰۰۰۰ مخزن فقط برای C++ وجود دارد. این معیار به تنهایی اهمیت C++ را ثابت می کند. شما در هر زمینه ای کار کنید، هزاران پروژه منبع باز مرتبط با موضوعتان وجود دارد. در اینجا می توانید مشاهده کنید!
۴- نرخ پاسخ دهی فعال ۶۰ درصد در StackOverflow
سایت StackOverflow بزرگ ترین منبع پرسش و پاسخ برنامه نویسی دنیاست. بیش از ۴۰۰۰۰۰ سوال در مورد C++ و بیش از ۶۰ درصد پاسخ برای آن ها وجود دارد. تعداد سوالات و درصد پاسخ آن ها نشان دهنده ی جامعه ی فعال توسعه دهندگان C++ است. پس می توان انتظار داشت توسعه دهندگان زیادی وجود دارد که در صورت بروز مشکل در زمینه ی C++ به شما کمک کنند.
۵- فرصت های شغلی و دستمزد در C++
بر اساس آمار، توسعه دهندگان C++ میانگین حقوق ۱۰۰۰۰۰ دلار در سال دارند و بیش از ۷۷۰۰ موقعیت شغلی ماهانه برای آن ها وجود دارد. بیشتر موقعیت های شغلی در زمینه های بازی سازی، موتور های رندرینگ و برنامه های ویندوزی پیشنهاد می شوند.
۴ چیزی که قبل از کدنویسی C++ باید بدانید
۱- یک روزه نمی توان آن را آموخت یادگیری هر زبانی به زمان احتیاج دارد و در مورد C++ مشهود تر است. اگر فکر می کنید که می توانید در یک روز آن را یاد بگیرید، در انتهای روز نا امید خواهید شد. صادقانه می توان گفت هیچ زمانی را برای یادگیری کامل C++ نمی توان گفت. می بایست زمان زیادی را صرف یادگیری آن بکنید.
۲- یادگیری آن می توان دشوار باشد چون C++ زبان سطح بالایی نیست، امکان دارد در ابتدا یادگیری آن مشکل باشد و مجبور شوید ساعت ها وقت خود را صرف تمرکز برای یادگیری بکنید.
۳- احتیاجی به یادگیری C قبل از C++ نیست بعضی افراد فکر می کنند که قبل از C++ باید C را یاد بگیرند، اما چنین الزامی وجود ندارد. می توانید یادگیری را از C++ شروع کنید و هیچ مشکلی هم پیش نخواهد آمد. اگر از قبل با C آشنایی داشته باشید، یادگیری برایتان آسان تر خواهد بود زیرا خصوصیت های مشابهی از نظر ساختار و معنا با هم دارند.
۴- منتظر انتشار نسخه ی بعدی C++ نمانید بسیاری از افراد می پرسند آیا بهتر نیست صبر کنند تا نسخه ی جدید منتشر شود و سپس شروع به یادگیری کنند؟ پاسخ نه است. با اینکه به نسخه هایی که در آینده منتشر می شوند امکانات زیادی اضافه می شود اما مفاهیم اساسی یکی هستند. پس بهتر است زمان خود را هدر ندهید و از همین آلان یادگیری را شروع کنید.
اولین برنامه C++
اگر کامپایلر را بر مبنای سیستم عامل خود نصب کردهاید. زمان آن رسیده که نخستین برنامه خود را بنویسید.
“Hello World!”
نخستین برنامه C++ برنامه Hello World! خواهد بود.
این برنامه ای است که در همه زبان های برنامه نویسی به عنوان نخستین برنامه نوشته میشود؛ زیرا:
- این برنامه یک رویه استاندارد برای بررسی صحیح بودن همه چیز است.
- در آغاز به کد نویسی کمی نیاز هست.
- این کد برای افراد مبتدی فهم آسان تری دارد و بهتر میتوانند با زبان آشنا شوند.
- این کد برای یادگیری ساختار ابتدایی و معنا شناختی زبان کافی است.
پس شروع به کد نویسی میکنیم:
- #include <iostream>
- using namespace std;
- int main()
- {
- cout<<“Hello World!”;
- return 0;
- }
این برنامه عبارت Hello World! را در خروجی چاپ می کند.
برنامه چطور کار می کند؟
اکنون نوبت به بررسی کد بالا رسیده است. این کد را به شش قسمت میتوان تقسیم کرد:
- #include <iostream>
- using namespace std
- ;
- int main(){ }
- cout << “Hello World!”;
- return ۰;
۱- #include <iostream> به چه معناست؟
اگر قبلاً با زبان C کار کرده باشید احتمالاً این خط کد را دیده اید. اگر چنین نیست به توضیحاتی که در ادامه آمده توجه کنید.
این گزاره فایل هدر را در اپلیکیشن می گنجاند به طوری که میتوانیم از عملیات موجود در آن استفاده کنیم. ضمناً میتوانید فایلهای هدر خاص خود را ایجاد کرده و آنها را با استفاده از # include در برنامه بگنجانید.
iostream به چه معنا است؟
iostream نام فایل هدر است. فایل کتابخانه استاندارد ورودی/خروجی C++ است. این کتابخانه به همراه کامپایلر/IDE می آید و شامل مکانیزم هایی است که اطلاعات را از کاربر میگیرد و خروجی را در یک فایل، صفحه نمایش یا هر رسانه دیگری نمایش میدهد.
# include چیست؟
برای گنجاندن فایل iostream در برنامه از دستور #include استفاده می کنیم. این دستور تضمین میکند که می توان از عملیات های فایل iostream مانند گرفتن ورودی از کاربر، نمایش خروجی روی صفحه در برنامه استفاده کرد.
۲- عبارت using namespace std; به چه معناست؟
به کمک آن از فضای نامی به نام std در برنامه استفاده میکنیم. ما از namespace std برای تسهیل ارجاع به عملیات موجود در آن فضای نام بهره میگیریم. اگر از این فضای نام استفاده نکنیم، باید به جای cout از std::cout استفاده کنیم. این دستور به کامپایلر اعلام میکند که هر cout در واقع std::cout است.
namespace یعنی چه؟
کد برنامه اینجا قرار میگیرد. این گزینه دامنه کد را به یک یا چند فایل محدود کرده یا گسترش میدهد.
چرا باید از namespace استفاده کرد؟
همان طور که دو نفر ممکن است نام مشابه داشته باشند، متغیر ها و توابع هم در C++ ممکن است نام های مشابه داشته باشند. استفاده از namespace برای جلوگیری از تداخل متغیر ها و توابع و ارجاع صحیح به هر کدام از آنها است.
std چیست؟
std فضای نام استاندارد مورد استفاده در C++ است.
۳- سمی کالن یا نقطه ویرگول;
اگر از هر برنامه نویسی بپرسید، دستکم یک داستان ترسناک در مورد نقطه ویرگول برایتان تعریف میکند. نقطه ویرگول کاراکتر پایانی محسوب میشود و گزاره را می بندد. زمانی که آن را فراموش کنید یا به صورت نادرستی از آن استفاده کنید، مشکلات زیادی به وجود می آورد.
۴- int main(){} به چه معناست؟
تابع اصلی برنامه است. کد درون {} است که body نامیده میشود و زمانی که برنامه را اجرا کنید، قبل از همه اجرا میشود. تنها کدی است که در برنامه های C++ وجود آن اجباری است. اگر تنها این کد را در برنامه داشته باشید، از نظر کامپایلر برنامه معتبر است.
۵- cout<< “Hello World!”
این خط عبارت Hello World! را در صفحه خروجی نمایش میدهد. cout شیء استاندارد stream خروجی است؛ یعنی وظیفه آن چاپ دادههای موجود (به عنوان مثال Hello world!) پس از << در یک stream است.
stream چیست؟
stream به یک توالی از اشیا و یا معمولا بایت ها گفته میشود. این توالی می تواند فایل، ترمینال ورودی/خروجی، سوکت و… را توصیف کند.
>> به چه معنا است؟
>> عملگر درج است که برای نوشتن داده های قالب بندی شده در stream استفاده میشود.
۶- معنی return 0; چیست؟
این گزاره مقدار ۰ را بازگشت میدهد. گزارههای return اجباری نیستند و الزامی برای بازگشت دادن یک مقدار از تابع main() وجود ندارد، اما نوشتن آن یک قرارداد است. اگر این گزاره ذکر نشود، کامپایلر به طور خودکار یک وضعیت را بازگشت میدهد.
چرا در گزاره بازگشت از ۰ استفاده میشود؟
مقدار ۰ به معنی وضعیت Exit از اپلیکیشن است که به سیستم اعلام میکند برنامه کار خود را به پایان رسانده است.