در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

تفاوت زبان C و ++C در چیست ؟ به زبان خیلی ساده

قبلا در خصوص تفاوت زبانهای برنامه نویسی ASP.NET و PHP در انجمن تخصصی فناوری اطلاعات ایران مقاله ای کامل را ارائه کردیم . همانطور که می دانید بنده برنامه نویس نیستم ، شاید در حد یک اسکریپت نویسی ساده برنامه نویسی بلد باشم اما به هر حال به عنوان یک کارشناس فناوری اطلاعات و شخصی که در زمینه های مختلف مشغول به فعالیت است باید درک درستی از تفاوت زبان های برنامه نویسی نیز داشته باشم

در این مطلب می خواهیم دو زبان برنامه نویسی C و ++C را با هم مقایسه کنیم. C و ++C هر دو یک زبان برنامه نویسی هستند و بعدها توضیح خواهیم داد که تفاوت زبان برنامه نویسی و زبان اسکریپت نویسی در چیست. زبان برنامه نویسی C یک زبان Procedural یا رویه ای است در حالیکه زبان برنامه نویسی ++C یک زبان برنامه نویسی Object Oriented یا شیء گرا است. مشکلاتی و مواردی در زبان برنامه نویسی C وجود داشت که بر اساس همین مشکلات زبان برنامه نویسی ++C طراحی و ارائه شد.

بنابراین ++C برگرفته ای از زبان برنامه نویسی C است . با توجه به اینکه مبنای ساختاری ++C بر اساس کلاس ها است ، نسخه های اولیه ای که از ++C ارائه شده بود به عنوان C With Classes مطرح شد یعنی اضافه شدن Class به C ، مهمترین تفاوت ها در بحث ارث بری از Object ها و ایجاد شدن Class ها بود اما امروزه اکثر برنامه هایی که به زبان C نوشته می شوند توسط کامپایلر زبان ++C قابل کامپایل هستند.

معرفی زبان برنامه نویسی C

زبان برنامه نویسی C در سال 1972 در آزمایشگاه Bell یا Bell Labs طراحی و پیاده سازی شد. این زبان برنامه نویسی بصورت عمده برای استفاده در سیستم عامل UNIX طراحی و پیاده سازی شد. علاوه بر اینکه شما از زبان C برای نوشتن برنامه های سیستمی استفاده می کنید این زبان را می توان برای نوشتن نرم افزارهای کاربردی و حتی نرم افزارهای پرتابل نیز مورد استفاده قرار داد. طبیعی است که C در مقایسه با زبان سطح پایینتری مثل Assembly دارای رابط کاربری و قالب کاری ساده تری است و با ارائه شدن این زبان برنامه نویسی تحولی در دنیای برنامه نویسی به وجود آمد.

زبان برنامه نویسی C یک زبان ساختارمند است و به شما اجازه استفاده از متغیرهای بازگشتی و همچنین متغیرهای وابسته را می داد ، البته دوستان با توجه به اینکه بنده دانش برنامه نویسی سطح پایین ندارم بهتر است واژه های انگلیسی این موارد را نیز در کنار آنها بیاورم ، ترجمه توابع بازگشتی به شکل Recursive Variable و ترجمه متغیرهای وابسته Lexical Variable است ، اگر اشکالی در این موارد می بینید خوشحال می شویم در ادامه مطلب آن را بیان کنید.

در زبان برنامه نویسی C عملیات های غیر عمدی و اشتباهات ناشی از آن با توجه به ساختار Static Type System به نسبت زبان های قبلی بسیار کمتر شده است. توابع در زبان C شامل همه کدهای اجرایی هستند و پارامترهای مربوط به توابع با استفاده از مقادیر تعریف می شود. مقادیر Pointer ها زمانی استفاده می شوند که پارامترهای توابع با استفاده از Reference ها یا مرجع ها تعریف و Pass می شوند. برای تعریف وضعیت یا Statement هر قسمت از کد برنامه در C شما باید از Semicolon استفاده کنید .

