آموزش ++C — راهنمای شروع یادگیری
++C بر اساس آخرین رتبهبندیها در رده چهارم محبوبترین زبانهای برنامهنویسی قرار دارد. یادگیری زبان برنامهنویسی ++C برای همه برنامهنویسها یک سرمایهگذاری هوشمندانه محسوب میشود. در این راهنما به همه سؤالات مرتبط با ++C در خصوص این که چیست؟ به چه منظور استفاده میشود؟ چرا استفاده میشود و چگونه میتوانید شروع به یادگیری آن بکنید پاسخ خواهیم داد. با مجموعه مقالات آموزش ++C مجله فرادرس همراه شوید.
زبان برنامهنویسی ++C چیست؟
++C یک زبان برنامهنویسی با «نوعبندی ایستا» (statically-typed)، فرم آزاد، (عموماً) کامپایل شونده، سطح متوسط، چندمنظوره و چند پارادایمی است. به بیان ساده ++C یک زبان برنامهنویسی پیچیده و کارآمد برای مقاصد عمومی است که بر مبنای C ساخته شده است. این زبان در سال 1979 از سوی «بیانه استروستراپ» (Bjarne Stroustrup) توسعه یافته است.
بسیاری از سیستمهای عامل امروزی، درایورهای سیستم، مرورگرها و بازیها از ++C به عنوان زبان اصلی خود استفاده میکنند. این امر موجب شده است که ++C امروزه یکی از محبوبترین زبانها به حساب آید. از آنجا که این زبان نسخه بسط/بهبودیافته زبان برنامهنویسی C محسوب میشود، C و ++C در اغلب موارد به صورت یکپارچه ++C/C مورد اشاره قرار میگیرند.
پیش از ادامه این مبحث لازم است یادآور شویم که میتوانید ++C را با استفاده از مجموعه آموزش برنامه نویسی سی پلاس پلاس، مقدماتی تا پیشرفته فرادرس یاد بگیرید.
تاریخچه ++C
زمانی که Bjarne Stroustrup در سال 1379 در AT&T Bell Labs کار میکرد با مشکلاتی در زمینه تحلیل کرنل UNIX برای سیستمهای توزیع یافته مواجه شد. زبان آن یا بسیار کند و یا بسیار سطح پایین بود. از این رو تصمیم گرفت یک زبان جدید ایجاد کند.
وی برای ساخت این زبان جدید C را انتخاب کرد. دلیل این مسئله آن بود که C یک زبان عمومی، بسیار کارآمد و همچنین دارای عملیات سریع بود. او از دانش خود در زمینه مدل شیءگرای زبان SIMULA استفاده کرد و کار روی بسط کلاسها به زبان C را آغاز نمود. هدف او ایجاد زبانی بود که سطوح بالاتری از تجرید را داشته باشد و همزمان کارایی زبان C نیز حفظ شود.
این زبان برنامهنویسی جدید به صورت «C withClasse» یعنی «C به همراه کلاس» نامگذاری شد؛ اما در ادامه نام آن به ++C تغییر یافت. منظور از ++ در آخر نام آن اشاره به عملگر افزایشی در زبان C دارد.
++C98: زمانی که ++C نخستین بار در سال 1985 منتشر شد، هیچ استاندارد رسمی در مورد آن وجود نداشت. در واقع نخستین نسخه استانداردشده این زبان در سال 1998 انتشار یافت که به نام ++C98 شناخته میشود.
++C03: در سال 2003 نسخه جدیدی از زبان ++C انتشار یافت. ++C03 در واقع کلاً یک استاندارد جدید محسوب نمیشد؛ اما برخی باگهای نسخه ++C98 در آن اصلاح شده بود «تا یکپارچگی و پرتابل بودن بیشتری تضمین شود».
++C11 (یا ++C0X): استاندارد عمده بعدی زبان ++C در سال 2011 انتشار یافت و به نام ++C11 شناخته شد. از آنجا که کمیته ++C مطمئن بود که این نسخه در سال 2009 انتشار خواهد یافت، نام آن را ++C0X گذاشت. بعداً و با عدم انتشار این نسخه، Stroustrup این شوخی را مطرح کرد که ++C0X به صورت هگزادسیمال ++C0xB تبدیل شده است که معادل ++C11 است.
++C14 (یا ++C1y): استاندارد ++C14 در سال 2014 منتشر شده است و همانند ++C03 شامل رفع باگها و برخی بهبودهای جزئی نسبت به ++C11 است.
++C17 (یا ++C1z): نسخه بعدی از این زبان به نام ++C17 در سال 2017 منتشر شده است و آخرین نسخه انتشاریافته این زبان محسوب میشود. در این نسخه ویژگیهای جدیدی به این زبان اضافه شده است.
++C20: نسخه بعدی این زبان برنامهنویسی قرار است در سال 2020 میلادی منتشر شود و امکانات جالب دیگری به آن اضافه خواهد شد.
قابلیتهای ++C
++C به دلیل ماهیت عمومی بودن خود دارای قابلیتهای متنوعی است. پرداختن به همه این قابلیتها کاری زمانبر است؛ اما به عنوان یک مقدمه کوتاه در ادامه برخی از قابلیتهای مهم این زبان را که به عنوان یک مبتدی باید بدانید ارائه کردهایم.
1. ++C سریع است: از آنجا که ++C نسخه بسط یافتهای از C است، بخش زبان C آن کاملاً سطح پایین است. این امر موجب ارتقای زیادی در سرعت آن شده است که زبانهای سطح بالا مانند پایتون یا جاوا نمیتوانند ارائه کنند.
2. ++C دارای نوعبندی صریح است: ++C یک زبان با نوعبندی صریح است، یعنی این زبان به کامپایلر امکان فرضیهسازی در مورد نوع دادهها را نمیدهد. برای نمونه در این زبان نمیتوانید عدد 10 را به صورت «10» بنویسید و انتظار داشته باشید که ++C متوجه شود این نوع دوم یک رشته است. بدین ترتیب کامپایلر میتواند خطاهای موجود در نوعبندی داده را پیش از اجرای برنامه تشخیص دهد.
3. ++C یک زبان برنامهنویسی چند پارادایمی است: ++C از دستکم 7 سبک مختلف برنامهنویسی پشتیبانی میکند و توسعهدهندهها آزادی عمل انتخاب هر یک را به دلخواه خود دارند. برخلاف جاوا و پایتون در این زبان مجبور نیستید از شیءها برای حل همه وظایف استفاده کنید. شما میتوانید آن سبک برنامهنویسی را که با کاربردهای خاص شما سازگارتر است را انتخاب کنید.
4. برنامهنویسی شیءگرا با ++C ممکن است: برنامهنویسی شیءگرا به حل شهودی مسائل پیچیده کمک میکند. با بهرهگیری از مفاهیم شیءگرایی در ++C میتوان این مسائل پیچیده را با ساخت اشیا به مجموعههای کوچکتری تقسیم کرد.
5. کتابخانه استاندارد (Standard template library - STL) قدرتمند است: قدرت ++C با بهرهگیری از کتابخانههای استانداردی که در آن وجود دارد بسط بیشتری مییابد. این کتابخانهها شامل الگوریتمهای کارآمدی هستند که میتوان در زمان کدنویسی استفاده گستردهای از آنها کرد. این امر به صرفهجویی عمدهای در تلاشهای برنامهنویسی منتهی میشود که در غیر این صورت صرف اختراع مجدد چرخ میشدند.
5 دلیل برای انتخاب زبان برنامهنویسی ++C
شاید از خود پرسیده باشید که چرا باید زبان ++C را انتخاب کرد؟ این سؤالی است که پیش از شروع به یادگیری هر زبان برنامهنویسی باید پرسیده شود. این سؤال به شما کمک میکند که دامنه زبان، کاربردهای واقعی آن و میزان پشتیبانی آن را درک کنید. در ادامه 5 دلیل برای یادگیری زبان برنامهنویسی ++C ارائه شده است.
1. ++C غیر قابل تکرار است
با توجه به کاربرد زبان برنامهنویسی ++C در بازیهای مدرن، سیستمهای عامل، مرورگرها و موارد دیگر میتوان به جرات گفت که این زبان غیر قابل تکرار است.
بسیاری از اپلیکیشنهای عمده مانند موارد زیر با استفاده از ++C ساخته شدهاند:
- محصولات Adobe مانند فتوشاپ، ایلستریتور، ایندیزاین.
- آمازون به عنوان بزرگترین سایت تجارت الکترونیک
- محصولات Autodesk برای طراحی به کمک رایانه
- فیسبوک نیز به عنوان بزرگترین شبکه اجتماعی، استفاده گستردهای از ++C کرده است.
به علاوه این واقعیت نیز وجود دارد که یک جامعه عظیمی در پس این زبان قرار دارند که به بهبود ++C در هر نسخه کمک میکنند و بدین ترتیب انتظار میرود استفاده از این زبان در آینده بیش از این نیز گسترش یابد.
2. معماری داخلی رایانه را میآموزید
از آنجا که ++C یک زبان سطح متوسط است، کدی که با آن نوشته میشود به صورت مستقیم با سختافزار داخلی رایانه کار میکند. بدین ترتیب شما با طرز کار واقعی حافظه رایانه، شیوه ذخیرهسازی اطلاعات در آنها، نوع بازیابی اطلاعات و مواردی از این دست آشنا میشوید. بدیهی است که بدین ترتیب دانش شما از معماری رایانه افزایش مییابد.
3. بیش از 600،000 ریپازیتوری ++C روی گیتهاب وجود دارد
گیتهاب بزرگترین پلتفرم همکاری اوپنسورس دنیا است و روی این پلتفرم بیش از 600،000 ریپازیتوری صرفاً برای زبان ++C وجود دارد. این معیار به تنهایی ارزش ++C را در جامعه اوپنسورس اثبات میکند. شما چه در زمینه بازیسازی، چه گرافیک و چه اپلیکیشنهای ویندوزی فعالیت بکنید، در هر صورت هزاران پروژه اوپنسورس عالی وجود دارند و شما نیز میتوانید پروژه خود را بسازید.
4. 60 درصد نرخ پاسخدهی فعال در وبسایت StackOverflow
وبسایت StackOverflow به عنوان بزرگترین پلتفرم پرسش و پاسخ برنامهنویسی دنیا میزبان بیش از 400،000 سؤال در خصوص ++C است و بیش از 60 درصد از این سؤالها پاسخ داده شدهاند. تعداد سؤالات پرسیده شده و درصد پاسخ دادن به آنها کاملاً جالب هستند و نشانگر جامعه فعال توسعهدهندگان ++C هستند. بنابراین میتوان انتظار داشت که توسعهدهندگان خوب زیادی وجود دارند که در صورت بروز مشکلات روزمره در زمینه ++C به شما کمک میکنند.
5. فرصتهای شغلی و حقوق برنامهنویسان ++C
بر اساس آمار، توسعهدهندگان ++C میتوانند میانگین حقوق 100000 دلار سالانه را داشته باشند و بیش از 7700 موقعیت شغلی هر ماه برای آنها تبلیغ میشوند. اغلب موقعیتهای شغلی در زمینههای توسعه بازی، موتورهای رندرینگ و اپلیکیشنهای ویندوزی پیشنهاد میشوند.
4 نکتهای که پیش از کدنویسی با ++C باید بدانید
اینک که میدانید ++C چیست و دامنههای آن تا چه حد گسترده است، نوبت آن رسیده است که شروع به یادگیری آن بکنید؛ اما پیش از آغاز چند نکته مهم وجود دارند که باید بدانید. در ادامه 4 مورد از مهمترین نکاتی که باید بدانید را گرداوری کردهایم.
1. ++C را نمیتوان در طی یک روز آموخت
یادگیری هر زبانی به زمان نیاز دارد و این واقعیت در مورد ++C بسیار مشهودتر است. اگر فکر میکنید در طی یک روز میتوانید زبان برنامهنویسی ++C را بیاموزید، در این صورت ممکن است در انتهای روز ناامید شوید.
اگر بخواهیم صادق باشیم، هیچ زمانی برای یادگیری کامل ++C نمیتوان ذکر کرد و هرکسی هم زمانی برای آن تعیین کند، در واقع دروغ گفته است. شما میتوانید شروع به یادگیری ++C با استفاده از رویههای معمول بکنید و میبایست زمان زیادی را صرف یادگیری ++C بکنید.
2. یادگیری ++C میتواند دشوار باشد
از آنجا که ++C یک زبان سطح بالا نیست، یادگیری آن میتواند در ابتدا پیچیده باشد و احتمالاً باید ساعتها از وقت خود را صرف تمرکز برای یادگیری مبانی این زبان بکنید. اما لازم نیست نگران باشید، چون ما منابع زیادی را برای یادگیری ++C در انتهای این مقاله معرفی میکنیم که به آغاز یادگیری این زبان برای افراد مبتدی کمک میکند. ضمناً جامعههای پشتیبانی زیادی وجود دارند که در موارد بروز مشکل میتوانند به شما کمک بکنند.
با سلام و وقت بخیر من خیلی وقت پیش بود c++ کار کردم الان میخوام دوباره شروع کنم بحث مقدماتی یاد گرفتم بیشتر ایران وخارج از ایزان بیشتر چه زمینه c++ کار کنم که کاربردی تره بیشتره شرکتا کلی منویسن مسلط به c++ به مقدار گیج شدم لطفا راهنمابی کنید چه چیزی از c++ مسلط بشم طراح اپ ویندوز بخش شی گرایی بازی و … اگر راهنامیی کنید از شما سپاس گزار هستم
جناب لطفی..دختر من در المان تحصیل میکنه..رشته مهندسی پزشکی…..جهت انجام کارورزی نیاز به راهنمایی و همکاری داره….اگر برای شما مغدور است و در حیطه کاری جنابعالیست.راهنمایی بفرمایید راه تماس با شما چیست.ممنون
سلام
من زبان C++ رو از فرادرس تهیه کردم و الان تو درس دومشم(if,Switch) مبتدی هستم ولی تا اینجای کار مشکلی نداشتم و به خوبی همچیو تا درس دوم یادگرفتم ولی علاقه زیادی به بازی سازی دارم میخواستم بپرسم این اموزش رو که تموم کنم میتونم با موتور بازی سازی Unreal Engine 4 که از زبان C++ پشتیبانی میکنه کار کنم؟ یا باید دوره پیشرفته C++ رو هم باید یاد بگیرم تا بتونم باهاش کار کنم ممنون میشم پاسخگو باشید.
سلام
من مبتدی هستم وcodeblocksدر ویندوزم اجرا نمیشه
همه نسخه ها(20.03_17.04_16.01_…)دانلود کردم
هیچ کدوم روی ویندوز کامپیوترم اجرا نمیشه.
خواش میکنم ، خواهش میکنم راه نماییم کنید
سلام دوست عزیز؛
بسیار علاقهمند هستم که به شما کمک بکنم، اما مادامی که ندانم مشکل از کجاست، این امر میسر نخواهد بود. با توجه به توضیحی که دادید، احتمالاً مشکل از نصب نسخههای مختلف پیش آمده است. اگر خطای زیر را مشاهده میکنید:
can’t find compiler executable in your search path(GNU GCC compiler)
به مسیر Settings > Compiler > Toolchain executables بروید و روی Auto-detect کلیک کنید. امیدوارم مشکلتان به این طریق حل شود.
از توجه شما سپاسگزارم.
سلام. من زبان سی رو بلدم و شنیدم زبان سی پلاس پلاس رو راحت میشه یاد گرفت اگه سی رو بلد باشی. خواستم بدونم چقدر زمان میبره یادگیریش و کدوم یکی از اموزش های سایت فرادرس مناسبتره برای من؟
با سلام؛
از همراهی شما با مجله فرادرس سپاسگزارم. به طور کلی، هنگامی که افراد با مبانی و مفاهیم برنامهنویسی آشنایی داشته باشند، یادگیری زبانهای برنامهنویسی گوناگون برای آنها راحتتر است. زبان C++ یک زبان از خانواده زبانهای C و مشتق شده از این زبان است. تفاوت کلیدی C و ++C آن است که C یک زبان برنامهنویسی رویهای (Procedural Programming) است و از مفاهیم مربوط به شیگرایی شامل کلاسها و اشیا پشتیبانی نمیکند. در حالی که C++ از هر دو پارادایم برنامهنویسی رویهای و شیگرا پشتیبانی میکند. در واقع، C++ همان C است که از شیگرایی بهره میبرد. به مرور زمان، توسعهدهندگان C++ برای افزایش بهرهوری این زبان، قابلیت برنامهنویسی همگانی (Generic Programming) و پارادایم «برنامهنویسی تابعی» (Functional Programming) را نیز به آن اضافه کردند. ++C زبان مناسبی برای طراحی سیستمهای توکار، برنامهنویسی اینترنت اشیا و هر جا که پای سختافزار در میان باشد است. هر چند این زبان، به دلیل سرعت مناسبی که نسبت به برخی از دیگر زبانها دارد، از کاربردهای دیگری نیز بهره میبرد.
برای یادگیری زبان ++C میتوانید از آموزشهای زیر در فرادرس، استفاده کنید:
آموزش برنامهنویسی C++
آموزش پیشرفته C++ (شی گرایی در سی پلاس پلاس)
آموزش کتابخانه قالب استاندارد (STL) در ++C برای ساده نویسی برنامه ها
آموزش فریم ورک کیوت (Qt) برای توسعه نرم افزارها با ++C
پیروز، شاد و تندرست باشید.