14 Nisan 2015 Salı

Programlama Dillerinin Değerlendirilmesi

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