همانطور که در مقاله علم داده در دنیای امروز ما اشاره شد، امروزه کامپیوترها و کارهایی که میتوان با آنها انجام داد یکی از ابزارهای مهم برای سپری کردن زندگی روزمره هستند و کسی که با کامپیوتر و کاربردهایش آشنایی ندارد، احتمالا انجام بسیاری از کارها میتواند برایش مشکل باشد. یکی از بهترین کاربردهای کامپیوتر، برنامهنویسی است، زبانهای برنامهنویسی زیادی در دنیای امروز وجود دارند که هر کدام از آنها کاربرد منحصر به فرد خودشان را دارند. در این مقاله، شما را با نکات اولیهای که برای یادگیری زبان برنامهنویسی ++C باید بدانید آشنا میکنیم.
فهرست مطالب
تعریف برنامهنویسی به زبان ++C
اکنون همه شما میدانید که کامپیوتر یک وسیله الکترونیکی است که میتواند بسیاری از وظایف محاسباتی را انجام دهد. اما از آنجایی که این یک ماشین است و نمیتواند هیچ کاری را به تنهایی انجام دهد، بنابراین برای انجام هرکاری با استفاده از رایانه دستورالعملهایی را ارائه دهیم و طبق این دستورالعملها از رایانه استفاده کنیم.
دستورالعملهایی که به رایانه داده میشود برنامه نام دارد و شخصی که قرار است این دستورالعملها را بنویسید یا اینکه آنها را ارائه دهد برنامه نویس نامیده میشود. همچنین زبانی که این دستورالعملها به آن نوشته میشوند زبان برنامهنویسی نام دارد. یکی از این زبانهای برنامهنویسی ++C نام دارد که در این مقاله به آن میپردازیم. همچنین برای خواندن دانستنیهای جالب درباره این زبان، میتوانید به سایت CplusPlus.com مراجعه نمایید.
تاریخچه زبان ++C
زبان برنامهنویسی ++C توسط Bjarne stroustrup و تیمش در سال 1979 در آزمایشگاههای بل نیو جرسی ایجاد شد و زمانی که این زبان ایجاد شد مستقیما آن را نه ++C بلکه C نامگذاری کردند. تا به امروز زبان برنامهنویسی c یکی از معروف ترین زبانهای برنامهنویسی است اما زبان برنامهنویسی C محدودیتهای خاص خود را دارد، سال به سال ظرفیت محاسباتی رایانهها افزایش مییابد و همچنین پیچدگی برنامهنویسی افزایش مییابد.
ایراد زبان برنامهنویسی C این بود که پیچیدگی برنامهنویسی افزایش مییافت و نرم افزارها بزرگتر میشدند. به همین علت مدیریت و نوشتن کد با استفاده از زبان برنامهنویسی C برای آن کارهای پیچیده محاسباتی دشوار بود. بنابراین Bjarne stroustrup و تیمش شروع به کار بر روی زبان برنامهنویسی C کردند و به آن ویژگیهای زیادی اضافه نمودند و سپس این زبان جدید را به نام C with classes نام گذاری کردند. Class در واقع بخشی از برنامهنویسی شی گرا است.
برنامهنویسی شی گرا یک رویکرد برنامهنویسی کاملا متفاوت از رویکرد برنامهنویسی مورد استفاده در زبان C است. در این مرحله ویژگیهای برنامهنویسی شی گرا که به C با کلاسها اضافه شد عمدتا تحت تاثیر زبان برنامهنویسی شی گرا دیگری بود که در آن زمان وجود داشت و به نام 67 simula نامگذاری شد. آنگاه زبان جدیدی در آن ایجاد شد که C with classes بود و انتخاب بهتری برای نوشتن برنامههایی که برنامه نویسان باید برخی از عملیاتهای برنامهنویسی پیچیده را انجام میدادند محسوب میشد. در سال 1983 نام C with classes را به ++C تغیر دادند. نکته جالب این است که این ++ در واقع یک عملگر از زبان C است و این ++ یک عملگر افزایشی است و از آنجایی که این زبان جدید است، یک افزایش یا مرحله بعدی زبان C که میباشد که آن را ++C نام گذاری کردند.
کاربردهای زبانهای برنامهنویسی و انواع آن
برنامه نویسان از هر یک از زبانهای برنامهنویسی که در دنیا شناخته شده است استفاده میکنند و برنامه کامپیوتری یا دستورالعملهایی را می نویسند که کامپیوترها طبق همین برنامهها کار میکنند، ++C یکی از زبانهای برنامهنویسی است که میتوان از آن برای نوشتن برنامههای کامپیوتری استفاده کرد، به غیر از زبان برنامهنویسی ++C زبان های برنامهنویسی زیادی وجود دارند. برای مثال زبان برنامهنویسی C، C شارپ، java، php، پایتون و غیره.
صنعت |
کاربرد ++C |
نرمافزار |
توسعه سیستم عاملها |
مهندسی |
شبیهسازیهای فنی مهندسی |
شبکه |
توسعه سرورها و پروتکلها پایگاه دادهها |
رباتیک |
کنترل رباتها و سیستمهای تعقیب مسیر |
ویژگیهای زبان برنامهنویسی ++C
همانطور که همه ما میدانیم زبان برنامهنویسی ++Cکه پسوند زبان C است، ویژگیهای زیادی دارد که C فاقد آنهاست. ویژگیهایی مانند برنامهنویسی بین پلتفرم و سطح متوسط به ++C نسبت به بسیاری از زبانهای برنامهنویسی برتری میدهد. ویژگیهای مختلف زبان برنامهنویسی ++C در زیر آورده شده است که هرکدام از آنها را به اختصار توضیح خواهیم داد. برای یادگیری استفاده کاربردی از ویژگیها، دوره آموزش سی پلاس پلاس (++C) و دروه آموزش سی پلاس پلاس (++C) پیشرفته را از دست ندهید.
- ساده (Simple)
- انواع داده های چکیده (Abstract Data types)
- مستقل از ماشین یا قابل حمل (Machine Independent or Portable)
- زبان برنامهنویسی سطح متوسط (Mid-level programming language)
- زبان برنامهنویسی ساخت یافته (Structured programming language)
- کتابخانه غنی (Rich Library)
- مدیریت حافظه (Memory Management)
- تالیف سریعتر (Quicker Compilation)
- اشاره گرها (Pointers)
- بازگشت (Recursion)
- قابل توسعه (Extensible)
- شی گرا (Object-Oriented)
- مبتنی بر کامپایلر (Compiler based)
- قابلیت استفاده مجدد (Reusability)
- استانداردهای ملی (National Standards)
- خطاها به راحتی شناسایی می شوند (Errors are easily detected)
- قدرت و انعطاف پذیری (Power and Flexibility)
- زبان قوی تایپ شده (Strongly typed language)
- تعریف مجدد اپراتورهای موجود (Redefine Existing Operators)
- مدل سازی مسائل دنیای واقعی (Modeling Real-World Problems)
- وضوح (Clarity)
- ساده (Simple)
زبان برنامهنویسی ++C زبان سادهای است زیرا یک رویکرد ساختاریافته (برای تقسیم مشکل به بخشها)، مجموعهای غنی از توابع کتابخانه، انواع داده و غیره را ارائه میدهد.
- انواع دادههای چکیده (Abstract Data types)
در زبان برنامهنویسی ++C، انواع دادههای پیچیده به نام Abstract Data Types (ADT) را میتوان با استفاده از کلاسها ایجاد کرد.
- مستقل از ماشین یا قابل حمل (Machine Independent or Portable)
زبان برنامهنویسی ++C یک زبان قابل حمل است و برنامههای ساخته شده در آن بر روی ماشینهای مختلف قابل اجرا هستند.
- زبان برنامهنویسی سطح متوسط (Mid-level programming language)
زبان برنامهنویسی ++C شامل هر دو زبان برنامهنویسی سطح پایین و زبان سطح بالا است و میتواند برای توسعه برنامههای کاربردی سیستم مانند هسته، درایور و غیره استفاده شود.
- زبان برنامهنویسی ساختار یافته (Structured programming language)
زبان برنامهنویسی ++C یک زبان برنامهنویسی ساختار یافته است. بنابراین میتوانیم برنامه را با استفاده از توابع به چند قسمت تقسیم کنیم.
- کتابخانه غنی (Rich Library)
زبان برنامهنویسی ++C بسیاری از توابع داخلی را ارائه میدهد که توسعه را سریع میکند. کتابخانههای مورد استفاده در زبان برنامهنویسی ++C عبارتند از:
- <iostream>
- <cmath>
- <cstdlib>
- <fstream>
- مدیریت حافظه (Memory Management)
زبان برنامهنویسی ++C تکنیکهای مدیریت بسیار کارآمدی را ارائه میدهد. اپراتورهای مختلف مدیریت حافظه به صرفهجویی در حافظه و بهبود کارایی برنامه کمک میکنند. این عملگرها حافظه را در زمان اجرا تخصیص میدهند. برخی از اپراتورهای رایج مدیریت حافظه موجود زبان برنامهنویسی ++C جدید هستند.
- تالیف سریعتر (Quicker Compilation)
برنامههای زبان برنامهنویسی ++C معمولا فشرده هستند و سریع اجرا میشوند. از این رو زمان کامپایل و اجرای زبان برنامهنویسی ++C سریع است.
- اشارهگرها (Pointers)
زبان برنامهنویسی ++C ویژگی اشارهگرها را فراهم میکند. ما میتوانیم از اشارهگرها برای حافظه، ساختارها، توابع، آرایه و غیره استفاده کنیم.
- بازگشت (Recursion)
در زبان برنامهنویسی ++C میتوانیم تابع درون تابع را فراخوانی کنیم. این ویژگی قابلیت استفاده مجدد کد را برای هر تابع فراهم میآورد.
- قابل توسعه (Extensible)
برنامههای زبان برنامهنویسی ++C را میتوان به راحتی گسترش داد زیرا افزودن ویژگیهای جدید به برنامه موجود بسیار آسان است.
- شی گرا (Object-Oriented)
در زبان برنامهنویسی ++C، مفاهیم شی گرا مانند پنهان کردن داده، کپسوله سازی و انتزاع دادهها را میتوان به راحتی با استفاده از مشخصههای دسترسی کلاس، خصوصی، عمومی و حفاظت شده پیادهسازی کرد. شی گرا توسعه و نگهداری را آسانتر میکند.
- مبتنی بر کامپایلر (Compiler based)
زبان برنامهنویسی ++Cیک زبان برنامهنویسی مبتنی بر کامپایلر است، به این معنی که هیچ برنامه ++C را نمیتوان بدون کامپایل اجرا کرد. کامپایلر زبان برنامهنویسی ++C به راحتی در دسترس است و فضای بسیار کمی برای ذخیرهسازی نیاز دارد. ابتدا باید برنامه خود را با استفاده از کامپایلر کامپایل کنیم و سپس میتوانیم برنامه خود را اجرا کنیم.
- قابلیت استفاده مجدد (Reusability)
با استفاده از وراثت توابع، برنامههای نوشته شده در زبان برنامهنویسی ++C میتوانند در هر برنامه دیگری از ++C استفاده مجدد شوند. میتوانید بخشهای برنامه را در فایلهای کتابخانه ذخیره کنید و آنها را در پروژههای برنامهنویسی بعدی خود به سادگی با گنجاندن فایلهای کتابخانه فراخوانی کنید. برنامههای جدید را میتوان در زمان کمتری توسعه داد زیرا کد موجود میتواند دوباره استفاده شود. همچنین میتوان چندین تابع با نام یکسان تعریف کرد که وظایف متفاوتی را انجام میدهند. به عنوان مثال: abs () برای محاسبه قدر مطلق عدد صحیح، شناور و عدد صحیح طولانی استفاده میشود.
- استانداردهای ملی (National Standards)
زبان برنامهنویسی++C دارای استانداردهای ملی مانند ANSI است.
- خطاها به راحتی شناسایی میشوند (Errors are easily detected)
نگهداری برنامههای زبان برنامهنویسی ++C آسانتر است زیرا خطاها به راحتی قابل شناسایی و اصلاح هستند. همچنین قابلیتی به نام مدیریت استثنا برای پشتیبانی از مدیریت خطا در برنامه شما ارائه میدهد.
- قدرت و انعطافپذیری (Power and Flexibility)
زبان برنامهنویسی++C یک زبان قدرتمند و منعطف است زیرا بیشتر سیستم عامل قدرتمند لینوکس انعطافپذیر و مدرن به زبان ++C نوشته شده است. بسیاری از کامپایلرها و مفسرها برای زبانهای دیگر مانند FORTRAN، PERL، Python، PASCAL، BASIC، LISP و غیره به زبان ++C نوشته شدهاند. برنامههای ++C برای حل مسائل فیزیک و مهندسی و حتی برای جلوههای ویژه متحرک برای فیلمها استفاده شده است.
- زبان قوی تایپ شده (Strongly typed language)
فهرست آرگومانهای هر فراخوانی تابع در حین کامپایل بررسی میشود. اگر عدم تطابق نوع بین آرگومانهای واقعی و رسمی وجود داشته باشد، در صورت امکان تبدیل ضمنی اعمال میشود. در صورتی که تبدیل ضمنی امکانپذیر نباشد یا تعداد آرگومانها نادرست باشد، زمان کامپایل رخ میدهد.
- تعریف مجدد اپراتورهای موجود (Redefine Existing Operators)
زبان برنامهنویسی ++Cبه برنامه نویس اجازه میدهد تا معنای عملگرهای موجود مانند + و - را دوباره تعریف کند. به عنوان مثال، عملگر "+" را میتوان برای جمع کردن دو عدد و به هم پیوستن دو رشته استفاده کرد.
- مدلسازی مسائل دنیای واقعی (Modeling Real-World Problems)
برنامههای نوشته شده در زبان برنامهنویسی ++C برای مشکلات مدلسازی در دنیای واقعی تا حد امکان به دیدگاه کاربر مناسب هستند.
- وضوح (Clarity)
کلمات کلیدی و توابع کتابخانهای که در زبان برنامهنویسی ++C استفاده میشوند شبیه کلمات رایج انگلیسی است.
در جدول زیر نیز کلیدیترین ویژگیهای ++C به همراه کاربرد آنها مشاهده میکنید.
ویژگی |
کاربرد |
مستقل از ماشین |
قابل اجرا بر روی ماشینهای مختلف |
زبان برنامهنویسی سطح متوسط |
توسعه برنامههای کاربردی سیستم |
مدیریت حافظه |
بهبود کارایی برنامه |
قدرت و انعطاف پذیری |
حل مسائل فیزیک و مهندسی |
کاربردهای زبان برنامهنویسی ++C
پس از بررسی ویژگیهای زبان برنامهنویسی ++C، به برخی از زمینههای جالب توجهی میپردازیم که در آنها ++C بطور رایج مورد استفاده قرار میگیرد. در ادامه مقاله چند نمونه از کاربردهای زبان برنامهنویسی ++C را بررسی میکنیم.
- سیستمهای عامل (Operating Systems)
مایکروسافت ویندوز باشد یا Mac OSX یا لینوکس، همه آنها در ++C برنامهریزی شدهاند. ++C ستون فقرات تمام سیستم عاملهای شناخته شده است، زیرا یک زبان برنامهنویسی قوی و سریع است که آن را به گزینهای ایده آل برای توسعه یک سیستم عامل تبدیل میکند. علاوه بر این، C بسیار نزدیک به زبان اسمبلی است که بیشتر به نوشتن ماژولهای سیستم عامل سطح پایین کمک میکند.
2. مرورگرها (Browsers)
موتورهای رندر مرورگرهای وب به دلیل سرعتی که ارائه میدهند به زبان برنامهنویسی ++C برنامهریزی میشوند. موتورهای رندر به اجرای سریعتری نیاز دارند تا مطمئن شوند که کاربران مجبور نیستند منتظر نمایش محتوا روی صفحه باشند. در نتیجه، چنین سیستمهایی با تأخیر کم از ++C به عنوان زبان برنامهنویسی استفاده میکنند.
- کتابخانهها (Libraries)
بسیاری از کتابخانههای سطح بالا از ++C به عنوان زبان برنامهنویسی اصلی استفاده میکنند. به عنوان مثال، چندین کتابخانه یادگیری ماشینی از ++Cدر backend به دلیل سرعت آن استفاده میکنند. Tensorflow، یکی از پرکاربردترین کتابخانههای یادگیری ماشینی، از ++C به عنوان زبان برنامهنویسی Backend استفاده میکند. چنین کتابخانههایی به محاسبات با کارایی بالا نیاز دارند زیرا شامل ضرب ماتریسهای بزرگ به منظور آموزش مدلهای یادگیری ماشین هستند. در نتیجه، عملکرد حیاتی می شود. ++C در چنین کتابخانههایی به کمک میآید.
- گرافیک (Graphics)
همه برنامههای گرافیکی نیاز به رندر سریع دارند مانند مرورگرهای وب، زبان برنامهنویسی ++Cدر اینجا نیز به کاهش تاخیر کمک میکند. نرم افزارهایی که از بینایی کامپیوتر، پردازش تصویر دیجیتال، پردازش گرافیکی پیشرفته استفاده میکنند، همه آنها از ++C به عنوان زبان برنامهنویسی باطن استفاده میکنند. حتی بازیهای محبوبی که از نظر گرافیکی سنگین هستند از ++C به عنوان زبان برنامهنویسی اولیه استفاده میکنند. سرعتی که ++C در چنین شرایطی ارائه میدهد به توسعه دهندگان در گسترش مخاطبین هدف کمک میکند زیرا یک برنامه بهینه شده میتواند حتی بر روی دستگاههای پایین ردهای که قدرت محاسباتی بالایی در دسترس ندارند اجرا شود.
- برنامههای کاربردی بانکی (Banking Applications)
یکی از پرکاربردترین سیستمهای بانکداری مرکزی یعنی Infosys Finacle از زبان برنامهنویسی ++C به عنوان یکی از زبانهای برنامهنویسی باطن استفاده میکند. برنامههای بانکی میلیونها تراکنش را به صورت روزانه پردازش میکنند و نیاز به پشتیبانی همزمان بالا و تاخیر کم دارند. ++C به دلیل سرعت و پشتیبانی چند رشتهای که از طریق کتابخانههای قالب استاندارد مختلف که به عنوان بخشی از کیت برنامهنویسی ++C ارائه میشوند، بهطور خودکار به انتخاب ترجیحی در چنین برنامههایی تبدیل میشود.
- سیستمهای ابری (Cloud Systems)
سازمانهای بزرگی که سیستمهای ذخیره سازی ابری و سایر سیستمهای توزیعشده را توسعه میدهند، از ++C نیز استفاده میکنند، زیرا به خوبی با سختافزار ارتباط برقرار میکند و با بسیاری از ماشینها سازگار است. سیستمهای ذخیره سازی ابری از فایل سیستمهای مقیاسپذیر استفاده میکنند که نزدیک به سختافزار کار میکنند. ++C در چنین شرایطی به یک انتخاب ارجح تبدیل میشود زیرا به سخت افزار نزدیک است و همچنین کتابخانههای چند رشتهای در ++C همزمانی و تحمل بار بالایی را ارائه میدهند که در چنین سناریوهایی بسیار مورد نیاز است.
- پایگاههای داده (Databases)
Postgres و MySQL دو مورد از پرکاربردترین پایگاههای داده در زبان برنامهنویسی ++C و C نوشته شدهاند که پیشروی زبان برنامهنویسی ++C است. این پایگاههای اطلاعاتی تقریبا در همه برنامههای معروفی که همه ما در زندگی روزمره از آنها استفاده میکنیم مانند Quora، YouTube و غیره استفاده میشوند.
- سیستمهای جاسازی شده (Embedded Systems)
سیستمهای تعبیهشده مختلف مانند ماشینهای پزشکی، ساعتهای هوشمند و غیره از ++C به عنوان زبان برنامهنویسی اولیه استفاده میکنند، زیرا زبان برنامهنویسی ++C در مقایسه با سایر زبانهای برنامهنویسی سطح بالا به سطح سختافزار نزدیکتر است.
- کلیدهای تلفن (Telephone Switches)
به دلیل این واقعیت که یکی از سریعترین زبانهای برنامهنویسی است، زبان برنامهنویسی ++C به طور گسترده در برنامهنویسی سوئیچهای تلفن، روترها و کاوشگرهای فضایی استفاده میشود.
- کامپایلرها (Compilers)
کامپایلرهای زبانهای برنامهنویسی مختلف از C و ++C به عنوان زبان برنامهنویسی Backend استفاده میکنند. این به دلیل این واقعیت است که هر دو زبان C و ++C در سطح نسبتا پایینتری هستند و به سختافزار نزدیکتر هستند. بنابراین گزینه ایدهآلی برای چنین سیستمهای کامپایل به شمار میروند. اینها چند مورد از کاربردها و کاربردهای زبان برنامهنویسی ++C هستند. اکنون بیایید در مورد مزایای ++C نسبت به سایر زبانهای برنامهنویسی بیشتر بدانیم.
مزایای زبان برنامهنویسی ++C
++C دارای ویژگیهای زیر است که آن را در اکثر برنامهها به یک انتخاب ترجیحی تبدیل میکند:
سرعت:
زبان برنامهنویسی ++C سریعتر از سایر زبانهای برنامهنویسی است و پشتیبانی همزمان عالی را ارائه میدهد. این باعث میشود در مناطقی که عملکرد بسیار مهم است و تأخیر مورد نیاز بسیار کم است مفید باشد. چنین الزاماتی همیشه در سرورهای پر بار مانند وب سرورها، سرورهای برنامه، سرورهای پایگاه داده و غیره رخ میدهد. ++C نقش کلیدی در چنین سرورهایی دارد.
نزدیکتر به سختافزار:
زبان برنامهنویسی ++C نسبت به بسیاری از زبانهای برنامهنویسی دیگر مانند پایتون و غیره به سختافزار نزدیکتر است. این باعث میشود در مناطقی که نرمافزار با سختافزار همراه است و پشتیبانی سطح پایین در سطح نرمافزار مورد نیاز است، مفید باشد.
کتابخانه استاندارد غنی:
کتابخانه استاندارد ++C مجموعهای گسترده از توابع و کلاسها را شامل میشود که کارهای معمول مانند مدیریت دادهها، عملیات ورودی/خروجی، ساختارهای دادهای و الگوریتمها را سادهتر میکند. این کتابخانه باعث کاهش زمان توسعه نرمافزار و افزایش بهرهوری برنامهنویسان میشود.
پشتیبانی از برنامهنویسی شی گرا:
++C امکانات کامل برای برنامهنویسی شی گرا را فراهم میکند، که شامل مفاهیمی مانند کلاسها، وراثت، پلیمورفیسم و کپسولسازی است. این ویژگیها کمک میکنند تا کدها ساختارمندتر، قابل نگهداریتر و قابل توسعهتر باشند، همچنین امکان استفاده مجدد از کدها را افزایش میدهد.
جمعبندی
یادگیری این زبان برنامهنویسی پر استفاده، یک ضرورت برای مهندسان رشتههای مختلف محسوب میشود. دورههای گروه آموزشی پارس پژوهان شامل آموزش کاربردی انواع زبانهای برنامهنویسی از جمله ++C هستند. اگر در مورد ویژگیها، کاربردها و مزایای زبان برنامهنویسی ++C سوالی دارید در نظرات با ما در میان بگذارید. دورههای گروه آموزشی پارس پژوهان با بالاترین کیفیت برگزار میشوند که میتوانید با مراجعه به لیست دورهها در دوره آموزشی مورد نیازتان شرکت نمایید.
نویسنده: محمد امین ساروخانی، کارشناس مهندسی کامپیوتر - رضا صفایی، کارشناس مدیریت صنعتی