0.2. C Dilinin Üstünlükleri
Önceki kısımdan, C’nin pratik gereksinmelerden
ortaya çıktığı sonucuna varabiliriz; yani belirli bir sistem için yapay
hazırlanmış bir dil değildir. C, birleştirici dilinin sorunlarını kısmen
çözmek için, düşük düzeyli programlamayı destekleyici kolaylıkları
olan yüksek düzeyli bir dil olarak tasarımlanmıştır. Örneğin,
dilde girdi/çıktı deyimleri yoktur. Kullanıcı, girdi/çıktı
yapmak için “
getchar” ve
“
putchar” gibi bazı fonksiyonları
çağırır. Derleyici bu fonksiyonların anlamı hakkında hiçbir şey bilmez.
Sadece, C kütüphanesinde tanımlı olan bu fonksiyonlara çağrılar üretir.
Bu da, iyi bir kütüphanenin C’ye çok şey kazandıracağı anlamına
gelir.
C’nin diğer dillere göre bazı avantajları vardır. Bunlar aşağıda özetlenmektedir:
C, kısa, özlü, verimli, esnek ve ifadeli bir dildir. Az sayıda anahtar sözcüğe sahiptir, fakat doğru kontrol yapıları, güçlü işleçleri (diğer adıyla, işlem operatörleri) ve kolayca birleştirilen veri tipleri vardır. Bu da, dili öğrenmenin ve bir C derleyicisinin yazılmasının kolay olduğu ve bu dilde yazılan programların kısa, fakat bazen izlemesi zor olduğu anlamına gelir. Bazı işleçler diğer dillerde yoktur, fakat bunlar kolayca makine diline çevrilebilirler, bu da C dilinde yazılan programların diğer dillerde yazılanlara göre daha verimli çalışmalarının nedenini açıklar. Bundan dolayı, bazı sistemlerde C, birleştirici dilinin yerini almıştır.
C, popüler bir işletim sistemi olan unix’in temel dilidir. Bu da, en azından bu işletim sisteminde, bu dili vazgeçilmez kılmaktadır. Buna rağmen, C başka sistemlerde de kullanılmaya başlanmıştır ve, taşınabilme özelliğinden dolayı, bir sistem için yazılmış programlar kolayca başka sistemlere de aktarılabilmekte ve orada bazı ufak tefek değişikliklerden sonra derlenip doğru bir şekilde çalıştırılabilmektedir. Bu durum dilin amaçlarından biridir: programcının makine bağımlılıklarını bir tarafta ayırması ve gereksinim duyduğunda programı yeni ortamlara kolayca uyarlayabilmesi. C önişlemcisi bu konuda önemli bir rol üstlenmektedir.
C modüler programlamayı teşvik etmektedir. Diğer çağdaş programlama dilleri kadar yaygın olmamasına rağmen, programcının bunu sağlaması için bazı seçimler sunar. Çeşitli bellek sınıfları çeşitli düzeylerde gizlilik ve modülarite sağlar. Dildeki tek modül yapısı olan fonksiyon tanımı için C tek bir düzeye izin verir; bütün fonksiyonlar dışsaldır. Programcı, kolayca, kullanıcı tarafından tanımlanmış kaynak veya amaç kütüphaneleri yaratabilir ve bu yolla çok büyük programlar hazırlayabilir.
C’nin dezavantajları da vardır. C dilinde yazılan programların
izlenmesi bir miktar zor olabilir, çünkü zengin işleç kümesi program
okunaklılığını azaltır. C katı-tiplenmiş bir dil değildir; bir dizinin
sınırları dışında indisleme yapmaya çalışmak gibi, bazı programcı hataları
için yürütme zamanı desteği sağlamaz; bazı durumlarda, derleyici, ifadeler
içindeki alt-ifadelerin veya argüman listeleri içindeki ifadelerin hesaplanma
sıralarını değiştirebilir; aynı simgelerin birden fazla amaca hizmet etmesi
bazı programlama hatalarına yol açabilir—eşitlik testi ve atama işleçlerinin
karıştırılması gibi; bazı yapılar—örneğin
switch
deyimi—daha iyi tasarlanabilirdi. Bu sorunların bazıları,
C Standardını izleyen bazı yeni derleyicilerde iyileştirilmiştir.
Ayrıca, C’ye dayanarak geliştirilen C++ dili, bazı sorunları çözmüş
ve birçok yeni özellikler katmıştır. Gerçek bir C programcısının,
C’nin dezavantajları ile birlikte yaşamayı öğrenmesi gerektiğine
inanıyoruz.