C یک زبان برنامهنویسی عمومی، سطح پایین و رویهای (Procedural) است که در سال ۱۹۷۲ توسط دنیس ریچی (Dennis Ritchie) در آزمایشگاههای بل توسعه یافت. این زبان در اصل برای همراهی با سیستمعامل یونیکس (Unix) طراحی شد، تا جایی که بخش بزرگی از خود یونیکس با C نوشته شد.
نکته حرفهای: C اغلب بهعنوان یک «زبان سطح پایینِ سطح بالا» نامیده میشود. این یعنی مفهوم و ساختار کدهای C بسیار به دستورالعملهای ماشین (اسمبلی) نزدیک است و به برنامهنویس کنترلی مستقیم و بیقیدوشرط روی سختافزار و حافظه میدهد.
با وجود قدمت زیاد، C همچنان یکی از پرکاربردترین زبانهای برنامهنویسی در جهان است و تقریباً هر کاری که تاکنون با کامپیوتر انجام دادهاید، در نهایت به نرمافزارهای نوشتهشده با C وابسته است. مهمترین حوزههای کاربرد آن عبارتاند از:
سیستمعاملها: هسته (Kernel) سیستمعاملهای لینوکس، ویندوز و مکاواس با C نوشته شدهاند.
زیرساخت اینترنت: بسیاری از پروتکلهای شبکه، وبسرورها و سیستمهای ایمیل.
سیستمهای نهفته (Embedded Systems): نرمافزارِ دستگاههایی مانند خودروها، گوشیهای همراه، کنسولهای بازی، رباتها و حتی تجهیزات فضایی مانند مریخنورد ققنوس (Phoenix Mars Lander).
پایگاههای داده: سیستمهایی مانند MySQL و Oracle.
مفسرها و کامپایلرها: پیادهسازی اصلی خود زبان پایتون (CPython) با C نوشته شده است.
رابط تابع خارجی (FFI): هنگامی که دو زبان برنامهنویسی مختلف نیاز به ارتباط با یکدیگر دارند، معمولاً از C بهعنوان پل ارتباطی استفاده میشود.
کارایی و سرعت: کدهای نوشتهشده با C بسیار سریع اجرا میشوند و بار اضافی (Overhead) زبانهای سطح بالا را ندارند.
کنترل سختافزار و حافظه: با استفاده از اشارهگرها (Pointers)، کنترل مستقیمی روی حافظه دارید و میتوانید برنامههایی بنویسید که مستقیماً با سختافزار تعامل دارند.
درک مفاهیم پایه کامپیوتر: یادگیری C درک عمیقی از نحوه کارکرد حافظه، مدیریت دادهها و معماری کامپیوتر به شما میدهد. این دانش به شما کمک میکند در هر زبان دیگری به برنامهنویس بهتری تبدیل شوید.
نقش محوری در صنعت: زبان C یک استاندارد صنعت است و تسلط بر آن رزومه فنی شما را بسیار قوی میکند. بخش زیادی از کدهای قدیمی و حیاتی جهان با C نوشته شدهاند و نیاز به نگهداری دارند.
C و C++ دو زبان مجزا هستند. اگرچه C++ از بسیاری از ویژگیهای C الهام گرفته است، اما C زیرمجموعهای از C++ نیست و تفاوتهای بنیادی با یکدیگر دارند.
| ویژگی | زبان C | زبان C++ |
| پارادایم برنامهنویسی | رویهای (Procedural) | شیءگرا (Object-Oriented) به همراه رویهای |
| کلاسها و اشیاء | پشتیبانی نمیشود | پشتیبانی کامل با کلمات کلیدی class و this |
| مدیریت حافظه | توابع malloc و free | عملگرهای new و delete |
| سربارگذاری (Overloading) | پشتیبانی نمیشود (نام هر تابع باید یکتا باشد) | پشتیبانی میشود (چندین تابع میتوانند نام یکسان ولی پارامترهای متفاوت داشته باشند) |
| پارامترهای مرجع (Reference) | فقط از طریق اشارهگرها (*) و به صورت دستی | پشتیبانی از & برای پاس دادن با مرجع |
| کتابخانههای استاندارد | محدود به کتابخانه استاندارد C مانند stdio.h | دارای کتابخانه غنیتر شامل STL (مانند vector، string، iostream) |
| فضای نام (Namespace) | پشتیبانی نمیشود | پشتیبانی میشود با کلمه کلیدی namespace |
نوع داده bool | وجود ندارد (از اعداد صحیح مانند 0 و 1 استفاده میکند) | وجود دارد (با مقادیر true و false) |
هشدار: از آنجا که C++ بهطور کامل از C مشتق نشده است، ممکن است کد C با یک کامپایلر C++ (مانند
g++) کامپایل شود، اما این کار استاندارد نیست و ممکن است باعث نادیده گرفته شدن خطاهای ظریف یا محدودیتهای خاص زبان C شود. برای کامپایل کدهای C، باید از یک کامپایلر اختصاصی C مانندgccاستفاده کنید.
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
این یک برنامه ساده به زبان C است که پیام "!Hello, World" را چاپ میکند. خط #include <stdio.h> کتابخانه استاندارد ورودی/خروجی را به برنامه اضافه میکند تا بتوانیم از تابع printf استفاده کنیم. تابع main نقطه شروع اجرای هر برنامه در C است.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات