در این جلسه تفاوت بین C و ++C را بررسی میکنیم. درک تفاوتهای C و ++C خیلی مهم است و هنوز خیلی از افراد هستن که در ++C به سبک C کد مینویسند و از امکانات پیشرفته زبان ++C استفاده نمیکنند. پس برای برنامهنویس حرفهای شدن درک صحیح تفاوت بین C و ++C خیلی مهم است. هر دو زبان قدرتمندی هستن و برای درک قدرت زبان C کافیست بدانید هسته سیستم عاملهای ویندوز و لینوکس با C نوشته شده است. و اکثر برنامههای قدرتمند مثل Mozilla Firefox با ++C نوشته شدن.
زبان برنامه نویسی C چیست؟
C یک زبان برنامه نویسی سطح میانه است که توسط دنیس ریتچی در آزمایشگاه بل در سال 1972 ابداع شد. زبان C ویژگی های زبان های سطح پایین و سطح بالا را ترکیب می کند. به همین دلیل به عنوان زبان سطح میانی شناخته می شود.
C از لحاظ سنتی یک زبان برنامه نویسی سطح بالا محسوب می شود که امکان توسعه میان افزارها و برنامه های قابل حمل را فراهم می کند.زبان C با هدف نوشتن نرم افزارهای سیستمی توسعه یافت. این زبان یک زبان ایده آل برای نوشتن میان افزار سیستم ها می باشد.
زبان برنامه نویسی ++C چیست؟
++C یک زبان برنامه نویسی کامپیوتری است که ویژگی های زبان C و همچنین Simula67(اولین زبان شی گرایی) را دارا می باشد. ++C مفاهیم کلاس و شی را معرفی کرد.
این زبان ویژگی های زبان های سطح بالا و پایین را پوشش می دهد. بنابراین یک زبان سطح میانی محسوب می شود. در گذشته “C همراه با کلاس” نامیده می شد زیرا همه خصوصیات زبان C را دارا بود.
تفاوت بین C و ++C : تفاوت های بنیادی
مبانی اختلاف |
C |
C++ |
نوع برنامه نویسی | یک زبان برنامه نویسی رویه محور است | زبان برنامه نویسی شی گرا است. |
دیدگاه | زبان C دیدگاه برنامه نویسی بالا به پایین را دنبال می کند. | زبان ++C دیدگاه برنامه نویسی پایین به بالا را دنبال می کند. |
پسوند فایل | پسوند فایل در برنامه C به صورت .c است. | پسوند فایل در برنامه ++C به صورت .cpp است. |
تقسیم بندی برنامه | در زبان برنامه نویسی C، یک برنامه بزرگ به بخش های کوچکتری تقسیم شده که تابع نام دارند. | در زبان برنامه نویسی ++C، یک برنامه بزرگ به بخش های کوچکتری تقسیم شده که کلاس و شی نامیده می شوند. |
ساختار | ساختار در زبان C ویژگی اعلان تابع را فراهم نمی کند. | ساختار در زبان ++C ویژگی اعلان تابع را به عنوان تابعی عضو از ساختار فراهم می کند. |
توابع درون خطی | توابع درون خطی را پشتیبانی نمی کند. | توابع درون خطی را پشتیبانی می کند. |
عملیات استاندارد I/O | در زبان C توابع scanf و printf برای ورودی و خروجی استاندارد استفاده می شوند. | در زبان C++، cin>> و cout<< برای عملیات استاندارد ورودی و خروجی بکار می روند. |
امنیت داده | در زبان C امنیت داده وجود ندارد. | داده امن بوده و از طریق توابع خارجی قابل دسترسی نیست.(با استفاده از ویژگی محصورسازی OOP ها) |
سادگی کدنویسی | زبان C زبان برنامه نویسی قدیمی تری است که به عنوان یک زبان دستی توصیف می شود. در این زبان، باید به برنامه انجام هرچیزی را دستور دهید . علاوه برآن، این زبان به شما اجازه انجام تقریباً هرکاری را می دهد. | ++C زبانی تعمیم یافته از C است. این زبان امکان نوشتن کد شی گرایی با قابلیت کنترل بالا را فراهم می کند. |
سازگاری با دیگر زبانها | C با زبان های دیگر سازگار نیست. | زبان ++C با زبان های عمومی دیگر سازگار است. |
اشاره گر | C از اشاره گرها پشتیبانی می کند. | C از اشاره گر و ارجاعات(رفرنس) پشتیبانی می کند. |
متغیر | در C، متغیرها باید در ابتدای برنامه تعریف شوند. | ++C اجازه اعلان متیغرها در هرجایی از توابع را فراهم می کند. |
نقطه تمرکز | تمرکز زبان C روی گام ها یا رویه های حل مسئله است. | زبان ++C روی اشیا و نه گامها یا رویه ها تمرکز دارد. این زبان سطح بالاتری از چکیده سازی دارد. |
اضافه بار تابع | زبان C استفاده از اضافه بار تابع(function overloading) را فراهم نکرده است. | زبان ++C استفاده از اضافه بار تابع(function overloading) را فراهم کرده است. |
نوع داده | زبان C اجازه اعلان نوع داده رشته ای یا بولی(Boolean) را نمی دهد. این زبان نوع داده های پایه داخلی را پشتیبانی می کند. | زبانی ++C نوع داده رشته ای و بولی را فرهم می کند. |
رسیدگی به استثناها(Exception Handling) | زبان C رسیدگی به استثناها را فراهم نمی کند.هرچند می توان با استفاده از برخی راه حلها آن را پیاده سازی کرد. | ++C رسدیگی به استثاها را پشتیبانی می کند. علاوه بر آن، می توان آن را با بلوک های try و catch هم پیاده کرد. |
توابع | توابع با آرایش پیش فرض را پشتیبانی نمی کند. | توابع با آرایش پیش فرض را پشتیبانی نمی کند. |
فضای نام | چنین چیزی در زبان C وجود ندارد. | زبان ++C چنین ویژگی را دارا می باشد. |
سورس کد | برنامه با سورس کد فرمت آزاد | از زبان برنامه نویسی C نشات گرفته است. |
ارتباط | C زیرمجموعه ای از ++C است. نمی تواند کدهای ++C را اجرا کند. | ++C زبرمجموعه C است. ++C توانایی اجرای اکثر کدهای C را دارد اما C چنین توانایی ندارد. |
محوریت | زبان تابع–محور است | زبان شی–محور است. |
تمرکز | بجای تمرکز بر داده ،روی روش یا رویه تمرکز دارد. | بجای تمرکز بر روش یا رویه روی داده تمرکز دارد. |
محصورسازی (Encapsulation) | از محصورسازی پشتیبانی نمی کند.زیرا داده ها و توابع جدا بوده و موجودیت های آزادی هستند. | از محصورسازی پشتیبانی می کند و داده ها و توابع به عنوان یک شی محصورسازی می شوند. |
مخفی سازی اطلاعات | زبان C مخفی سازی اطلاعات را پشتیبانی نمی کند. در این زبان، داده ها موجودیت های آزادی بوده که می توان خارج از کد تغییر داد. | محصورسازی داده را مخفی می کند. به طوری که ساختارداده ها و عملگرها بر هدفمند استفاده می شوند. |
مدریریت حافظه | C توابع () mallocو ()calloc را رای تخصیص پویای حافظه فراهم کرده است. | ++C یک عملگر جدید را به این منظور فراهم کرده است. |
نوع داده ها | از نوع داده های داخلی پشتیبانی می کند. | از نوع داده های داخلی و تعریف شده توسط کاربر پشتیبانی نمی کند. |
متغیرهای سراسری | اجازه اعلان چندین متغیر سراسری را فراهم می سازد. | اجازه اعلان چندین متغیر سراسری را فراهم نمی کند. |
مفهوم نگاشت | نگاشت بین داده و تابع بسیار پیچیده است. | نگاشت بین داده و تابع را می توان به راحتی با استفاده از “کلاس و شی” ایجاد کرد. |
وراثت | زبان C از وراثت پشتیبانی نمی کند. | وراثت در زبان ++C قابل حصول است. |
هدرفایل پیش فرض | زبان C از stdio.h استفاده می کند. | C++ از iosteam.h به عنوان هدرفایل پیش فرض استفاده می کند. |
تابع مجازی | مفهوم تابع مجازی در C وجود ندارد. | مفهوم تابع مجازی در ++C وجود دارد. |
کلیدواژه | 32کلیدواژه دارد. | 52کلیدواژه دارد. |
چندریختی(Polumorphism) | در زبان C چندریختی امکان پذیر نیست | در زبان ++C چندریختی کاربرد دارد. چندریختی یکی از مهم ترین مفاهیم شی گرایی است. |
برنامه نویسی گرافیکی | زبان C ابزار GTK را برای برنامه نویسی گرافیکی فراهم آورده است. | ++C ابزار Qt را برای برنامه نویسی گرافیکی فراهم کرده است. |
تفاوت های بنیادی بین C و ++C
- C یک زبان رویه محور است، حال آنکه ++C یک زبان شی گرایی است.
- زبان C تنها از اشاره گرها پشتیبانی می کند حال آنکه ++C از اشاره گرها و ارجاعات(رفرانس ها) پشتیبانی می کند.
- C امکان استفاده از اضافه بار تابعی را فراهم نمی کند حال آنکه ++C این امکان را فراهم می کند.
- زبان C از نوع داده های داخلی پشتیبانی می کند درحالی که ++C از نوع داده های تعریف شده توسط کاربر نیز پشتیبانی می کند.
- زبان C دیدگاه بالا به پایین در برنامه نویسی را دنبال می کند اما زبان ++C دیدگاه پایین به بالا را دنبال می کند.
- توابع scanf و printf را برای ورودی و خروجی استفاده بکار می بندد اما در C++، cin و out برای عملیات استاندارد ورودی و خروجی تهیه شده اند.
در نهایت از روی تجربه ما توصیه میکنیم اول زبان C را یادبگیرید حتی شده فقط مثل کتاب رومان یکبار آموزشهای زبان C را بخونید و بعد برید سراغ یادگیری زبان ++C و در ادامه یادگیری هر زبان دیگری برایتان خیلی آسون خواهد بود. زبان C در میکروکنترلرها از اهمیت بالا برخوردار است و زبان برنامه نویسی بردهای آردوینو ++C است.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.