کلمات کلیدی مورد استفاده در C بسیار کوتاه هستند ، امکان استفاده از عملگرهای زیادی از جمله ++ و – و – و = و غیره فراهم شده است و ... در زبان C مجموعه ای از توابع استفاده می شود ، هر برنامه در زبان C تحت یک Function یا تابع اصلی به نام main function عمل می کند. اگر استیو جابز را می شناسید ، فراموش نکنید که استیو جابز کار خود را مدیون شخص دیگری به نام دنیس ریچی است که خالق زبان برنامه نویسی C است.

خالق برنامه نویسی C ... دنیس ریچی

معرفی زبان برنامه نویسی ++C

++C هم یک زبان برنامه نویسی است . ++C یک زبان سطح بالا و شیء گرا است. امروزه بیشتری استفاده برای برنامه نویسی از زبان ++C است و بیشتر نرم افزارهای سیستمی از طریق این زبان برنامه نویسی نوشته می شوند. زبان ++C توسط لابراتوار Bell یا همان Bell Labs به عنوان یک نسخه جدید از زبان برنامه نویسی C طراحی و پیاده سازی شد. برخی از مهمترین امکاناتی که در زبان برنامه نویسی ++C اضافه شدن است شامل template ها ، class ها ، توابع مجازی یا virtual function ها و operator overloading می شود.

مدیریت خطاها یا Exception Handling و همچنین ارث بری چندگانه یا multiple inheritances در برنامه نویسی ++C معرفی شدند. در مقایسه با برنامه نویسی C قابلیت های Type Checking بیشتری به این زبان اضافه شده است. با توجه به اینکه این زبان برنامه نویسی به عنوان یک نسخه جدید از زبان برنامه نویسی C ارائه شد تقریبا اکثر قابلیت هایی که در C وجود دارد در ++C پشتیبانی و نگهداری می شود. حتی کامپایلر زبان برنامه نویسی ++C قادر است برنامه هایی که به زبان C نوشته شده اند را نیز کامپایل کند.

مقایسه زبان برنامه نویسی C و ++C

البته خواه ناخواه برخی از کدهای نوشته شده به زبان C قابلیت اجرا شدن در ++C را ندارند ، به ویژه همان نسخه اولیه C که برای سیستم عامل UNIX طراحی شده بود.کدهای نوشته در زبان ++C به عنوان کدهایی با قابلیت استفاده مجددا یا Reusable Code معروف هستند به این معنا که شما می توانید تغییراتی در کدهای نرم افزار بدون انجام دادن تغییرات اصلی در خود نرم افزار ایجاد کرده و در جای دیگری استفاده کنید.

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

تفاوت زبان برنامه نویسی C و ++C در چیست ؟

  • ++C توسعه یافته و در واقع نسخه جدید برنامه نویسی C به حساب می آید
  • در ++C شما قابلیت استفاده مجدد از کد یا Reusable Code را دارید که در C این امکان نیست.
  • زبان C یک زبان Procedural است و ++C یک زبان Object Oriented است
  • زبان C چیزی به نام Virtual Function نداشت اما در ++C توابع مجازی یا Virtual Function ها معرفی شدند
  • در زبان C قابلیت چندوجهی یا Polymorphism وجود نداشت اما در ++C قابلیت Polymorphism اضافه شده است ، Polymorphism مهمترین قسمت از برنامه نویسی OOPS است.
  • در C امکان Operator Overloading وجود نداشت اما در ++C این قابلیت یکی از بهترین امکانات به حساب می آید
  • مبانی برنامه نویسی در C بصورت بالا به پایین است در حالیکه در ++C طراحی برنامه بصورت پایین به بالا انجام می شود
  • متصل کردن داده ها و توابع در C بسیار سخت بود اما در ++C این فرآیند با استفاده از Object ها به راحتی انجام می شود
  • در C شما در هر تابعی می توانستید تابع main را فراخوانی کنید اما در ++C شما نمی توانید اینکار را بکنید.
  • ارث بری در C بی معنی بود اما در ++C فرآیند ارث بری یا Inheritance قابل پیاده سازی است
  • مدیریت خطاها در C بسیار سخت تر از ++C است ، با توجه به اینکه از Class در ++C استفاده می شود ITPRO باشید

نویسنده : محمد نصیری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#ملاک_انتخاب_یک_زبان_برنامه_نویسی #معرفی_زبان_برنامه_نویسی_c #انتخاب_زبان_برنامه_نویسی #مقایسه_زبان_c_و_c++ #بهترین_زبان_برنامه_نویسی_چیست #تفاوت_زبان_c_و_c++ #چه_زبان_برنامه_نویسی_رو_انتخاب_کنم #معرفی_زبان_برنامه_نویسی_++c #زبان_برنامه_نویسی_سی_شارپ #زبان_برنامه_نویسی_جاوا
7 نظر
میلاد اسحاقی

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

فرهاد خانلری

با تشکر از مطالب ارزشمندت محمد جان

زبان C جزء زبان های structured programing هست و سطح پایین کار میکنه از این زبان امروزه بیشتر جهت ارتباط های سخت افزاری استفاده میشه مثلاً درایور نویسی چون نزدیک به سخت افزار کار میکنه ، اما پایه و اصول سی پلاس پلاس بر Object Oriented هست که از مدیریت حافظه خیلی خیلی بهتری نسبت به زبان های قدیمش استفاده میکرد و نزدیک به زبان محاوره ما انسانها هست.

اما مدیریت حافظه چیه داستانش: در زبان C اگر یک متغیر خانه حافظه رو اشغال میکرد دیگه تا آخرین لحظه که برنامه RUN بود نمیتونستی فضا رو آزاد کنی و یا حتی از اسم اون متغیر مجدد استفاده کنی خب حتماً قدیما دوستان یادشونه که اکثر برنامه ها پس از مدت زمانی با پیغام Stack Over flow مواجه میشه و به ناچار برنامه رو باید Terminate کنیم و مجدد اجراش کنیم این به خاطر نبود مدیریت حافظه بود اما در سی پلاس پلاس امدن تکنیک هایی رو ارائه دادن از جمله Gorbage Collector که میاد حافظه هایی که Lost شدن و هیچ Pointer ای بهشون اشاره نمیکنه رو Relase میکنه و مجدد میتونیم ازش استفاده کنیم و هر چند این روش هم خیلی روی کار با String ها خوب جواب نمیداد ولی به هر حال در زبان سی شارپ که بعد از سی پلاس پلاس اومد این مورد پیشرفته تر شد و بهینه تر.

برای همین هم هست که شما وقتی در یک Scope ای در برنامه نویسی متغیر تعریف میکنی بعد از اون Scope اون متغیر اتوماتیک فضای خودش رو آزاد میکنه و میتونیم حتی از همون متغیر در یه Method یا تابع دیگه که وظیفه متفاوت تر داره استفاده کنیم.

مورد بعدی اینه که اگر با زبان C برنامه بنویسیم به علت اینکه به سخت افزار نزدیک هست و سرعت پردازش بالا تر میره طبیعتاً سرعت برنامه نهایی از برنامه ای که با سی پلاس پلاس یا سی شارپ نوشته میشه بیشتر هست.

البته شاید خیلی محسوس نباشه اما این قضیه صحت داره ، اگر همون برنامه رو بتونید با اسمبلی بنویسید سرعتش به مراتب از سی هم بیشتر هست.

با تشکر.

سیدرضا بازیار

من هنوز دارم سی رو یاد میگیرم و سی پلاس پلاس رو شروع نکردم. اما این نکته برام سوال شد

اگه ممکنه در مورد گزینه زیر یه مثال بزنید با بهتر متوجه بشیم:

در ++C شما قابلیت استفاده مجدد از کد یا Reusable Code را دارید که در C این امکان نیست

مثل همون بحث html5- css3 هست که میشه کد رو چند بار فراخوانی کرد یا فرق میکنه؟

محمد نصیری

لطفا سئوالتون رو با ذکر منبع از قسمت سئوال بپرسید مطرح کنید با تشکر

MJS

سلام.

C++ میتونه جایگزین C بشه و باهاش برنامه ی سیستمی مثل سیستم عامل نوشت.

حسین

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

شما چه زبانی رو پیشنهاد میکنید استاد نصیری؟! و بقیه دوستان!

من خودم الان پایتون رو بلدم و بین یادگیری این چهار زبان موندم!

C, C++, C#, Java

محمد نصیری

اگر سلیقه من باشه جاوا رو قطعا پیشنهاد می کنم.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....