C یک زبان برنامهنویسی عمومی و رویهای است که در توسعه بسیاری از زبانهای برنامهنویسی مدرن تأثیرگذار بوده است. این زبان به گونهای طراحی شده که کارآمد و انعطافپذیر باشد و به طور معمول برای برنامهنویسی سیستمها، توسعه سیستمعاملها و ایجاد نرمافزارهای کاربردی استفاده میشود. C دسترسی سطح پایین به حافظه را فراهم میکند و امکان دستکاری بیتها را میدهد، که آن را به انتخابی ترجیحی برای نوشتن نرمافزارهای حساس به عملکرد تبدیل میکند.
C در اوایل دهه 1970 توسط دنیس ریچی در آزمایشگاههای بل به عنوان تکامل زبان B توسعه یافت که تحت تأثیر BCPL و ALGOL بود. در ابتدا، این زبان برای برنامهنویسی سیستمها بر روی سیستمعامل یونیکس طراحی شده بود که آن نیز در آزمایشگاههای بل ایجاد شده بود. طراحی این زبان بر ارائه یک انتزاع سطح بالا بر روی زبان اسمبلی تمرکز داشت در حالی که کارایی برنامهنویسی سطح پایین را حفظ میکرد.
تا اواخر دهه 1970، C به طور گستردهای در جامعه برنامهنویسی پذیرفته شد و انتشار کتاب "زبان برنامهنویسی C" توسط برایان کرنیگان و دنیس ریچی در سال 1978 به محبوبیت آن کمک شایانی کرد. اولین نسخه استاندارد شده، به نام C89 یا ANSI C، در سال 1989 توسط موسسه ملی استانداردهای آمریکا (ANSI) پذیرفته شد. سازمان بینالمللی استانداردسازی (ISO) بعداً آن را پذیرفت و منجر به ISO C99 در سال 1999 شد که چندین ویژگی جدید مانند توابع درونخط و آرایههای با طول متغیر را معرفی کرد. آخرین استاندارد اصلی، C11، در سال 2011 منتشر شد و C18، یک نسخه اصلاحی، در سال 2018 دنبال شد.
C یکی از پرکاربردترین زبانهای برنامهنویسی در جهان باقی مانده است، به ویژه در برنامهنویسی سیستمها، سیستمهای تعبیهشده و برنامههای با عملکرد بالا. نحو و مفاهیم آن بر بسیاری از زبانهای دیگر تأثیر گذاشته است، از جمله C++، C#، جاوا و Objective-C. ارتباط مداوم آن را میتوان در سیستمعاملها (لینوکس، ویندوز)، برنامهنویسی شبکه، سیستمهای تعبیهشده و وظایف مختلف محاسبات با عملکرد بالا مشاهده کرد.
C امکان دستکاری مستقیم حافظه از طریق اشارهگرها را فراهم میکند. به عنوان مثال:
int x = 10;
int *p = &x; // اشارهگر p آدرس x را نگه میدارد
C از برنامهنویسی ساختاری از طریق توابع پشتیبانی میکند و امکان مدولار بودن کد را فراهم میآورد. یک تعریف تابع ساده به این صورت است:
void greet() {
printf("سلام، دنیا!\n");
}
C شامل ساختارهای مختلف جریان کنترل مانند if، switch، for، while و do-while است که تصمیمگیری را تسهیل میکند.
if (x > 0) {
printf("عدد مثبت\n");
}
C چندین نوع داده داخلی دارد: int، char، float، double و غیره. همچنین از انواع داده تعریفشده توسط کاربر با استفاده از ساختارها پشتیبانی میکند.
struct Point {
int x;
int y;
};
C شامل مجموعهای غنی از کتابخانهها برای عملیات ورودی/خروجی، دستکاری رشته و محاسبات ریاضی است.
#include <stdio.h>
#include <math.h>
double sqrtValue = sqrt(16);
C اجازه میدهد تا تبدیل نوع صریح انجام شود که برای تبدیل بین انواع مفید است.
double pi = 3.14;
int intPi = (int)pi; // intPi برابر با 3 خواهد بود
C از انواع شمارشی برای ایجاد انواع سفارشی پشتیبانی میکند.
enum Color { RED, GREEN, BLUE };
C شامل دستورالعملهای پیشپردازنده مانند #define و #include است که کد را قبل از کامپایل مدیریت میکند.
#define PI 3.14
C اجازه میدهد تا اعلانهای متغیر در یک دامنه خاص انجام شود که انکپسولاسیون را تقویت میکند.
{
int temp = 5; // temp فقط در این بلوک معتبر است
}
C مانند C++ از بارگذاری توابع پشتیبانی نمیکند، اما اجازه میدهد تا آرگومانهای پیشفرض از طریق پیادهسازی دستی انجام شود.
int add(int a, int b) {
return a + b;
}
C به یک کامپایلر نیاز دارد تا کد منبع را به کد ماشین تبدیل کند. محبوبترین کامپایلرها شامل GCC (مجموعه کامپایلر GNU)، Clang و MSVC (Microsoft Visual C++) هستند.
برای کامپایل یک برنامه C، معمولاً میتوانید از دستوری مانند زیر استفاده کنید:
gcc -o myprogram myprogram.c
این دستور myprogram.c
را به یک فایل اجرایی به نام myprogram
کامپایل میکند.
چندین IDE از برنامهنویسی C پشتیبانی میکنند، از جمله:
این IDEها ویژگیهایی مانند هایلایتینگ نحو، ابزارهای اشکالزدایی و مدیریت پروژه را فراهم میکنند.
C به طور گستردهای در حوزههای مختلف استفاده میشود، از جمله:
C اغلب با چندین زبان برنامهنویسی دیگر مقایسه میشود، زیرا شباهتهایی دارد و به عنوان پایهای برای بسیاری از زبانها عمل میکند:
C میتواند به زبانهایی که از ساختارهای برنامهنویسی رویهای و بهینهسازیهای سطح پایین پشتیبانی میکنند به راحتی ترجمه شود. هنگام ترجمه کد C به یک زبان سطح بالاتر، توسعهدهندگان باید به تفاوتهای مدیریت حافظه توجه کنند، زیرا زبانهای سطح بالاتر معمولاً دارای جمعآوری زباله هستند.
چندین ابزار ترجمه منبع به منبع وجود دارد که میتواند به تبدیل کد C به زبانهای دیگر کمک کند، از جمله: