گشتاسب مظفریان – GMozafarian

مشاور و توسعه دهنده نرم افزار -Adviser and Software Developer

۴

معرفی C++

به نام اهورامزدای پاک

 سی پلاس پلاس چیست؟

زبان برنامه نویسی C++ در سال ۱۹۸۵ توسط Bjarne Stroustup دانشمند دانمارکی در آزمایشگاه AT&T بعنوان توسعه ای بر زبان C بوجود آمد. افزونه هایی که بر این زبان اضافه شد، از زبان Simula گرفته شده بودند. از آن زمان تا کنون، C++، با سرعت زیادی در راستای نیازهای عملی برای یک زبان برنامه نویسی رو به رشد است، نیازهایی که یک زبان برنامه نویسی را قادر می سازد تا بطور موثری انواع مختلفی از داده ها را در کنار یکدیگر مدیریت نماید. محور اصلی در پیاده سازی این زبان برنامه نویسی، مفهوم برنامه نویسی شی گرا است (OOP). البته C++ جزو زبان های چندرگه که از برنامه‌نویسی رویه‌ای، تجرید داده‌ها و برنامه‌نویسی شیءگرا  و… پشتیبانی می‌کنند هست و همچنین دارای قابلیت‌های سطح بالا و سطح پایین می‌باشد. امروزه، C++ بازار تجاری را در اختیار خود گرفته است بطوریکه این زبان برنامه نویسی، هم برای برنامه نویسان سیستم های عامل (همانند لینوکس , مک و ویندوز) و هم برای برنامه نویسان نرم افزارهای کاربردی (همانند فتوشاپ و… )، مورد پسند می باشد.

تاریخچه C++

استراس‌تروپ کار بر روی زبان «C با کلاس» را در سال ۱۹۷۹ آغاز کرد. ایدهٔ ساخت این زبان جدید در زمان کار بر روی تز دکترای خود به ذهن استراس‌تروپ خطور نمود. او متوجه شد که سیمولا دارای ویژگی‌هایی مناسب برای ساخت برنامه‌های بسیار بزرگ است اما برای استفادهٔ عملی بسیار کند است اما بی‌سی‌پی‌ال با وجود سرعت بسیار زیاد برای ساخت برنامه‌های بزرگ بسیار سطح پایین است. زمانی که استراس‌تروپ کار خود را در آزمایشگاه‌های بل (Bell Labs) آغاز نمود با مشکل تحلیل هسته یونیکس با توجه به محاسبات توزیع شده روبرو شده بود. با یادآوری تجربیات خود در دوران دکترا، او زبان C را با استفاده از ویژگی‌های سیمولا گسترش داد. C به این دلیل انتخاب شد که یک زبان عمومی، سریع، قابل حمل، و در سطح گسترده‌ای در حال استفاده بود. علاوه بر C و سیمولا زبان‌های دیگری مانند ALGOL ۶۸، ADA، CLU، ML نیز بر ساختار این زبان جدید اثر گذاشت. در ابتدا ویژگی‌های کلاس، کلاس‌های مشتق شده، کنترل نوع قوی، توابع درون‌خطی و آرگومان‌های پیش‌فرض از طریق Cfront به C اضافه شد. اولین نسخهٔ تجاری در سال ۱۹۸۵ ارائه شد.

در سال ۱۹۸۳ نام زبان از «C با کلاس» به ++C تغییر یافت. ویژگی‌های دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر به‌صورت آزاد، کنترل نوع بهتر، و توضیحات یک‌خطی به صورت BCPL با استفاده از «//» نیز به آن اضافه شد. در سال ۱۹۸۵ اولین نسخه زبان برنامه‌نویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمی‌ای وجود نداشت. در سال ۱۹۸۹ ویرایش ۲٫۰ از زبان ++C ارائه شد. ویژگی‌های جدیدی مانند ارث‌بری چندگانه، کلاس‌های انتزاعی، اعضای ایستای توایع، اعضای ثابت تابع، و اعضای حفاظت شده به آن اضافه شد. در سال ۱۹۹۰ «راهنمای مرجع ++C» منتشر شد. این کار بنیان استانداردهای بعدی شد. آخرین ویژگی‌های اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، فضاهای نام، تبدیلات جدید، و یک نوع داده منطقی.

در حین تکامل ++C کتابخانهٔ استاندارد نیز به‌وجود آمد. اولین نسخهٔ کتاب استاندارد شامل کتابخانهٔ جریانات I/O بود که جایگزین printf و scanf شد. در ادامه مهم‌ترین ویژگی اضافه شده Standard Template Library بوده‌است.

نام C++

این نام منسوب به ریک ماسکیتی (اواسط ۱۹۸۳) است و برای اولین بار در دسامبر سال ۱۹۸۳ به کار برده شد. در طول مدت تحقیق این زبان بنام «C جدید» و بعدها «C با کلاس» خوانده شد. در علوم کامپیوتر هنوز هم ++C به عنوان ابرساختار C شناخته می‌شود. آخرین نام از عملگر ++ در زبان C (که برای افزایش مقدار متغیر به اندازهٔ یک واحد بکار می‌رود) و یک عرف معمول برای نشان دادن افزایش قابلیت‌ها توسط + ناشی گشته‌است. با توجه به نقل قولی از استراس‌تروپ: «این نام ویژگی‌ها تکاملی زبان در C را نشان می‌دهد.» +C نام زبانی غیرمرتبط به این زبان است.

استراس‌تروپ مبدأ این نام را در فصل اول کتاب خود «زبان برنامه‌نویسی ++C» اشاره می‌نماید که معنی دیگر ++C را می‌توان در ضمائم کتاب جرج ارول بنام ۱۹۸۴ یافت. در سه قسمت از زبان تخیلی Newspeak «کلمات C» برای اشاره به لغات فنی و حرفه‌ای بکار می‌رود. «دو علامت +» برای ایجاد صفات عالی از صفات Newspeak به کار می‌رفت بنابراین ++C به معنای زبانی با بیشترین شباهت به C است.

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

اهداف

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

ساختار C++

ساختار برنامه‌ها در این زبان بدین صورت است که همانند زبان سی، هر برنامه بایستی یک تابع اصلی (main) به عنوان بدنه برنامه داشته باشد. هر برنامه معمولاً از تعداد زیادی فایل تشکیل می‌شود که به هم الحاق می‌گردند (با دستور include) و به این فایل‌های الحاقی، سرآیند (Header) گفته می‌شود. فایل‌های الحاقی حاوی کدها یا نسخه‌های اجرایی کلاس‌ها (مجموعه متغیرها و توابع) می‌باشند که در بدنه اصلی برنامه از آنها استفاده می‌شود. معمولاً هر کلاس (که تعریف یک نوع داده‌ای با متدهای مربوط به آن است) را در یک سرآیند می‌نویسند. هر سرآیند که معمولاً تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایل‌های پیاده‌سازی به زبان ++C یا پیاده‌سازی‌های کامپایل شده (به صورت فایل اشیاء مانند dll یا so یا …) می‌تواند به کار برده شود. به مجموعه‌های یکپارچه‌ای از کلاس‌های پیاده‌سازی شده (به صورت فایل‌های سرآیند با پیاده‌سازی‌های کد یا اشیای زبان ماشین) که برای برنامه نویسی به کار می‌روند، یک کتابخانه ++C گفته می‌شود و قدرت اصلی این زبان در امکان به کارگیری کتابخانه‌های آماده می‌باشد. کتابخانه‌های بزرگ ++C مانند STL، MFC، QT و … مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کرده‌اند.

روش های برنامه نویسی

زبان برنامه نویسی ++C از روش های (Paradigm’s) بسیار زیادی پشتیبانی می کند اما مهمترین آن ها به شرح زیر می باشد :

Multi-paradigm

procedural

functional

object-oriented

generic

استاندارد ها

استاندارد سازی سی++ توسط یک گروه از تشکیلات ISO انجام می‌شود. تاکنون ۴ نسخه از استاندارد این زبان منتشر شده است؛ و استاندارد C++17 نیز برای انتشار در سال ۲۰۱۷ برنامه ریزی شده است.

سال استاندارد سی++ نام غیر رسمی
۱۹۹۸ ISO/IEC 14882:1998 pdf C++98
۲۰۰۳ ISO/IEC 14882:2003 pdf C++03
۲۰۰۷ ISO/IEC TR 19768:2007 pdf C++TR1
۲۰۱۱ ISO/IEC 14882:2011 pdf C++11
۲۰۱۴ ISO/IEC 14882:2014 pdf C++14
۲۰۱۷ هنوز تعیین نشده. C++17

در سال ۱۹۹۸ برای اولین بار پس از سال‌ها کار کمیته مشترک ANSI–ISO این زبان تحت عنوان ISO/IEC 14882:1998  و نام غیر رسمی C++98 استاندارد سازی شد. بعدها در سال ۲۰۰۳ نسخه جدیدی از استاندارد یعنی ISO/IEC 14882:2003 انتشار یافت و برخی از مشکلات و باگ‌های C++98 در آن رفع شد.

در سال ۲۰۰۵ یک گزارش فنی به اسم «گزارش فنی کتابخانهٔ ۱» (که معمولاً بصورت اختصار TR۱ خوانده می‌شود) منتشر شد که مواردی جدید را برای اضافه کردن به کتابخانه استاندارد در برداشت با این که این گزارش قسمتی از استاندارد نبود ولی بعدها در نسخه بعدی استاندارد یعنی C++11 اضافه شد.

نسخه بعدی با نام غیر رسمی C++11 و استاندارد  ISO/IEC 14882:2011 در تاریخ ۱۲ اوت ۲۰۱۱ مورد تأیید سازمان بین‌المللی استانداردسازی قرار گرفت و جایگزین C++03 شد .

در سال ۲۰۱۴ آخرین نسخه از این زبان تا حال حاضر در در تاریخ ۱۸ آگوست ۲۰۱۴ با نام غیر رسمی C++14 و استاندارد ISO/IEC 14882:2014 منتشر شد. هدف اصلی C++14 همانند C++03 رفع مشکلات و همچنین اضافه کردن ویژگی‌ها و بهبود جزیی C++11 بوده است.

انتشار نسخه بعدی استاندارد این زبان با نام غیر رسمی C++17 برای سال ۲۰۱۷ برنامه ریزی شده است.

در حالی که ++C به هیچ مؤسسه‌ای وابسته نیست این مستندات به‌صورت آزادانه در دسترس نیستند. گرچه نسخه‌های نهایی نشده(draft) این اسناد در دسترس همگان قرار می‌گیرد.

بعضی از پروژه ها

از مهمترین پروژه های انجام شده با زبان C++ میتوان

Adobe Systems

(تمامی نرم افزار های شرکت Adobe توسط زبان C++ نوشته شده است از میان این برنامه ها می توان به Photoshop , Primaire , Flash و … اشاره کرد.)

Google

(تقریبا میتوان گفت ۹۰% از اپلیکیشن ها و ابزار های گوگل توسط C++ نوشته شده اند از میان ای ابزار و برنامه ها میتوان به Google file system و Google Chromium اشاره کرد.)

Mozilla

(مرورگر Mozilla نیز با C++ نوشته شده است.)

MySQL

(بی شک بزرگترین نرم افزار دیتابیس جهان mysql است و بهتر است بدانید ۱۰۰میلیون نسخه از این برنامه تا به حال دانلود شده است و ۹۵% وبسایت های دنیا از این دیتابیس استفاده میکنند. بله این نرم افزار هم با C++ ساخته شده است.)

Apple – OS X

(OS X یکی از زیباترین و شکیل ترین سیستم عامل های دنیا محصول شرکت Apple نیز با C++ ساخته شده است.)

Microsoft

(برنامه هایی همچون Visual studio و office و همچنین خود سیستم عامل های این شرکت با زبان C++ نوشته شده اند.)

و

Symbian OS

(Symbian که یک سیستم عامل موبایلی است نیز با C++ نوشته شده است.)

را نام برد همچنین

Alias System – Autodesk Maya

Winamp Media Player

۱۲D Solutions

Bloomberg

callas Software

Image Systems

و خیلی از برنامه های دیگر نیز با زبان C++ ساخته شده و میشوند…

کتابخانه های داخلی

در سال ۱۹۹۸ استاندارد ++C شامل دو بخش هسته زبان و کتابخانه استاندارد ++C شد. کتابخانه استاندارد ++C شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است. وشامل مجموعه‌ای از کلاس‌ها و رویه‌ها است که در هسته زبان نوشته شده‌اند و قسمتی از استاندارد ISO سی++ می‌باشند.

کتابخانه ی C
نگهدارنده ها

جریان های ورودی/خروجی

click on an element for detailed information

کتابخانه های نخ کشی و Atomics
دیگر هدر ها

پ.ن: اگر مطالبی دارید که فکر میکنید باید اضافه بشه میتونید اونو به آدرس GMozafarian@gmail.com ارسال کنید .

منابع :

پ.ن: اگر مطالبی دارید که فکر میکنید باید اضافه بشه میتونید اونو به آدرس GMozafarian@gmail.com ارسال کنید .

 

 

پست های مرتبط

لینک کوتاه: http://GMozafarian.ir/fQa05
C++ کاملآموزشآموزش C++آموزش برنامه نویسیاستاندارد هااهداف C++برنامهبرنامه نویسیبعضی از پروژه هاپشتیبانیپلاسپلاس پلاستاریخچهتاریخچه C++دانلوددانلود کتابدانلود کتاب C++14روش های برنامه نویسیساختار C++سیسی پلاس پلاسسی پلاس پلاس چیست؟فارسیکاملکتابکتاب فارسیکتابخانه های خارجیکتابخانه های خارجی c++کتابخانه های داخلیکتابخانه های داخلی C++معرفیمعرفی C++معرفی کاملمعرفی کامل C++نام C++نویسی

گشتاسب مظفریان گشتاسب مظفریان • آذر ۹, ۱۳۹۴


پست‌های قبلی

پست‌های بعدی

Comments

  1. محمد حسن آذر ۲۱, ۱۳۹۴ - ۱۰:۳۵ ق.ظ Reply

    خیلی کامل بود ممنون لطفا ادامه بدید.

  2. شمشاد اسفند ۱۸, ۱۳۹۴ - ۱۱:۱۴ ق.ظ Reply

    درود
    فکر کنم نسبت به زبان هایی مانند php کلی عقبه
    گسترشش به چه نحوه ؟ مثل php مرتب آپدیت میشه؟

    • گشتاسب مظفریان

      گشتاسب مظفریان اسفند ۱۸, ۱۳۹۴ - ۱۱:۳۰ ق.ظ Reply

      درود
      فکر کنم همین کافی باشه که زبان php رو با زبان C نوشتن و C++ ارتقاء یافته زبان C هست ( C++ همون زبان C هست باقابلیت شئ گرایی و کتابخانه ای بسیار قدرتمندتر که کتابخانه C را هم شامل میشه).
      گرچه با C++ هم میشه وب اپلیکیشن کار کرد اما php مخصوص وب اپلیکیشن هست و کارباهاش برای ساخت وبسایت راحت تر هست .
      (فکر کنم کلا مقایسه این دوتا باهم کار خوبی نباشه)

  3. Melanielauch آبان ۲, ۱۳۹۵ - ۱۱:۵۲ ق.ظ Reply

    XRumer 12.0.19 is the BEST

پاسخ دهید

Your email address will not be published / Required fields are marked *