سی یکی از زبان های برنامه نویسی محبوب و قدرتمند است که تعداد زیادی برنامه نویس رو به سمت خود جذب کرده است. زبان C را میتوان پدر زبان برنامه نویسی سی پلاس و پدربزرگ زبان سی شارپ دانست. زبان های جاوا و C++ بر پایه سی نوشته و ایجاد شده اند.
زبان برنامه نویسی سی یک زبان همه منظوره، سطح میانی، ساخت یافته و دستوری است. یکی از مزیت های زبان سی، عدم وابستگی به سخت افزار یا سیستم عامل خاصی است.
امروزه برنامه ریزی ریز کنترل ها و انواع سیپییوها و همچنین تولید سیستم عامل های جدید و نرم افزارهای کاربردی از طریق زبان C صورت می گیرد.
تاریخچه C:
در سال ۱۹۶۷ مارتین ریچاردز زبان BCPL را برای نوشتن نرمافزارهای سیستمعامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال ۱۹۷۰ کن تامسون زبان B را بر مبنای ویژگیهای زبان BCPL نوشت. زبان C در سال ۱۹۷۲ توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع دادهها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستمعامل یونیکس استفاده کرد اما بعدها اکثر سیستمعاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب The C Programming Language در سال ۱۹۷۸ توسط برایان کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.
در سالهای بعد و با ظهور روشهای برنامهنویسی شئگرا نسخه جدیدی از زبان C بنام ++C توسط بییارنه استراستروپ در اوایل ۱۹۸۰ در آزمایشگاههای بل توسعه یافت. در ++C علاوه بر امکانات جدید، خاصیت شئگرایی نیز به C اضافه شدهاست.
با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامههای آن بتوانند بر روی هر ماشین و هر سیستمعامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبان جاوا را برمبنای C و ++C ایجاد کرد که هماکنون از آن در سطح وسیعی استفاده میشود و برنامههای نوشته شده به آن بر روی هر کامپیوتری که از جاوا پشتیبانی کند قابل اجرا میباشد.
تاریخچه C++:
استراستروپ کار بر روی زبان C دارای کلاس را در سال ۱۹۷۹ آغاز کرد. ایدهٔ ساخت این زبان جدید در زمان کار بر روی تز دکترای خود به ذهن استراستروپ خطور نمود. او متوجه شد که سیمولا دارای ویژگیهایی مناسب برای ساخت برنامههای بسیار بزرگ است اما برای استفادهٔ عملی بسیار کند است اما بیسیپیال با وجود سرعت بسیار زیاد برای ساخت برنامههای بزرگ بسیار سطح پایین است.
در سال ۱۹۸۳ نام زبان از C با کلاس به ++C تغییر یافت. ویژگیهای دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر بهصورت آزاد، کنترل نوع بهتر، و توضیحات یکخطی به صورت BCPL با استفاده از ( // ) نیز به آن اضافه شد. در سال ۱۹۸۵ اولین نسخه زبان برنامهنویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمیای وجود نداشت. در سال ۱۹۸۹ ویرایش ۲٫۰ از زبان ++C ارائه شد. ویژگیهای جدیدی مانند ارثبری چندگانه، کلاسهای انتزاعی، اعضای ایستای توابع، اعضای ثابت تابع، و اعضای حفاظت شده به آن اضافه شد. در سال ۱۹۹۰ راهنمای مرجع ++C منتشر شد. این کار بنیان استانداردهای بعدی شد. آخرین ویژگیهای اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، فضاهای نام، تبدیلات جدید، و یک نوع داده منطقی.
در حین تکامل ++C کتابخانهٔ استاندارد نیز بهوجود آمد. اولین نسخهٔ کتاب استاندارد شامل کتابخانهٔ جریانات I/O بود که جایگزین printf و scanf شد. در ادامه مهمترین ویژگی اضافه شده Standard Template Library بودهاست.
ویژگی های زبان برنامه نویسی C :
- یک زبان چند منظوره است
- تاثیر گذارترین زبان برنامه نویسی در دنیای کامپیوتر است
- یک زبان ساخت یافته و قابل حمل است
- زبان برنامه نویسی سیستم است
- زبان کوچکی است و تعداد کلمات کلیدی آن انگشت شمار است
- یک زبان برنامه نویسی سطح میانی است
- دارای سرعت، قدرت و انعطاف پذیری بالایی است
- هیچ محدودیتی را برای برنامه نویس به وجود نمی آورد
- نسبت به حروف حساس است و تمام کلمات کلیدی این زبان با حروف کوچک نوشته میشوند
چند نکته کلیدی در زبان برنامه نویسی سی :
- دستورات به ; ختم می شوند
- دستورات یا چیزایی که بعد از // هستن خونده نمی شوند
- در هر سطر هم میتوان چند دستور نوشت
- حداکثر طول هر خط ۲۵۵ تا است
- زبان C بین حروف بزرگ و کوچک فرق میزاره مثلا void با VOID فرق دارد
کلمات پر تکرار در زبان برنامه نویسی سی :
- auto
- double
- int
- struct
- break
- else
- long
- switch
- case
- enum
- register
- typedef
- char
- extern
- return
- union
- const
- float
- short
- unsigned
- continue
- for
- signed
- void
- default
- goto
- sizeof
- volatile
- do
- if
- static
- while
- restrict
تفاوت زبان سی و سی پلاس پلاس
اگر بخواهیم تفاوت زبان برنامه نویسی C و C++ رو مورد بررسی قرار دهیم باید به چند مورد خاص توجه کنیم. اصلی ترین تفاوت زبان سی و سی پلاس پلاس این است که زبان سی که قدیمی تر می باشد یک زبان ساختیافته است که از توابع و نهایتاً ساختارها استفاده کنیم، چیزی به نام کلاس در این زبان وجود نداشته در صورتی که سی پلاس پلاس واجد شیگرایی بوده و استفاده از کلاس و امکاناتش توسط استراتراپ در آزمایشگاه بل به این زبان اضافه شده است.
زبان سی کمی نسبت به زبان سی پلاس پلاس سطح پایینتر و به زبان اسمبلی نزدیک تر می باشد. در صورتی که زبان سی پلاس پلاس به زبان های سطح بالا نزدیکتر است.
به طور کل باید بگویم از زبان سی برای نوشتن برنامه هایی که به زبان ماشین نزدیکتر هستند و به بهینه سازی دقیق و زیادی نیاز دارند استفاده می شود مثل درایورهای مختلف برای کارت گرافیک، مودم یا نوشتن کابخانه های سیستم عامل ها یا موارد این چنینی، اما از زبان برنامه نویسی سی پلاس پلاس برای نوشتن برنامه های سطح بالاتر استفاده می شود مثل انواع بازهای کامپیوتری.
سی پلاس پلاس در اصل به عنوان نسخه شی گرای زبان سی ساخته شده است. اما تفاوت های بیشتری به زبان سی دارد.
چند تفاوت دیگر زبان سی و سی پلاس پلاس
- در سی پلاس پلاس سربارگذاری توابع و عملگرها ممکن است اما در سی این امکان وجود ندارد
- در سی تعریف تابع درون تابع دیگر ممکن است اما در سی پلاس پلاس این امکان وجود ندارد
- در سی ساختارها نمی توانند تابع داشته باشند (تابع عضو) اما در سی پلاس پلاس این کار ممکن است
- در سی امکان استفاده از رفرنسها وجود ندارد در صورتی که در سی پلاس پلاس این امکان وجود دارد
زبان برنامه نویسی C++ چیست؟
برنامه نویسی C++ یک زبان برنامه نویسی سطح بالا با خاصیت شی گرایی می باشد. C++ یک زبان پیشرفته و چند منظوره است که برگرفته و توسعه یافته زبان قدرتمند C است. برخی از مهم ترین امکاناتی که در زبان برنامه نویسی C++ وجود داد عبارتند از :
- template ها
- class ها
- توابع مجازی یا virtual function ها
- operator overloading
- مدیریت خطاها یا Exception Handling
- ارث بری چندگانه یا multiple inheritances
دلایل طراحی زبان برنامه نویسی C++
- ایجاد یک زبان عمومی با کنترل نوع ایستا و همانند C قابل حمل و پربازده
- مستقیماً و بصورت جامع از چندین شیوه برنامهنویسی (برنامهنویسی ساختیافته، برنامهنویسی شیگرا، انتزاع داده، و برنامهنویسی جنریک)
- دادن امکان انتخاب به برنامه نویسان
- زبان C++ از بکاربردن ویژگیهای خاص که مانع از عمومی شدن است خودداری مینماید
- زبان C++ از ویژگیهایی که بکار برده نمیشوند استفاده نمیکند.
- در یک محیط ساده عمل کند