Standart C Programlama Dili


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 ve çıktı deyimleri yoktur. Kullanıcı, girdi ve çı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ı, periyodik olarak güncellenen C Standardını izleyen 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.