C
- Okunuşu
- si
Kısaca
C, belleğe doğrudan erişim sağlayan, derlenen ve düşük seviyeli bir programlama dilidir; işletim sistemlerinde, sürücülerde ve gömülü yazılımlarda kullanılır.
C programlama dili nedir?
C, Dennis Ritchie tarafından 1970'lerin başında Bell Labs'te, aslen Unix işletim sistemini yazmak için geliştirilen genel amaçlı bir programlama dilidir. Küçük, hızlı ve donanıma yakındır: C kodu makine komutlarına oldukça doğrudan karşılık gelir; bu yüzden bazen "taşınabilir assembly dili" diye anılır. Dil ISO tarafından standartlaştırılmıştır ve en güncel standart C23'tür.
C statik tiplidir, ancak programcıya güvenir: değerler tipler arasında örtük olarak dönüştürülebilir ve işaretçiler (bellek adreslerini tutan değişkenler) serbestçe tür dönüşümüne uğratılabilir. Bellek elle yönetilir. Yerel değişkenler yığında (stack) yaşar ve fonksiyon dönünce yok olur; daha uzun ömürlü veri malloc ile öbekten (heap) istenir ve free ile geri verilmelidir. Çöp toplayıcı ve dizilerde sınır denetimi yoktur; bu yüzden hatalar bellek sızıntılarına, çökmelere ya da arabellek taşması gibi güvenlik açıklarına yol açabilir.
C; Linux gibi işletim sistemi çekirdeklerinde, mikrodenetleyicilerdeki gömülü yazılımlarda, aygıt sürücülerinde, veritabanlarında ve CPython dahil diğer dillerin yorumlayıcılarında kullanılır. Hemen her dil C fonksiyonlarını çağırabildiği için C, diller arasında ortak bir buluşma noktası görevi de görür. C yazmak, sürücü yardımı olmayan manuel vitesli bir araba kullanmaya biraz benzer: her şeyi siz kontrol edersiniz, ama her vites değişimi sizin sorumluluğunuzdadır.
C sık sık C++ ile bir tutulur, oysa ikisi farklı dillerdir. C++, C'nin bir uzantısı olarak doğdu ve C kodunun çoğunu derleyebilir; ancak sınıflar, şablonlar, istisnalar ve çok daha büyük bir standart kütüphane ekler. C ise bilinçli olarak minimal kalır: sınıfları, istisnaları ve yerleşik bir dizgi tipi yoktur; dizgiler, sıfır baytla biten basit karakter dizileridir.
Önemli noktalar
- C doğrudan makine koduna derlenir; bu da onu hızlı ve öngörülebilir kılar.
- Bellek,
mallocvefreegibi fonksiyonlarla elle yönetilir. - Sınıfları, istisnaları ve çöp toplayıcısı yoktur.
- İşletim sistemi çekirdekleri, gömülü yazılımlar ve birçok dilin çalışma ortamı C ile yazılmıştır.
Örnek
#include <stdio.h>
#include <stdlib.h>
int main(void) {
// Ask the heap for space for 5 integers
int *numbers = malloc(5 * sizeof(int));
if (numbers == NULL) return 1;
for (int i = 0; i < 5; i++) numbers[i] = i * i;
printf("Last square: %d\n", numbers[4]);
free(numbers); // C never frees memory for you
return 0;
}Sık sorulan sorular
C bugün hâlâ kullanılıyor mu?
Evet. C, işletim sistemleri, gömülü cihazlar ve performansın kritik olduğu kütüphaneler için hâlâ temel bir dildir; birçok üst seviye dil de C ile yazılmış bileşenlere dayanır.
C ile C++ arasındaki fark nedir?
C++, C'den doğdu ve sınıflar, şablonlar, istisnalar ve büyük bir standart kütüphane gibi özellikler ekler. C daha küçük ve daha basittir; çalışma zamanı yükünün en az olmasının ve kolay taşınabilirliğin en çok önem taşıdığı yerlerde sık tercih edilir.
C neden güvensiz kabul edilir?
C, dizi sınırlarını denetlemez ve belleği sizin yerinize izlemez; bu yüzden bir arabelleğin sonunun ötesini okumak ya da serbest bırakılmış belleği kullanmak gibi hatalar programı çökertebilir veya güvenlik açıkları doğurabilir. Dikkatli kodlama, sanitizer araçları ve kod incelemesi bu riskleri azaltmaya yardımcı olur.
Sık karşılaştırılanlar
İlgili sayfalar
- C++Programlama Dilleri, s. 5C++, C'yi sınıflar ve şablonlarla genişleten; bellek ve performans üzerinde düşük seviyeli kontrolü koruyan, derlenen ve statik tipli bir dildir.
- DerleyiciProgramlamanın Temelleri, s. 12Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
- Memory Leakİşletim Sistemleri, s. 20Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.
- Kernelİşletim Sistemleri, s. 17Kernel, işletim sisteminin CPU'yu, belleği ve donanım aygıtlarını yöneten ve programların bu kaynaklara nasıl eriştiğini denetleyen çekirdek bölümüdür.
- RustProgramlama Dilleri, s. 29Rust, sahiplik kurallarını derleme zamanında denetleyerek çöp toplayıcı olmadan bellek güvenliği sağlayan, derlenen ve statik tipli bir sistem dilidir.
- LinuxDevOps ve Bulut, s. 31Linux, çoğu sunucuyu, bulutu, konteyneri ve Android telefonu çalıştıran, genellikle dağıtım olarak paketlenen açık kaynaklı bir işletim sistemi çekirdeğidir.
- ZigProgramlama Dilleri, s. 33Zig, elle bellek yönetimi sunan ve gizli kontrol akışı içermeyen, C'nin daha basit ve güvenli bir halefi olmayı hedefleyen düşük seviyeli bir sistem dilidir.
- Objective-CProgramlama Dilleri, s. 21Objective-C, Smalltalk tarzı mesajlaşma ekleyen nesne yönelimli bir C üst kümesidir ve Swift gelmeden önce macOS ile iOS uygulamalarının ana diliydi.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin