نمایش نتایج 1 تا 1 از 1

نام تاپیک: زبان C++‎‎‎‎‎‎‎‎‎‎‎ چیست و چه مزیت هایی نسبت به زبان های دیگر دارد

  1. #1

    Lightbulb زبان C++‎‎‎‎‎‎‎‎‎‎‎ چیست و چه مزیت هایی نسبت به زبان های دیگر دارد

    زبان برنامه نویسی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎ زبانی است که دارای قابلیت زبان‌های سطح بالا و پایین به‌صورت هم‌ زمان است.

    اگر شما به دنبال محتوای به روز و مدرنی از این آموزش‌ها هستید این بخش را دنبال کنید.

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



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



    کتابخانه ها چه چیزی هستند و در این زبان چگونه است ؟ به مجموعه‌های یکپارچه‌ای از کلاس‌های پیاده سازی شده (به صورت فایل‌های سرآیند با پیاده سازی‌های کد یا اشیای زبان ماشین) که برای برنامه نویسی به کار می‌روند، یک کتابخانه C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ گفته می‌شود و قدرت اصلی این زبان در امکان به کارگیری کتابخانه‌های آماده می‌باشد برای مثال کتابخانه‌های بزرگ C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ مانند STL ، MFC ، Qt ، wxWidgets ، Boost و … مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کرده‌اند.


    لیستی از این کتابخانه های همراه با توضیحات در لینک زیر آمده است : http://en.cppreference.com/w/cpp/links/libs


    انواع کامپایلر ها که از طرف شرکت های سازنده و توسعه دهنده ارائه شده به صورت زیر اومده و نسخه 11 زبان C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ فقط روی کامپایلر های زیر قابل اجرا است.



    • MSVC-2012, 2013
    • Gcc 4.9
    • Clang 3.3
    • Intel 13.0



    لیست کامل انواع کامپایلر ها : https://en.wikipedia.org/wiki/List_of_compilers


    ویژگی های جدید در ویرایش 11 و 14 چیست؟ زبان C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎ 11 (معروف به C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ 0x) یک نسخه استاندارد از زبان C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎ است که در ۱۲ آگوست ۲۰۱۱ منتشر و توسط ISO جایگزین C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ 03 شد این نسخه دارای نشان ISO/IEC 14882:2011 می باشد و در تاریخ ۱۸ آگوست ۲۰۱۴ نسخه جدید آن یعنی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎14 منتشر و جایگزین C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 شد.


    امکانات اضافه شده به هسته C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ : یکی از وظایف کمیته استاندارد سازی توسعه هسته زبان است.در توسعه فعلی چندین بخش از زبان بهبود یافته ,که شامل چند نخی (multithreading) , پشتیبانی از بنامه نویسی عمومی ,مقدار دهی اولیه یکنواخت و پیشرفت عملکرد می باشد.


    ویژگی های هسته زبان و تغییرات آن به چهار بخش کلی دسته بندی شداند :

    1. پیشرفت در عملکرد زمان اجرا (Run-Time)
    2. پیشرفت در عملکرد زمان ساخت (Build-Time)
    3. پیشرفت در ویژگی ها (قابلیت استفاده)
    4. و قابلیت های جدید

    دستورات اضافه شده :


    • auto
    • nullptr
    • for each
    • override
    • Lambda
    • Strongly-typed enums
    • ()begin و () end
    • static_assert
    • smart pointer



    C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ 14 بر روی اشکال زدایی و بهبودهای جزیی استاندارد قبلی یعنی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 تمرکز کرده است ؛ این زبان در تاریخ ۱۵ می ۲۰۱۳ منتشر و در ۱۵ آگوست ۲۰۱۴ بعد از رای گیری و انجام تغییراتی جزیی استاندارد این زبان منتشر شد. بدلیل این که عموماً تاریخ انتشار این زبان بطور قابل ملاحظه‌ای دیر هنگام بوده است به C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎14 گاهی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎1y نیز گفته می‌شود. همانند استاندارد C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 که به آن C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎0x گفته می‌شده و قرار بر این بوده که قبل از ۲۰۱۰ منتشر شود (البته تا سال ۲۰۱۱ انتشار به تعویق افتاد).


    گرچه تمامی کامپایلر ها درحال کاربروی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎14 هستند اما هنوز تمامی آن ها ازC++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ 14 پشتیبانی نمیکنند.
    در C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 و C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎14 ت و توابع جدیدی به هسته اصلی زبان و کتابخانه استاندارد آن اضافه شده است که شامل بسیاری از کتابخانه های C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎TR 1 به استسنای کتابخانه ی توابع ریاضی ویژه میباشد.


    انتشار نسخه بعدی استاندارد این زبان با نام غیر رسمی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎17 برای سال ۲۰۱۷ برنامه ریزی شده است. در حالی که C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ به هیچ مؤسسه‌ای وابسته نیست این مستندات به‌صورت آزادانه در دسترس نیستند. گرچه نسخه‌های نهایی نشده(draft) این اسناد در دسترس همگان قرار می‌گیرد.

    کتابخانه های استاندارد چیست و در نسخه ی جدید C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 چگونه در دسترس خواهند بود ؟


    در زبان برنامه نویسی C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ کتابخانه استاندارد سی++ مجموعه‌ای از کلاس‌ها و رویه‌ها است که در هسته زبان نوشته شده‌اند و قسمتی از استاندارد ISO سی++ می‌باشند.
    در سال ۱۹۹۸ استاندارد C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ شامل دو بخش هسته زبان و کتابخانه استاندارد C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ است. این کتابخانه شامل بیشتر بخش‌های STL و کتابخانه استاندارد C است. بیشتر کتابخانه‌های C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ در استاندارد وجود ندارند و یا استفاده از تعریف قابلیت پیوند کتابخانه‌ها را می‌توان در زبان‌هایی مانند فرترن، C، پاسکال، بیسیک نوشته شوند. البته با توجه به ویژگی‌های کامپایلر مشخص خواهد شد که کدام زبان را می‌توان استفاده نمود.


    کتابخانه استاندارد C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است. بخش بزرگ بعدی این کتابخانه STL است. STL شامل ابزار بسیار قدرتمندی مانند نگه‌دارنده‌ها (مانند vector و list)، تکرارکننده‌ها (اشاره‌گرهای عمومی شده) برای شبیه‌سازی دسترسی مانند آرایه الگوریتم‌هایی برای جستجو و مرتب‌سازی در آنها وجود دارند. نقشه‌ها (نقشه‌های چندگانه) (آرایه شرکت‌پذیر) و مجموعه‌ها (مجموعه‌های چندگانه) واسط‌های عمومی فراهم می‌سازند. در نتیجه با استفاده از قالب تابع، الگوریتم‌های جنریک با هر نگه‌دارنده و دارای تکرارکننده عمل نماید. همانند C ویژگی‌های کتابخانه را می‌توان با استفاده از شبه دستور include# شامل یک سرآیند استاندارد اضافه نمود. C دارای ۶۹ کتابخانه استاندارد است که ۱۹ تا از آنها نامناسب تشخیص داده شده‌اند.


    استفاده از کتابخانه استاندارد - مانند std::vector یا std::string به جای آرایه‌های C موجب ایجاد برنامه‌های مطمئن‌ تر شده‌ است.
    STL در آغاز محصولی جداگانه از HP و سپس SGL پیش از ادغام در کتابخانه استاندارد C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ بوده‌است. استاندارد عبارت STL را بکار نمی‌برد بلکه آن را بخشی از کتابخانه می‌داند اما مردم هنوز هم آن را برای جداسازی بخش‌های مختلف کتابخانه با این نام بکار می‌برند. (جریان‌های ورودی/خروجی، جهانی‌سازی، تشخیص، زیرمجموعه کتابخانه C)


    بیشتر کامپایلرها کتابخانه استاندارد و STL را پیاده‌سازی می‌نماید. پیاده‌سازی‌های مستقلی نیز همانند STLport نیر وجود دارند. پروژه‌های دیگر نیز پیاده‌سازی‌های خود را از STL با توجه به اهداف خود بوجود می‌آورند.
    روش جدیدی جناب بیجارن در نظر گرفته که کتابخانه های استاندارد C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ علاوه بر اینکه توسط خود کامپایلر ها در دسترس و قابل استفاده هستش بلکه توسط کتابخانه STL و Boost نیز می توان دسترسی به مجموع عظیمی از کتابخانه ها استاندارد ISO داشت.


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



    • فایل با پسوند (c.) در این زبان : این فایل منبعی برای کد هایی از نوع زبان C هستند.
    • فایل با پسوند (cpp.) در این زبان : منبعی برای کد هایی از نوع زبان C و C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ هستند یعنی در هر دو نیز قابل استفاده می باشند.
    • فایل با پسوند (cxx.) در این زبان : منبعی برای کد هایی از نوع زبان C و C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ هستند یعنی در هر دو نیز قابل استفاده می باشند.
    • فایل با پسوند (hpp.) در این زبان معمولا فایل با عنوان (هدر/سرصفحه) یاد می شوند و معمولا فقط حاوی اعلان ها می باشند.
    • فایل با پسوند (h.) در این زبان معمولا فایل با عنوان (هدر / سر صفحه) یاد می شوند و معمولا فقط حاوی اعلان ها می باشند.
    • فایل با پسوند (hxx.) در این زبان : معمولا فایل با عنوان (هدر/سرصفحه) یاد می شوند و معمولا فقط حاوی اعلان ها می باشند.
    • فایل با پسوند (hh.) در این زبان : فایل با عنوان (هدر / سر صفحه) یاد می شوند و معمولا فقط حاوی اعلان ها می باشند.
    • فایل با پسوند (++h.) در این زبان : این نوع فایل ها معمولا فایل با عنوان (هدر/ سرصفحه) یاد می شوند و معمولا فقط حاوی اعلان ها می باشند.





    انواع فایل هایی که به آنها اشاره شد بسیار است ولی متناسب با محبویت و پشتیبانی کامپایلر ها از این فایل ها در این زبان برای انتخاب آنها مهم است بنا بر این در طی آموزش و تمامی مراحل ما فقط از فایل های h. برای هدر و فایل های cpp. برای منابع استفاده خواهیم کرد.


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


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


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


    آیا سیستم عامل ها و نرم افزار های مطرح دنیا توسط این زبان نوشته شده اند ؟ دلیل آن چیست ؟ همانگونه که مشخص است بسیاری از سیستم عامل ها از ابتدا توسط خانواده اسمبل ، C نوشته شده اند که به صورت زیر به تعدادی از آن ها اشاره میکنیم :


    • DragonFlyBSD,FreeBSD,OpenBSD,NetBSD
    • HP-UX
    • Centos,Debian,Fedora,OpenSUSE,RedHat,Ubuntu
    • OSX,iOS,Darwin
    • OracleSolaris,OpenIndiana
    • Cygwin
    • Android
    • Windows Phone
    • BlackBerry
    • WindowsXP,Vista,7,8,10



    دلیل آن که از زبان هایی مانند C/C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ رای نوشتن سیستم عامل استفاده میشود قابلیت های مهم آن است به عنوان مثال : پرفرمنس بالا ، مستقل از سکو ، زبان مادر بودن و عدم وابستگی آن به زبان های دیگر ، ارتباط با سخت افزار و تمامی دیوایس ها ، مدیریت هوشمندانه و همچنین آزادانه برنامه نویسی کردن ، دسترسی به لیست عظیمی از کتابخانه ها که میتوان توسط آن ها هر چیزی را در این زمینه خلق کرد.


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


    مدل ماشین هایی که پشتیبانی میشود : PowerPC , Oracle,Fujitsu,Sun, IBM,Freescale , AMD,Intel
    مدل پردازنده ها :



    • Athlon,Atom,Core,Core2,Corei3/i5/i7,Opteron,Pentium,Phenom,Sempron,Turion,etc
    • Itanium,Itanium2,Itanium29000/9100/9300,etc
    • PowerPC,POWER1/2/3/4/5/6/7,G1,G2,G3,G4,G5,etc
    • UltraSPARCI/II/III/IV/T1/T2,SPARCT3/T4,etc



    با پشتیبانی از این نوع پردازنده ها قابلیت آن را به برنامه نویس میدهد تا بر روی وسعت بسیار زیادی از سیستم های مجهز به پردازنده ها برنامه نویسی کند این امر همان دلیلی است که انواع سیستم عامل ها بر روی سخت افزار های معرفی شده میتوانند اجرا شوند زیرا که برنامه نویسی با چنین زبانی قابلیت های ذکر شده را فراهم خواهد کرد.

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

    کنسول های بازی مانند PlayStation که همینک نسخه 4 آن در بازار موجود است دارای پردازنده ای بر پایه Power PC میباشد با سخت افزار بسیار قدرتمند توسط سیستم عاملی بی نقص بر پایه FreeBSD توسط C/C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ توسعه داده شده است.
    و در رابطه با دیگر کنسول هایی مانند Xbox One نیز همچنین میتوان ذکر کرد که این دو مورد مطرح ترین و داغترین بازار کنسول های بازی را در صنعت بازی همراه با پلتفرم PC دارند.


    بنابراین صنعت بازی سازی و هوش مصنوعی تماما بر پایه قدرتمندترین زبان توسعه می یابد چرا که استفاده از موتور های گرافیکی مانند Unreal Engine و یا سیستم های پردازشی 3 بعدی مانند OpenGL و Direct X توسط این زبان توسعه داده میشوند تا بازی سازان بستری را فراهم نمایند تا دنیای پیش روی بازی کننده را به واقعیت نزدیکتر نمایند.


    همچنین در رابطه با این صنعت میتوان به صنعت نرم افزار های مهندسی و سخت افزار های مناسب ذکر کرد مانند محصولات Autodesk که نرم افزار های قدرتمندی چون Autocad , 3dsmax و .. را برای صنعت مهندسی فراهم نموده اند و سخت افزار های قدرتمندی مانند محصولات NVIDIA و AMD ATI نیز کتابخانه های توسعه را برای زبان C/C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ منتشر کرده اند و حتی میتوان به Intel اشاره نمود که برای توسعه سیستم نرم افزاری در محصولات آن زبان C/C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ را پیشنهاد نموده و کتابخانه های لازم را فراهم کرده اند که حال در نظر بگیریم چنین سخت افزار ها در سازمان های بسیار کاربردی مانند NASA قابل استفاده است که حجم عظیمی از اطلاعات را پردازش میکنند.


    کاربرد این زبان در زمینه وب چگونه است ؟


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


    وب سایت Facebook را در نظر بگیرید چندی پیش بود که به دلیل افزایش کاربران و حجم اطلاعات آن فشاری که بر روی سرور های این شرکت آمده بود بسیار بالا بود و برای بهبودی آن نیازمند هزینه و افزایش تجهیزات سخت افزاری داشت که با نوشتن کامپایلری برای PHP توسط C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ توانست این مشکل را برطرف نماید و نیازی برای افزایش سخت افزار و هزینه های کلان برای به روز رسانی سرور ها نشد دلیل استفاده و بهینه سازی توسط C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎بود که نام آن HipHop میباشد.


    در رابطه با دیگر سیستم های وب سایت نیز میتوان اینگونه اشاره کرد که در لایه های زیرین استفاده های بسیاری از این زبان میشود به عنوان مثال کتابخانه های قدرتمندی از طرف Google با نام V8 ارائه داده شده است.


    سوال : من تاکنون در محیط کنسول با C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ برنامه نویسی کرده ام چگونه میتوان برنامه های گرافیکی دارای رابط کاربری مدرن طراحی کرد ؟ روش استفاده و پیشنهادات چیست ؟
    متاسفانه امروزه در کشور ما به دلیل عدم به روز بودن نظام آموزشی در رشته کامپیوتری و شاخه برنامه نویسی دانشجویان و برنامه نویسانی که فارغ التحصیل میشوند معمولا با زبان های C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ در حد محیط های Console و محیط توسعه TurboC و یا IDE معروف Visual Studio آشنا هستندکه متاسفانه باید به این نکته اشاره کنیم هیچ یک از نرم افزار های قدرتمند و سیتسم هایی که در موارد بالا ذکر شده در این محیط ها طراحی و توسعه داده نشده اند.

    این زبان آزادانه برنامه نویسی کردن را برای برنامه نویس فراهم میکند ولی متاسفانه شرکت هایی که توسط IDE های خود سیاست های محدود کننده خود را با نام کتابخانه برای C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ تزریق میکنند باعث گمراهی توسعه دهندگان و عدم شناخت صحیح از این زبان شده اند که در زیر به آن ها اشاره خواهیم کرد.

    اگر دقت کنیم در محیط های توسعه Visual Studio پروژه هایی که برای C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ در نظر گرفته شده است تحت کتابخانه های MS میباشد که تماما از API های مختص ویندوز در آن ها استفاده میشود و برنامه نویس هر چیزی را که خلق کند در انحصار مایکروسافت و سیستم عامل Windows منتشر کرده است! ولی هدف C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ این نیست ! هدف این است که به صورت ازادانه و بدون محدودیت باید برنامه نویسی کرد بنابراین مقدمات و همچنین کتابخانه های بسیار زیادی که به صورت استاندارد معرفی شده اند برای این زبان وجود دارد که میتوانید در هر بستر سخت افزاری با هر نوع سیستم عاملی از آن استفاده کنید.


    حال چگونه باید طراحی رابط کاربری را انجام دهیم ؟


    برای طراحی رابط گرافیکی ابتدا باید ذهن خود را از محیط VS و همچنین کنسول کنار بکشید لذا برای این کار کتابخانه های مخصوصی در نظر گرفته شده است به صورت زیر :



    • FLTK
    • nana
    • WxWidgets
    • OWLNext
    • GTK+
    • glibmm
    • gtkmm
    • goocanvasmm
    • libglademm
    • libgnomecanvasmm
    • webkitgtk
    • flowcanvas
    • evince
    • Qt
    • libdbusmenu-qt



    توسط این کتابخانه های می توان محیط های کاربری را فراهم نمود که در این میان دو کتابخانه wXwidgets و Qt بسیار قدرتمند عمل کرده اند که بین این دو نیز Qt با قدرت بسیار زیادی از رقیب خود یعنی wXwdidget پیشی گرفته است و معمولا پروژه هایی که در آن رابط کاربری خلاقانه (Creative) و مدرن مطرح است حرف از Qt به میان خواهد آمد.


    در رابطه با آموزش برای کتابخانه wxWidgets به این لینک مراجعه نمایید | همچنین در رابطه با آموزش های مربوط به Qt به این لینک مراجعه نمایید.


    دانش کافی برای کار با این زبان چیست ؟

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

    پیشنهادات ما استفاده از مقالات خارجی و منابع رسمی میباشد که رسمی ترین آن ها :http://www.cplusplus.com و http://en.cppreference.com/w/ خواهند بود.
    لینک ها و منابع بسیار زیادی هستند که اساتید و کاربران حرفه ای میتوانند به آن ها در این تاپیک اشاره نمایند.

    بازار کار این زبان در ایران چگونه است ؟

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

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

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


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


    اشاره ای بر انواع موتور های دیتابیس که توسط C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ پشتیبانی میشوند :



    • SQL
    • SQLite
    • MySQL
    • Sybase Adaptive Server
    • SQL Server
    • Oracle
    • PostgreSQL
    • IBASE : Borland
    • IBM DB2
    • و غیره...





    آیا با C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ میتوان برنامه های موبایلی مانند Android , iOS و غیره را تولید کرد ؟


    همانطور که میدانید امروزه صنعت توسعه نرم افزار در بازار کار تبلت و موبایل بسیار پیشرفت کرده و با سرعت بالایی رو به پیشرفت است بنا براین در این میان فناوری Cross Platform بودن نیز مطرح است.
    اگر نیاز است برنامه ای را تولید کنیم که در Android قابل اجرا باشد میبایست توسط زبان هایی مانند Java آن را توسعه دهیم و یا اگر نیاز است برای iOS برنامه ای را منتشر کنیم نیاز است با زبان Objective-C آشنا باشیم و همچنین محیط xCode که مختص بستر های Apple است و شما بدون داشتن سیستم Apple تحت سیستم عامل مک نخواهید توانست این ایده را پیاده سازی نمایید، یا برای طراحی و ساخت برنامه های blackberry نیز باید با C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ آشنا باشید و در رابطه با دیگر موارد مانند Windows Phone همچنین است که یاد گیری تمامی این موارد برای خود زحماتی را خواهد داشت بنابراین برای خلاصی از این همه پیچ و خم تنها کافیست با C++‎‎‎‎‎‎‎‎‎‎‎‎‎ آشنا باشید که توسط کتابخانه های قدرتمندی مانند Qt میتوانید برنامه خود را برای تمامی این پلتفرم ها منتشر نمایید که باید چنین ذکر کنیم که توسط C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎ چیزی در دنیای برنامه نویسی غیر ممکن نیست.


    حال چگونه توسط C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ میتوان همه این موارد را فراهم کرد؟ آیا قرار است برای هر کدام مجددا برنامه نویسی و طراحی شود ؟
    آیا قابلیت هایی که محیط های مخصوص آن دارند را توسط C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ میتوان فراهم کرد ؟


    پاسخ این سوال اینگونه خواهد بود ، زبان C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ یک زبان خود مختار و مادر است بنا براین چرا که نه ؟! به راحتی و با انتخاب کتابخانه مورد نظر خود میتوانید اقدام به طراحی و تولید برنامه های Cross Platform کنید برای مثال شما میتوانید با انتخای یکی از کتابخانه های طراحی مانند Qt اقدام به طراحی و کد نویسی نموده و کافی است با کامپایل برنامه نوشته شده در سیتم عامل های مربوطه آن ها را منتشر نمایید.
    هیچ نیازی نخواهد بود برای هر سیستم عامل مجددا کد نویسی و طراحی کنید لذا یک بار کد نویسی کافی است و زمان بسیار زیادی برای تمرکز بر روی مواردی همچون رفع باگ و توسعه برنامه شما در تمامی محیط ها به صورت یکباره خواهد بود.


    پیشنهاد ما در رابطه نحوه شروع برای یادگیری و آشنایی با زبان و انواع کتابخانه ها به صورت زیر است :



    1. قبل از هر چیز هدف خود را در رابطه با منابع مشخص نمایید ! اگر زبان انگلیسی شما خوب است میتوانید در همین قدم اول از منابع رسمی و استاندارد که بی نقص هستند استفاده کنید.
    2. سعی کنید اگر قرار است این زبان را یاد بگیرید عملا با آن درگیر شوید.
    3. از مقدمات برنامه نویسی شروع کنید و حتما در رابطه با تاریخچه زبان و اهداف آن تحقیق کنید.
    4. شرکت و سازمان های بزرگ و موفق را الگو قرار دهید.
    5. اگر هدف شما سریع رسیدن به پول بدون در نظر داشتن کیفیت و اهداف بزرگ از پروژه هستش به هیچ عنوان سراغ این زبان نروید زیرا C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ برنامه نویس حرفه ای را میطلبد نه برنام نویس راحت طلب.
    6. برای حرفه ای شدن در برنامه نویسی با C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ نسخه های C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 و 14 آن را بیاموزید.
    7. برای استفاده و کار با کتابخانه های این زبان بهتر است کتابخانه های داخلی مانند STL را بیاموزیم چرا که کتابخانه های پیشفرض آن مهم است.
    8. در رابطه با کتابخانه های عمومی Boost,Qt,STL مناسبترین گزینه میباشند.
    9. برای توسعه هرچه بیشتر پروژه و استفاده از انواع قابلیت ها توسط این زبان میبایست از کتابخانه های دیگر استفاده کنیم که در این میان در رابطه با بخش طراحی و رابط کاربریQt، GTK, MFC, SDL , wxWiddgets مناسب است که پیشنهاد ما در میان این لیست (Qt) خواهد بود که تحت آن میتوان مدرنترین طراحی ها را خلق نمود.
    10. برای کار با شبکه کتابخانه های Poco, Qt, RakNet, ReplicaNet, SDL موجود هستند و در بین اینها Poco بهترین گزینه میتواند باشد.
    11. برای کار با 3D بعدی کتابخانه مخصوص OpenGL یا باز همان Qt را که بر پایه موتور OpenGL است پیشنهاد میکنیم و یا میتوانید از کتابخانه های مخصوص DirectX و OpenGL به صورت تخصصی استفاده کنید.
    12. در رابطه با 2D نیز از OpenGL، Direct2D, GDI و GDI+ میتوان استفاده کرد.
    13. در مورد Sound از کتابخانه های مطرح OpenAL, Fmod و Bass استفاده کنید.
    14. در مورد بحث فیزیک کتابخانه های Nvidia Physix, Nvidia Apex, Bullet, Box2D, ODE, Open Dynamics
    15. در رابطه با هوش مصنوعی کتابخانه های OpenAI, FEAR, OpenSteer, PathLib مطرح هستند.
    16. برای کار با پردازش تصویری OpenCV, OpenNI پیشنهاد میشود.
    17. برای کار با پردازش موازی OpenCL, OpenML, CUDA مناسب است.
    18. برای اسکریپت نویسی Lua, LuaPlus, Phyton
    19. برای کار با ورودی ها از OpenInput, Qt, SDL, SFML میتوان استفاده کرد.
    20. برای بازی سازی کتابخانه های Unreal Engine, OGRE, Irrlicht, KGE مناسب هستند که در بین اینها Unreal Engine بسیار قدرتمند عمل میکند.
    21. برای طراحی و اجرای وب سایت کتابخانه های WebKit, ClearSilver, Teng مناسب هستند.
    22. لازم بذکر است این ها نمونه کتابخانه هایی هستند که برنامه نویس بر اساس سلیقه و ویژگی های موجود در کتابخانه میتواند انتخاب و از آن استفاده نماید و همچنین به این نکته اشاره کنیم معمولا کتالبخانه های عمومی برای اجرای پروژه های معمولی پاسخگو هستند برای مثال با انتخاب Qt میتوانید یک نرم افزار خوب را با تمام قابلیت ها تولید کنید.
    23. و هزاران کتابخانه برای اهداف خاص که توسط اشخاص ، شرکت ها و سازمان های مختلف ارئه میشوند.



    اطلاعات در پست های بعدی به روز رسانی خواهد شد...
    مدیران و اساتید محترم اگه چیزی به ذهنتون میرسه که اینجا از قلم افتاده یا من اشتباه اشاره کردم ذکر کنید.
    امیدوارم این اعلان جلوی بسیاری از اسپم هایی که روزانه دریافت میکنیم رو بگیره تا نیازی نباشه سوالات تکراری پرسیده شود.
    آخرین ویرایش به وسیله کامبیز اسدزاده : یک شنبه 17 تیر 1397 در 15:54 عصر دلیل: ویرایش و تکمیل اطلاعات در رابطه با بخش موبایل و انواع دیوایس ها.

تاپیک های مشابه

  1. نرم افزار های مورد استفاده زبان Vxml چیست؟
    نوشته شده توسط madrazma در بخش XML و کاربرد آن
    پاسخ: 2
    آخرین پست: یک شنبه 25 دی 1390, 21:01 عصر
  2. آیا شی گرایی در زبان ها میتونه عاملی برای کاهش سرعت کامپایل اونها نسبت به زبان های غیر شی گرا باشه؟
    نوشته شده توسط amirjalili در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 3
    آخرین پست: جمعه 28 آبان 1389, 13:45 عصر
  3. cms های رایگان به زبان ASP
    نوشته شده توسط omid_safari در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: پنج شنبه 15 شهریور 1386, 16:05 عصر
  4. مزیت اراکل نسبت به sql
    نوشته شده توسط kowsar_63 در بخش Oracle
    پاسخ: 10
    آخرین پست: چهارشنبه 06 اردیبهشت 1385, 07:57 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •