C, birçok modern programlama dilinin gelişiminde etkili olmuş genel amaçlı, prosedürel bir programlama dilidir. Verimli ve esnek olacak şekilde tasarlanmış olan C, genellikle sistem programlama, işletim sistemleri geliştirme ve uygulama yazılımları oluşturma için kullanılır. C, belleğe düşük seviyeli erişim sağlar ve bit manipülasyonuna olanak tanır, bu da onu performans açısından kritik yazılımlar yazmak için tercih edilen bir seçenek haline getirir.
C, 1970'lerin başında Dennis Ritchie tarafından Bell Labs'ta B dilinin bir evrimi olarak geliştirilmiştir; B dili ise BCPL ve ALGOL'dan etkilenmiştir. Başlangıçta, Unix işletim sistemi üzerinde sistem programlama için tasarlanmıştı; bu işletim sistemi de Bell Labs'ta ortaya çıkmıştır. Dilin tasarımı, montaj dilinin üzerinde yüksek seviyeli bir soyutlama sağlamaya odaklanırken, düşük seviyeli programlamanın verimliliğini korumayı amaçlamıştır.
1970'lerin sonlarına gelindiğinde, C programlama topluluğunda yaygın bir şekilde benimsenmişti ve Brian Kernighan ile Dennis Ritchie tarafından 1978'de yayımlanan "The C Programming Language" kitabı, popülaritesine önemli bir katkı sağlamıştır. İlk standartlaştırılmış versiyon olan C89 veya ANSI C, 1989'da Amerikan Ulusal Standartlar Enstitüsü (ANSI) tarafından kabul edilmiştir. Uluslararası Standartlar Örgütü (ISO) daha sonra bunu benimseyerek 1999'da ISO C99'u oluşturmuş, bu sürüm inline fonksiyonlar ve değişken uzunlukta diziler gibi birkaç yeni özellik getirmiştir. En son büyük standart olan C11, 2011'de yayımlanmış ve 2018'de bir hata düzeltme sürümü olan C18 takip etmiştir.
C, dünya genelinde en yaygın kullanılan programlama dillerinden biri olmaya devam etmektedir, özellikle sistem programlama, gömülü sistemler ve yüksek performanslı uygulamalarda. Söz dizimi ve kavramları, C++, C#, Java ve Objective-C gibi birçok diğer dili etkilemiştir. Sürekli geçerliliği, işletim sistemlerinde (Linux, Windows), ağ programlamasında, gömülü sistemlerde ve çeşitli yüksek performanslı hesaplama görevlerinde görülebilir.
C, bellek üzerinde doğrudan manipülasyon yapmaya olanak tanır. Örneğin:
int x = 10;
int *p = &x; // Pointer p, x'in adresini tutar
C, fonksiyonlar aracılığıyla yapılandırılmış programlamayı destekler ve bu da kod modülerliğini sağlar. Basit bir fonksiyon tanımı şöyle görünür:
void greet() {
printf("Merhaba, Dünya!\n");
}
C, karar verme süreçlerini kolaylaştıran if, switch, for, while ve do-while gibi çeşitli kontrol akışı yapıları içerir.
if (x > 0) {
printf("Pozitif sayı\n");
}
C, int, char, float, double gibi birkaç yerleşik veri türüne sahiptir. Ayrıca, yapılar kullanarak kullanıcı tanımlı veri türlerini destekler.
struct Point {
int x;
int y;
};
C, girdi/çıktı işlemleri, dize manipülasyonu ve matematiksel hesaplamalar için zengin bir kütüphane seti içerir.
#include <stdio.h>
#include <math.h>
double sqrtValue = sqrt(16);
C, türler arasında dönüşüm yapmak için açık tür dönüşümüne izin verir.
double pi = 3.14;
int intPi = (int)pi; // intPi 3 olacak
C, özel türler oluşturmak için sıralı türleri destekler.
enum Color { KIRMIZI, YEŞİL, MAVİ };
C, derlemeden önce kodu işleyen #define, #include gibi ön işlemci direktiflerini içerir.
#define PI 3.14
C, belirli bir kapsam içinde değişken tanımlamalarına izin vererek kapsüllemeyi artırır.
{
int temp = 5; // temp sadece bu blok içinde geçerlidir
}
C, C++ gibi fonksiyon aşırı yüklemeyi desteklemez, ancak manuel uygulama ile varsayılan argümanlar kullanılmasına izin verir.
int add(int a, int b) {
return a + b;
}
C, kaynak kodunu makine koduna dönüştürmek için bir derleyici gerektirir. En popüler derleyiciler arasında GCC (GNU Derleyici Koleksiyonu), Clang ve MSVC (Microsoft Visual C++) bulunmaktadır.
Bir C programını derlemek için genellikle şu komut kullanılır:
gcc -o myprogram myprogram.c
Bu, myprogram.c
dosyasını myprogram
adlı bir çalıştırılabilir dosyaya derler.
C programlamayı destekleyen birkaç IDE bulunmaktadır, bunlar arasında:
Bu IDE'ler, sözdizimi vurgulama, hata ayıklama araçları ve proje yönetimi gibi özellikler sunar.
C, çeşitli alanlarda yaygın olarak kullanılmaktadır, bunlar arasında:
C, birçok diğer programlama dili ile karşılaştırılmaktadır, çünkü benzerlikler taşır ve birçok dilin temeli olarak hizmet eder:
C, prosedürel programlama yapıları ve düşük seviyeli optimizasyonları destekleyen dillere kolayca çevrilebilir. C kodunu daha yüksek seviyeli bir dile çevirirken, geliştiricilerin bellek yönetimi farklılıklarına dikkat etmeleri gerekir; çünkü daha yüksek seviyeli diller genellikle çöp toplama özelliğine sahiptir.
C kodunu diğer dillere dönüştürmeye yardımcı olabilecek birkaç kaynak-kaynağa çeviri aracı bulunmaktadır, bunlar arasında: