1970'lerin başında Ken Thompson ve Dennis Ritchie
tarafından UNIXişletim sistemi için geliştirilmiş bir programlama
dilidir. , günümüzde neredeyse tüm işletim sistemlerinde kullanılan,
dünyanın en çok kullanılan sistem programlama dilidir. Ancak, uygulama
programları yazmak için de çok sık kullanılır. Yine çok kullanılan
programlama dillerinden olan C++ da C'den türemiş bir dildir.
Özellikleri
C oldukça minimalist bir dildir ve diğer pek çok programlama dilinden
daha düşük düzeylidir. Çoğu zaman, C'nin düşük düzeyli bir dil olduğu ya
da bir yüksek seviye assembler olduğu söylenir. Her ne kadar bazan bir
yüksek düzeyli dil olduğu söylense de, gerçekte C, yalnızca assembly
dillerinden daha yüksek düzeylidir.
C'nin assembly'ye göre iki önemli avantajı vardır: İlk olarak, C kaynak
kodunu okuması daha kolaydır, ve özellikle uzun programlar için, yazması
da çok daha zahmetsizdir. İkinci olarak, bir assembly programı
genellikle yalnızca tek bir makina çeşidi üzerinde çalışabilirken, C
programları (bir C derleyicisi ve gerekli kütüphaneler varsa) başka
sistemlerde de çalışmak için derlenebilirler. Öte yandan, bir C
programının performansı derleyicinin makina kodunu eniyileme başarısına
bağlıdır, ki bu da programcının denetimi dışındadır. Assembly
programlarının performansı ise doğrudan programcı tarafından belirlenir,
çünkü bir assembly programı aslında bir makina dilinin insanlar
tarafından daha kolay okunabilir biçimidir. Bu yüzden, bazı programların
(örneğin işletim sistemlerinin) yüksek performans gerektiren bölümleri
assembly ile yazılırlar. Yine de, özellikle modern mimariye sahip
işlemciler için, C derleyicilerinin eniyileyerek ürettiği assembly, elle
yazılmış assembly'den hızlıdır.
Benzer avantajlar ve dezavantajlar C'yi yüksek düzeyli dillerden ayırır:
bir C programının verimliliği daha iyi kontrol edilebilir, ancak C
programlarını yazmak ve okumak daha zordur. Yine de dikkat edilmelidir
ki, C en az yüksek düzeyli diller kadar taşınabilirdir, çünkü günümüzde
çoğu bilgisayar sisteminde bir C derleyicisi vardır; aslında, yüksek
düzeyli dillerin pek çoğunun derleyicileri, kütüphaneleri ve
yorumlayıcıları C ile yazılmışlardır.
C'nin önemli özelliklerinden biri de bilgisayar belleğinin kullanımının
programcı tarafından ayarlanmasıdır. Standart C otomatik bellek
kullanımını sağlamak için hiçbir araç içermez, ve dizi sınırları (İng.
array bounds) kontrol edilmez. Ancak, C'den türemiş olan Java ve C# gibi
diller otomatik bellek yönetimine izin verirler. Her ne kadar C'nin
bellek yönetimini programcıya vermesi programın performansının
ayarlanmasında programcıya daha çok olanak verse de, bu, programcılık
hatalarının artmasına da neden olur. Bu tür hatalar, bilgisayar
güvenliğini düşürmeleri ile ün kazanmışlardır. Bu bellek yönetimi
hatalarının önüne geçilebilmesi için pek çok araç üretilmiştir (örneğin
dizi limitlerini kontrol eden ve otomatik çöp toplama [garbage
collection] yapan kütüphaneler, lint gibi otomatik kaynak kodu kontrolü
yapan programlar).
C'nin bazı özellikleri aşağıda sıralanmıştır:
Çok basit bir temel dil (çekirdek dil). Elzem olmayan işlevler bir
standart kütüphaneler kümesi tarafından sağlanır.
Prosedürel programlamaya verilen özel önem. Yapısal programlama da
kolaylaştırılmıştır.
C önişlemcisi: Makro tanımlamak ve kaynak kodu dosyalarını birleştirmek
için kullanılır.
İşaretçiler aracılığı ile bilgisayar belleğine doğrudan erişim (anlamsal
açıdan yanlış işlemler derleyici tarafından engellenmezler)
Parametreler fonksiyonlara referansları ile değil, değerleri ile
geçirilirler
Lexical variable scoping
Dilin Tarihi
C'nin ilk gelişme safhaları 1969 ile 1973 arasında AT&TBell
Laboratuvarları'nda gerçekleşti. Ritchie'ye göre, en yaratıcı devre 1972
idi. Dilin pek çok özelliği "B" adlı bir dilden türediği için, yeni
dile "C" adı verildi. "B" adının kökeni konusunda ise söylentiler
değişik: Ken Thompson B'nin BCPL programlama dilinden türediğini
söylemektedir, ancak Thompson eşi Bonnie'nin onuruna adını Bon koyduğu
bir programlama dili de geliştirmiştir.
1973'e kadar C yeterince güçlü bir hale gelmiş ve ilk başta
PDP-11/20assembly dili ile yazılan UNIX'in çekirdeğinin büyük kısmı C
ile yeniden yazılmıştı. Böylece UNIX, çekirdeği bir assembly dili ile
yazılmayan ilk işletim sistemlerinden biri olmuştu.
ANSI C ve ISO C
1970'lerin sonunda C, en çok kullanılan mikrobilgisayar dili olarak
BASIC'in önüne geçmeye başladı. 1980'lerde ise, IBM PC ile kullanılmak
üzere benimsenmesiyle birlikte popülaritesi iyice artmaya başladı. Aynı
zamanda, Bell Laboratuvarları'nda Bjarne Stroustrup ve iş arkadaşları
C'ye nesneye yönelim eklemek üzere çalışmaya başlamışlardı. C bugün UNIX
dünyasında en çok kullanılan dil olarak kalırken, Stroustrup'un
geliştirip C++ adını verdiği dil Microsoft Windows işletim sisteminde en
önemli dil oldu.
1983'te Amerikan Ulusal Standartlar Enstitüsü (ANSI) bir C standardı
oluşturmak için bir kurul oluşturdu. Uzun ve yorucu bir çalışmadan
sonra, bu kurul standardı 1989'da tamamladı ve standart ANSI X3.159-1989
"Programming Language C (C Programlama Dili)" olarak yayımlandı. Dilin
bu versiyonu genellikle ANSI C olarak adlandırılır. 1990'da bu standart,
küçük değişikliklerle Uluslararası Standartlar Örgütü (ISO) tarafından
da benimsenip ISO/IEC 9899:1990 olarak yayımlandı.
ANSI C'yi oluşturmanın amaçlarıdan biri K&R C'yi içeren ve dile
sonradan katılan "gayriresmi" özellikleri de dile katan bir standart
oluşturmaktı. Standart k fonksiyon prototiplerini ve daha yetenekli bir
önişlemciyi de standarda ekledi.
Bugün artık ANSI C neredeyse tüm derleyiciler tarafından
desteklenmektedir. Günümüzde yazılmakta olan C programlarının çoğunluğu
ANSI C stardarına uygun olarak yazılmaktadır. Yalnızca standart C
kullanılarak yazılmış bir program, standarda uyumlu her derleyici ile
doğru bir biçimde derlenip çalıştırılabilir. Ancak, standart olmayan
kütüphaneler kullanılarak yazılmış programlar belli bir platform ya da
derleyici gerektirebilirler
C99
ANSI standartlaştırma işleminden sonra C dili uzun bir süre oldukça
sabit kaldı, ancak C++ gelişmeyi sürdürdü. Buna bağlı olarak, 1990'ların
sonunda ISO standardı güncellendi ve 1999'da ISO 9899:1999 olarak
yayımlandı. 2000 yılının Mart'ında ise, "C99" olarak bilinen bu standart
ANSI tarafından da benimsendi.
C99'un yeni özellikleri şöyle özetlenebilir:
inline fonksiyonlar
C++'da olduğu gibi artık değişkenler programın herhangi bir yerinde
tanımlanabilirler
long long int, boolean, complex gibi yeni veri tipleri
değişken uzunluğa sahip diziler
C++'dan alınan, // ile başlayan tek satırlık program içi açıklamalar
snprintf() gibi yeni kütüphane fonksiyonları
stdint.h gibi yeni başlık dosyaları
C99'u bugün GCC ve bazı başka derleyiciler desteklemekteyken, Microsoft
ve Borland derleyicilerine C99 desteği eklemekte isteksiz
davranmaktadırlar
C'de "Merhaba dünya!" programıAşağıdaki basit program, standart çıktıya
"Merhaba dünya!" sözcüklerini yazar. Bu programın bir versiyonu ilk kez
K&R'de basılmıştır
#include
int main( **** )
{
printf( "Merhaba dünya!\\n" );
return 0;
}
tarafından UNIXişletim sistemi için geliştirilmiş bir programlama
dilidir. , günümüzde neredeyse tüm işletim sistemlerinde kullanılan,
dünyanın en çok kullanılan sistem programlama dilidir. Ancak, uygulama
programları yazmak için de çok sık kullanılır. Yine çok kullanılan
programlama dillerinden olan C++ da C'den türemiş bir dildir.
Özellikleri
C oldukça minimalist bir dildir ve diğer pek çok programlama dilinden
daha düşük düzeylidir. Çoğu zaman, C'nin düşük düzeyli bir dil olduğu ya
da bir yüksek seviye assembler olduğu söylenir. Her ne kadar bazan bir
yüksek düzeyli dil olduğu söylense de, gerçekte C, yalnızca assembly
dillerinden daha yüksek düzeylidir.
C'nin assembly'ye göre iki önemli avantajı vardır: İlk olarak, C kaynak
kodunu okuması daha kolaydır, ve özellikle uzun programlar için, yazması
da çok daha zahmetsizdir. İkinci olarak, bir assembly programı
genellikle yalnızca tek bir makina çeşidi üzerinde çalışabilirken, C
programları (bir C derleyicisi ve gerekli kütüphaneler varsa) başka
sistemlerde de çalışmak için derlenebilirler. Öte yandan, bir C
programının performansı derleyicinin makina kodunu eniyileme başarısına
bağlıdır, ki bu da programcının denetimi dışındadır. Assembly
programlarının performansı ise doğrudan programcı tarafından belirlenir,
çünkü bir assembly programı aslında bir makina dilinin insanlar
tarafından daha kolay okunabilir biçimidir. Bu yüzden, bazı programların
(örneğin işletim sistemlerinin) yüksek performans gerektiren bölümleri
assembly ile yazılırlar. Yine de, özellikle modern mimariye sahip
işlemciler için, C derleyicilerinin eniyileyerek ürettiği assembly, elle
yazılmış assembly'den hızlıdır.
Benzer avantajlar ve dezavantajlar C'yi yüksek düzeyli dillerden ayırır:
bir C programının verimliliği daha iyi kontrol edilebilir, ancak C
programlarını yazmak ve okumak daha zordur. Yine de dikkat edilmelidir
ki, C en az yüksek düzeyli diller kadar taşınabilirdir, çünkü günümüzde
çoğu bilgisayar sisteminde bir C derleyicisi vardır; aslında, yüksek
düzeyli dillerin pek çoğunun derleyicileri, kütüphaneleri ve
yorumlayıcıları C ile yazılmışlardır.
C'nin önemli özelliklerinden biri de bilgisayar belleğinin kullanımının
programcı tarafından ayarlanmasıdır. Standart C otomatik bellek
kullanımını sağlamak için hiçbir araç içermez, ve dizi sınırları (İng.
array bounds) kontrol edilmez. Ancak, C'den türemiş olan Java ve C# gibi
diller otomatik bellek yönetimine izin verirler. Her ne kadar C'nin
bellek yönetimini programcıya vermesi programın performansının
ayarlanmasında programcıya daha çok olanak verse de, bu, programcılık
hatalarının artmasına da neden olur. Bu tür hatalar, bilgisayar
güvenliğini düşürmeleri ile ün kazanmışlardır. Bu bellek yönetimi
hatalarının önüne geçilebilmesi için pek çok araç üretilmiştir (örneğin
dizi limitlerini kontrol eden ve otomatik çöp toplama [garbage
collection] yapan kütüphaneler, lint gibi otomatik kaynak kodu kontrolü
yapan programlar).
C'nin bazı özellikleri aşağıda sıralanmıştır:
Çok basit bir temel dil (çekirdek dil). Elzem olmayan işlevler bir
standart kütüphaneler kümesi tarafından sağlanır.
Prosedürel programlamaya verilen özel önem. Yapısal programlama da
kolaylaştırılmıştır.
C önişlemcisi: Makro tanımlamak ve kaynak kodu dosyalarını birleştirmek
için kullanılır.
İşaretçiler aracılığı ile bilgisayar belleğine doğrudan erişim (anlamsal
açıdan yanlış işlemler derleyici tarafından engellenmezler)
Parametreler fonksiyonlara referansları ile değil, değerleri ile
geçirilirler
Lexical variable scoping
Dilin Tarihi
C'nin ilk gelişme safhaları 1969 ile 1973 arasında AT&TBell
Laboratuvarları'nda gerçekleşti. Ritchie'ye göre, en yaratıcı devre 1972
idi. Dilin pek çok özelliği "B" adlı bir dilden türediği için, yeni
dile "C" adı verildi. "B" adının kökeni konusunda ise söylentiler
değişik: Ken Thompson B'nin BCPL programlama dilinden türediğini
söylemektedir, ancak Thompson eşi Bonnie'nin onuruna adını Bon koyduğu
bir programlama dili de geliştirmiştir.
1973'e kadar C yeterince güçlü bir hale gelmiş ve ilk başta
PDP-11/20assembly dili ile yazılan UNIX'in çekirdeğinin büyük kısmı C
ile yeniden yazılmıştı. Böylece UNIX, çekirdeği bir assembly dili ile
yazılmayan ilk işletim sistemlerinden biri olmuştu.
ANSI C ve ISO C
1970'lerin sonunda C, en çok kullanılan mikrobilgisayar dili olarak
BASIC'in önüne geçmeye başladı. 1980'lerde ise, IBM PC ile kullanılmak
üzere benimsenmesiyle birlikte popülaritesi iyice artmaya başladı. Aynı
zamanda, Bell Laboratuvarları'nda Bjarne Stroustrup ve iş arkadaşları
C'ye nesneye yönelim eklemek üzere çalışmaya başlamışlardı. C bugün UNIX
dünyasında en çok kullanılan dil olarak kalırken, Stroustrup'un
geliştirip C++ adını verdiği dil Microsoft Windows işletim sisteminde en
önemli dil oldu.
1983'te Amerikan Ulusal Standartlar Enstitüsü (ANSI) bir C standardı
oluşturmak için bir kurul oluşturdu. Uzun ve yorucu bir çalışmadan
sonra, bu kurul standardı 1989'da tamamladı ve standart ANSI X3.159-1989
"Programming Language C (C Programlama Dili)" olarak yayımlandı. Dilin
bu versiyonu genellikle ANSI C olarak adlandırılır. 1990'da bu standart,
küçük değişikliklerle Uluslararası Standartlar Örgütü (ISO) tarafından
da benimsenip ISO/IEC 9899:1990 olarak yayımlandı.
ANSI C'yi oluşturmanın amaçlarıdan biri K&R C'yi içeren ve dile
sonradan katılan "gayriresmi" özellikleri de dile katan bir standart
oluşturmaktı. Standart k fonksiyon prototiplerini ve daha yetenekli bir
önişlemciyi de standarda ekledi.
Bugün artık ANSI C neredeyse tüm derleyiciler tarafından
desteklenmektedir. Günümüzde yazılmakta olan C programlarının çoğunluğu
ANSI C stardarına uygun olarak yazılmaktadır. Yalnızca standart C
kullanılarak yazılmış bir program, standarda uyumlu her derleyici ile
doğru bir biçimde derlenip çalıştırılabilir. Ancak, standart olmayan
kütüphaneler kullanılarak yazılmış programlar belli bir platform ya da
derleyici gerektirebilirler
C99
ANSI standartlaştırma işleminden sonra C dili uzun bir süre oldukça
sabit kaldı, ancak C++ gelişmeyi sürdürdü. Buna bağlı olarak, 1990'ların
sonunda ISO standardı güncellendi ve 1999'da ISO 9899:1999 olarak
yayımlandı. 2000 yılının Mart'ında ise, "C99" olarak bilinen bu standart
ANSI tarafından da benimsendi.
C99'un yeni özellikleri şöyle özetlenebilir:
inline fonksiyonlar
C++'da olduğu gibi artık değişkenler programın herhangi bir yerinde
tanımlanabilirler
long long int, boolean, complex gibi yeni veri tipleri
değişken uzunluğa sahip diziler
C++'dan alınan, // ile başlayan tek satırlık program içi açıklamalar
snprintf() gibi yeni kütüphane fonksiyonları
stdint.h gibi yeni başlık dosyaları
C99'u bugün GCC ve bazı başka derleyiciler desteklemekteyken, Microsoft
ve Borland derleyicilerine C99 desteği eklemekte isteksiz
davranmaktadırlar
C'de "Merhaba dünya!" programıAşağıdaki basit program, standart çıktıya
"Merhaba dünya!" sözcüklerini yazar. Bu programın bir versiyonu ilk kez
K&R'de basılmıştır
#include
int main( **** )
{
printf( "Merhaba dünya!\\n" );
return 0;
}