Kaç tane programlama dili vardır diye sorsak: kimi 20 der,
kimi 50, belki 150. Ama gerçek şu ki dünyada 1000(bin)'e yakın programlama dili
mevcut. Peki ihtiyaç var mı bu kadar dile? Tabi ki de yok. O halde maraton koşusunda
birincilik için mücadele eden atletler gibi öyle diller çıkmalı ki aralarından, diğerlerinden sıyrılıp önlerde yer bulmalı. Ama nasıl ve neye göre? İşte bu
sorunun cevabıyla ilgileniyoruz bu yazımızda.
Öncelikle belirtmeliyiz ki bu yarışın bir finish çizgisi
yoktur. Üstelik belirli bir güzergahı da yoktur. Dolayısıyla en iyi programlama
dili şudur diyebilmemizin ihtimali de yoktur.Programcı, programı yazacağı alan penceresinden seyretmeli
bu yarışı. Bir önceki yazımızda uygulama alanlarından bahsetmiştik. İşte bu
alanlara göre programlama dili hangi kriterlere uymalı sorusuna cevap aranmalı.
Tabi bu bilgileri profesyonel bir programcı olmak isteyenler için veriyoruz.
Nitekim bunları bilmeden de program yazılabilir elbette. Ancak kullandığı
dilden ne düzeyde faydalanır, bunu siz cevaplayın.
Programlama dilleri
genel olarak 12 başlık altında değerlendirilebilir.
1) İfade Gücü (Expressivity)
Bir programın kaynak kodu, programın algoritmasını açık bir
şekilde yansıtıyorsa bu programda kullanılan dilin ifade gücü yüksektir
diyebiliriz. Örneğin, bir matematiksel işlem, matematikçinin kullandığı
sembollerle ifade edilmeli ki anlaşılabilir olsun. Aksi taktirde programın
kaynak kodu okuyana bir anlam ifade etmeyebilir. Bu da ifade gücüyle birlikte
bir başka kriter olan okunabilirliğin düşmesine neden olur. C ve PASCAL gibi
yapısal diller ifade gücü bakımından oldukça başarılı dillerdir.
2) Taşınabilirlik (Portability)
Bir işletim sisteminde yazılmış olan kaynak kodun diğer
sistemlerde de sorunsuz çalışabilmesi durumuna denir. Bu da derleyiciler
yazılırken önceden belirlenmiş ortak tanımlamalara uymasıyla mümkün olur. Bu
noktada, yüksek seviyeli dillerin alçak seviyeli dillere göre taşınabilirlik
açısından daha üstün olduklarını söylemekte fayda görüyorum. Ancak kusursuz
taşınabilir hiçbir dil olmadığını da bilmemiz gerekiyor. Derleyici paketlerinin
güncellenmesiyle birlikte gelen yenilikler ortak tanımlamaların dışında
kalabiliyor. Sonuç olarak yine programcıya iş düşüyor ve hangi komutların hangi
sistemlerde sorunsuz çalışabildiğini bilmesi gerekiyor. Bu kriter için de C
dilinin önemli bir başarısı olduğunu söylemek yanlış olmaz.
3) Altprogramlama Yeteneği (Modularity)
Ana programın, altprogramlara parçalanabilme özelliğidir.
Tekrarlanan işlemler için altprogram kullanma, bu işlemi yapan kodların tekrar
tekrar yazılmasını önler. Bu da kaynak kodun kısa olmasını ve daha hızlı
derlenmesini sağlar. Aynı sebepten dolayı kodun okunabilirliği de artar.
Bir başka getirisi ise hatayla karşılaşıldığında bunun hangi
altprogramda olduğunu bileceğimiz için hata çözme sürecini oldukça kısaltıyor
olmasıdır. C dili bu kriter için de örnek olarak verilebilir. C'deki bu
altprogramlara fonksiyon denir.
4) Veri Türleri ve Yapıları (Data types and structures)
Çeşitli veri türleri (karakter, metin, tamsayı, gerçel sayı
vb.) ve veri yapılarını (diziler vb.) destekleme yeteneğidir. C veri yapıları
açısından da oldukça zengin bir dildir.
5) Giriş/Çıkış Kolaylığı (Input/Output facilities)
Sıralı, indeksli ve rastgele dosyalara erişme, veritabanı
kayıtlarına veri gönderme, geri çağırma ve sorgulama yeteneğidir. Veritabanı
programlama dillerinin (SQL, DBASE, PARADOX vb.) bu yetenekleri çok üstündür. C
dili ise bu kriterde sınıfta kalan bir dildir ve veritabanı yönetimi için özel
kütüphanelere ihtiyaç duyar.
6) Verimlilik (Efficiency)
Kaynak koddan makine diline çevrilen programların hızlı
çalışabilmesidir. Bu hızda en önemli faktör derleyici olsa da dilin seviyesi ve
genel yapısı göz ardı edilemez. C programlarının hızlı çalıştığı birçok
programcının ortak kabulüdür.
7) Okunabilirlik (Readability)
Kaynak kodun rahatça anlaşılabilir durumda olmasıdır. Bu
kriterde en önemli sorumluluk programcıda olsa da okunabilirliği güçlendiren
yapılar sayesinde programlama dillerini de iş düşüyor. Biz derslerimizde bu
kavramı hatırlatarak okunabilirliği nasıl arttırabileceğimiz hakkında sizlere
bilgi vereceğiz.
8) Esneklik (Flexibility)
Programlama dilinin programcıyı kısıtlamaması anlamına
gelir. Şöyle ki esnek olmayan diller programcıyı olası hatalardan uzak tutmak
için kısıtlamalar ve yasaklamalar getirir. Oysa iyi bir programcı bu
kısıtlamalar olmadan ve hata yapmadan programlama dilinden daha fazla
faydalanabilecektir. Örneğin bir çok programlama dili, karakter türüyle tamsayı
türünü birbirine atamaz, bunu hata olarak kabul eder. Ancak iyi bir programcı
bu yolu kullanarak algoritmik bir kazanç sağlayabilirdi. Bunun için C gibi
esnek diller bu tür işlemleri hata olarak düşünmez ve programcıya müsaade eder.
Ancak bu kötü programcılar için de büyük tehlikeleri beraberinde getirir ve
birçok hatayla karşı karşıya kalmalarına neden olabilir.
9) Genellik (Generality)
Çeşitli uygulama alanlarında kullanabilme durumudur.
Örneğin, COBOL bilimsel yazılımlarda tercih edilmezken; C, PASCAL, BASIC genel
amaçlı dillerdir ve her alanda kullanılabilirler.
10) Öğrenme Kolaylığı (Pedagogy)
Programlama dillerinin
öğrenme zorlukları büyük farklılıklar gösterir. Yüksek seviyeli diller
insan algılamasına yakınlığından dolayı daha kolay öğrenilebilirler. BASIC
dilinin bu kadar tutulmasının sebeplerinden biri kolay öğrenilebilir olmasıdır.
C dili için aynısı söylemek mümkün olmaz. Eğitimi zor ve zahmetli bir dildir.
11) Yapısallık (Structural programming)
Yapısal programlama bir programlama tekniğidir ve bloklar
halinde yazım ön plandadır. Atlamalar okunabilirliği güçleştirdiği için
istenmez. Altprogramların bu teknikte rolü büyüktür. Programlar küçük parçalara
ayrılarak soyutlama sağlanır. Bu tekniği destekleyen dillere yapısal diller de
denir.
12) Nesne Yönelimlik (Object orientation)
Yapısallık gibi bu da bir programlama tekniğidir. Programlama
dillerinin büyük bölümünün nesne yönelimli uyarlamaları yapılmıştır. C'nin
nesle yönelimli uyarlaması da C++'tır.
Mustafa Altun
0 yorum:
Yorum Gönder