Kaynaklar şu an halen kullanımda olan yaklaşık 1000 - 1500 programlama dilinin varlığından
söz ediyor. Neden bu kadar fazla programlama dili var? Bu kadar fazla programlama dili
olmasına karşın neden halen yeni programlama dilleri tasarlanıyor? Bir programlama dilini
diğerine ya da diğerlerine göre daha farklı kılan özellikler neler olabilir? Bir programlama dilini
tanımlamak istesek hangi sıfatları kullanabiliriz? Programlama dilleri hakkındaki bu sorulara
yanıt verebilmemiz için elimizde değerlendirme yapmamıza olanak sağlayacak ölçütler
olmalıdır. Bu ölçütleri kısaca inceleyelim:
Verimlilik (efficiency)
Bu özelliğe programın hızlı çalışma özelliği diyebiliriz. Programın çalışma hızı pek çok faktörebağlıdır. Algoritmanın da hız üzerinde etkisi vardır. Çalışmanın yapıldığı bilgisayarın da doğal
olarak hız üzerinde etkisi vardır. Verimliliği bir programlama dilinde yazılmış bir programın hızlı
çalışması ile ilgili bir kavram olarak düşünebiliriz. Bu açıdan bakıldığında C verimli bir dildir.
Veri türleri ve yapıları (data types and structures)
Çeşitli veri türlerini (tamsayı, gerçek sayı, karakter...) ve veri yapılarını (diziler, yapılar vs.)
destekleme yeteneğidir. Veri yapıları, veri türlerinin oluşturduğu mantıksal birliklerdir. Örneğin
C ve Pascal dilleri veri yapıları bakımından zengin dillerdir.
Alt programlama yeteneği (Modularity)
Bir bütün olarak çözülmesi zor olan problemlerin parçalara ayrılması ve bu parçaların ayrı ayrı
çözümlenmesinden sonra parçalar arasındaki koordinasyonun sağlanması programada sık
başvurulan bir yöntemdir. Bir programlama dili buna olanak sağlayacak araçlara sahipse alp
programlama yeteneği vardır diyebilirriz. Alt programlama yeteneği bir programlama dilinin,
programı parçalar halinde yazmayı desteklemesi anlamına gelir. (C modülaritesi çok yüksek bir
dildir)
Alt programlama Yapısal Programlama tekniği'nin de ayrılmaz bir parçasıdır. Alt
programlamanın getirdiği bazı önemli avantajlar vardır. Alt programlar kodu küçültür. Çok
tekrarlanan işlemlerin alt programlar kullanılarak yazılması çalışabilir programın kodunu
küçültür. Çünkü alt programlar yalnızca bir kere çalışabilir kod içine yazılırlar. Ama program
kodu alt programın olduğu yere atlatılarak bu bölgenin defalarca çalıştırılması sağlanabilir.
Alt programlama algılamayı kolaylaştırır, okunabilirliği artırır. Alt programlama kaynak kodun
test edilebilirliğini artırır. Kaynak kodun daha kolay güncelleştirilmesi ve yeniden kullanılabilme
olanağını artırır. Alt programlamanın en önemli avantajlarından biri de genel amaçlı kodlar
yazarak bu yazılan kodları birden fazla projede kullanabilmektir. (reusability)
C alt programlama yeteneği yüksek bir dildir. C'de alt programlara fonksiyon denir.
Fonksiyonlar C Dili'nin yapıtaşlarıdır.
Yapısallık (structural programming support)
Yapısallık bir programlama tekniğidir. Bugün artık hemen hemen bütün programlama dilleri
yapısal programlamayı az çok destekleyecek bir şekilde geliştirilmiştir. Yapısal Programlama
fikri 1960'lı yıllarda geliştirilmiştir. Yapısal programlama tekniği dört ana ilke üzerine
kurulmuştur :
1. Böl ve üstesinden gel (divide and conquer)
Yapısal programlama tekniğinde, tek bir bütün olarak çözüm getirmek zor olan programlar,daha küçük ve üstesinden daha kolay gelinebilecek parçalara bölünürler. Bu parçalar
fonksiyon, prosedür, subroutine, alt program vs. olarak isimlendiriler. Alt program yapısının
getirdiği avantajlar modularite konusunda yukarıda açıklanmıştır.
2. Veri gizleme (Data hiding)
Yapısal programlama tekniğinde, programın diğer parçalarından ulaşılamayan, yalnızca bellibir faaliyet alanı olan, yani kodun yalnızca belli bir kısmında faaliyet gösterecek değişkenler
tanımlanabilir. Bu tür değişkenler genel olarak "yerel değişkenler" (local variables) olarak
isimlendirilirler. Değişkenlerin faaliyet alanlarının kısıtlanabilmesi hata yapma riskini
azalttığı gibi, programların daha kolay değiştirilebilmesini ve program parçalarının başka
programlarda tekrar kullanabilmesini de sağlar. Alt programların, ve daha geniş şekliyle
modüllerin, bir işi nasıl yaptığı bilgisi, o alt programın ya da modülün kullanıcısından
gizlenir. Kullanıcı için (client) alt programın ya da modülün işi nasıl yaptığı değil, ne iş
yaptığı önemlidir.
3. Tek giriş ve Tek çıkış (single entry single exit)
Yapısal programlama tekniğini destekleyen dillerde her bir altprogram parçasına girmek için
tek bir giriş ve tek bir çıkış mekanizması vardır. Bu mekanizma programın yukarıdan aşağı
olarak akışı ile uyum halindedir. Program parçalarına ancak tek bir noktadan girilebilir.
4. Döngüler ve diğer kontrol yapıları.
Artık hemen hemen kullanımda olan bütün programlama dilleri az ya da çok Yapısal
Programlama tekniğini desteklemektedir. Zira bu teknik 60'lı yıllar için devrim
niteliğindeydi.
Esneklik (flexibility)
Esneklik programlama dilinin programcıyı kısıtlamaması anlamına gelir.Esnek dillerde birçokişlem, hata yapma riski artmasına karşın rağmen kullanıcı için serbest bırakılmıştır. Programcı
bu serbestlikten ancak yetkin bir programcıysa bir fayda sağlayabilir. Fakat programcı
deneyimsiz ise bu esneklikten zarar görebilir.
Öğrenme ve öğretme kolaylığı (pedagogy)
Her programlama dilini öğrenmenin ve öğrenilen programlama dilinde uygulama
geliştirebilmenin zorluğu aynı değildir. Genel olarak programlama dillerinin seviyesi
yükseldikçe, öğrenme ve bu programlama dilini başkalarına öğretme kolaylaşır, öğrenme için
harcanacak çaba ve zaman azalır. Bugün yaygın olarak kullanılan yüksek seviyeli programlı
dillerinin bu derece popüler olmasının önemli bir nedeni de bu dillerin çok kolay
öğrenilebilmesidir. Ne yazık ki C öğrenimi zor ve zahmetli bir dildir.
Genellik (generality)
Programlama dillerinin çok çeşitli uygulamalarda etkin olarak kullanılabilmesidir. ÖrneğinCOBOL mühendislik uygulamalarında tercih edilmez zaten ticari uygulamalar için tasarlanmıştır,
Clipper ya da FOXPRO veri tabanı dilleridir. Oysa PASCAL, BASIC daha genel amaçlı dillerdir. C
dili de bir sistem programlama dili olarak doğmasına karşın, güçlü yapısından dolayı, kısa bir
süre içinde, genel amaçlı bir dil haline gelmiştir.
Giriş / Çıkış (input / output, I / O facility) kolaylığı
Sıralı, indeksli ve rasgele dosyalara erişme, veritabanı kayıtlarını geri alma, güncelleştirme ve
sorgulama yeteneğidir. Veritabanı programlama dillerinin (DBASE, PARADOX vs.) bu
yetenekleri diğerlerinden daha üstündür ve bu dillerin en tipik özelliklerini oluşturur. Fakat C
giriş çıkış kolaylığı kuvvetli olmayan bir dildir. C'de veri tabanlarının yönetimi için özel
kütüphanelerin kullanılması gerekir.
Okunabilirlik (readability)
Okunabilirlik, kaynak kodun çabuk ve iyi bir biçimde algılanabilmesi anlamına gelen bir
terimdir. Kaynak kodun okunabilirliğinde sorumluluk büyük ölçüde programı yazan kişidedir.
Fakat yine verimlilik de olduğu gibi dillerin bir kısmında okunabilirliği güçlendiren yapı ve
mekanizmalar bulunduğu için bu özellik bir ölçüde dilin tasarımına da bağlıdır. En iyi program
kodu, sanıldığı gibi "en zekice yazılmış fakat kimsenin anlayamayacağı" kod değildir.
Birçok durumda iyi programcılar okunabilirliği hiçbirşeye feda etmek istemezler. Çünkü
okunabilir bir program kolay algılanabilme özelliğinden dolayı seneler sonra bile güncelleştirmeye olanak sağlar. Birçok kişinin ortak kodlar üzerinde çalıştığı geniş kapsamlı
projelerde okunabilirlik daha da önem kazanmaktadır.
C de okunabilirlik en fazla vurgulanan kavramlardan biridir. Biz de kursumuz boyunca
okunabilirlik konusuna sık sık değineceğiz ve C programlarının okunabilirliği konusunda bazı
temel prensipleri benimseyeceğiz.
Taşınabilirlik (portability)
Bir sistem için yazılmış olan kaynak kodun başka bir sisteme götürüldüğünde, hatasız birbiçimde derlenerek, doğru bir şekilde çalıştırılabilmesi demektir.
Taşınabilirlik standardizasyon anlamına da gelir. Programlama dilleri (ISO International
Standard Organization) ve ANSI (American National Standard Institute) tarafından standardize
edilirler. 1989 yılında standartlaştırma çalışmaları biten C Dili, diğer programlama dillerinden
daha taşınabilir bir programlama dilidir.
Nesne Yönelimlilik (object orientation)
Nesne yönelimlilik de bir programlama tekniğidir.Yapısal programlama Tekniği 1960 yılarında gündeme gelmişken, Nesne Yönelimli
Programlama Tekniği 1980'li yıllarda popüler olmuştur.
Bu teknik kaynak kodların çok büyümesi sonucunda ortaya çıkan gereksinim yüzünden
geliştirilmiştir. C dilinin geliştirildiği yıllarda, akla gelebilecek en büyük programlar ancak onbin
satırlar mertebesindeydi, ancak kullanıcıların bilgisayar programlarından beklentilerinin artması
ve grafik arayüzünün artık etkin olarak kullanılmasıyla, bilgisayar programlarının boyutu çok
büyümüş, yüzbin satırlarla hatta milyon satırlarla ölçülebilir hale gelmiştir.
Nesne yönelimli programlama Tekniği, herşeyden önce büyük programların yazılması için
tasarlanmış bir tekniktir. C dilinin yaratıldığı yıllarda böyle bir tekniğin ortaya çıkması söz
konusu değildi, çünkü zaten programlar bugünkü ölçülere göre çok küçüktü.
Nesne yönelimli programlama Tekniğinin yaygın olarak kullanılmaya başlanmasıyla birlikte bir
çok programlama dilinin bünyesine bu tekniğin uygulanmasını kolaylaştırıcı araçlar eklenek,
yeni versiyonları oluşturulmuştur. Örneğin C'nin nesne yönelimli programlama tekniğini
uygulayabilmek için Bjarne Stroustrup tarafından geliştirilmiş haline C++ denmektedir. C++
dili C dili baz olarak alınıp, geliştirilmiş yeni bir programlama dilidir. C++ dilini iyi öğrenebilmek
için öncelikle C dilini çok iyi öğrenmek gerekir.
Pascal diline eklemeler yapılarak Delphi dili, Cobol dilinden yenilemesiyle OOCobol, Ada dilinin
yenilenmesiyle ise ADA 95 dilleri geliştirilmiştir.
Bazı programlama dilleri ise doğrudan N.Y.P.T'ni destekleyecek şekilde tasarlanarak
geliştirilmiştir. Örneğin JAVA dili C++ dilinin basitleştirilmiş biçimi olup daha çok Internet
uygulamalarında kullanılmaktadır. Başka bir örnek olarak da Eiffel dili verilebilir
0 Yorum:
Yorum Gönder