12 Ocak 2015 Pazartesi

Programlama Dillerinin Sınıflandırılması




Programlama dillerini çeşitli açılardan sınıflandırabiliriz. En sık kullanılan sınıflandırmalar:


1. Seviyelerine göre sınıflandırma.
2. Uygulama alanlarına göre sınıflandırma.

Bilgisayar  Dillerinin  Seviyelerine  Göre  Sınıflandırması  ve  Seviyelerine  Göre

Bir programlama dilinin seviyesi deyince o programlama dilinin insan algısına olan yakınlığının
derecesini anlıyoruz.  Bir programlama dili insan algılasına ne kadar yakınsa o kadar yüksek
seviyeli  demektir  (high  level).  Yine  bir  programlama  dili  bilgisayarın  elektronik  yapısına  ve
çalışma biçimine ne kadar yakınsa o kadar düşük seviyeli (low level) demektir. Yüksek seviyeli
dillerle  çalışmak  programcı  açısından  kolaydır.  Algoritma  yoktur.  Bu  dillerde  yalnızca  nelerin
yapılacağı programa bildirilir ama nasıl yapılacağı bildirilmez. Genel olarak programlama dilinin
seviyesi yükseldikçe , o dilin öğrenilmesi ve o dilde program yazılması kolaylaşır.

Bir bilgisayar yalnızca kendi makine dilini doğrudan anlayabilir. Makine dili bilgisayarın doğal
dilidir  ve  bilgisayarın  donanımsal  tasarımına  bağlıdır.  Bilgisayarların  geliştirilmesiyle  birlikte
onlara  iş  yaptırmak  için  kullanılan  ilk  diller  de  makine  dilleri  olmuştur.  Bu  yüzden  makine
dillerine 1. kuşak diller de diyebiliriz.
Makine  dilinin  programlarda  kullanılmasında  karşılaşılan  iki  temel  problem  vardır.  Makine
dilinde  yazılan  kodlar  doğrudan  makinanın  işlemcisine,  donanım  parçalarına  verilen
komutlardır.  Değişik  bir  CPU  kullanıldığında  ya  da  bellek  organizasyonu  farklı  bir  şekilde
yapıldığında  artık program çalışmayacak  ve programın tekrar yazılması gerekecektir. Çünkü
makine  dili  yalnızca  belirli  bir  CPU  ya  da  CPU  serisine  uygulanabilir.  Makine  dili  taşınabilir
(portable)  değildir.  Diğer önemli  bir  problem  ise,  makine  dilinde kod yazmanın  çok zahmetli
olmasıdır.Yazmanın çok zaman alıcı ve uğraştırıcı olmasının yanı sıra yazılan programı okumak
ya  da  algılamak  da  o  denli  zordur.  Özellikle  program  boyutu  büyüdüğünde  artık  makine  dili
programlarını geliştirmek, daha büyütmek iyice karmaşık bir hale gelir.
Başlangıçta  yalnızca  makine  dili  vardı.  Bu  yüzden  makine  dilleri  1.  kuşak  diller  olarak  da
isimlendirilir.  Yazılımın  ve  donanımın  tarihsel  gelişimi  içerisinde  makine  dilinden,  insan
algılamasına  çok  yakın  yüksek  seviyeli  dillere  (4.  kuşak  diller)  kadar  uzanan  bir  süreç  söz
konusudur. Bu tarihsel süreci ana hatlarıyla inceleyelim :
1950  li  yılların  hemen  başlarında  makine  dili  kullanımın  getirdiği  problemleri  ortadan
kaldırmaya yönelik çalışmalar yoğunlaştı. Bu yıllarda makine dilleri bilgisayarın çok sınırlı olan
belleğine yükleniyor ve programlar böyle çalıştırılıyordu. İlk önce makine dilinin algılanma ve
anlaşılma zorluğunu kısmen de olsa ortadan kaldıran bir adım atıldı. Sembolik makine dilleri
geliştirildi. Sembolik makine dilleri (Assembly languages) yalnızca 1 ve 0 dan oluşan makine
dilleri  yerine  İngilizce  bazı  kısaltma  sözcüklerden  oluşuyordu.  Sembolik  makine  dillerinin
kullanımı kısa sürede yaygınlaştı. Ancak sembolik makine dillerinin makine dillerine göre çok
önemli  bir  dezavantajı  söz  konusuydu.  Bu  dillerde  yazılan programlar makine  dilinde yazılan
programlar  gibi  bilgisayarın  belleğine  yükleniyor  ancak  programın  çalıştırılma  aşamasında
yorumlayıcı (interpreter) bir program yardımıyla sembolik dilin komutları, bilgisayar tarafından
komut  komut  makine diline  çevriliyor  ve oluşan makine  kodu  çalıştırılıyordu.  Yani  bilgisayar,
programı çalışma aşamasında önce yorumluyarak makine  diline çeviriyor daha sonra makine
diline çevrilmiş komutları icra ediyordu. Bu şekilde çalıştırılan programların hızı neredeyse 30
kat yavaşlıyordu.
Bu dönemde özellikle iki yorumlayıcı program  öne çıkmıştı: John Mauchly  nin UNIVAC 1 için
yazdığı  yorumlayıcı  (1950)  ve  John  Backus  tarafından  1953  yılında  IBM  701  için  yazılan
"Speedcoding"  yorumlama  sistemi.  Bu  tür  yorumlayıcılar  makine  koduna  göre  çok  yavaş
çalışsalar  da  programcıların  verimlerini  artırıyorlardı.  Ama  özellikle  eski  makine  dili
programcıları yorumlayıcıların çok yavaş olduklarını, yalnızca makine dilinde yazılanların gerçek
program deneceğini söylüyorlardı.
Bu sorunun da üstesinden  gelindi. O zamanlar için çok parlak kabul  edilebilecek fikir şuydu:
Her  defasında  yazılan  kod,  kodun  çalıştırılması  sırasında  makine  diline  çevireceğine,
geliştirilecek bir başka program sembolik dilinde yazılan kodu bir kez makine diline çevirsin ve
artık  program  ne  zaman  çalıştırılmak  istense,  bilgisayar  yorumlama  olmaksızın  yalnızca
makine kodunu çalıştırsın. Bu fikiri geliştiren Grace Hopper isimli bir bayandı. Grace Hopper'ın
buluşuna "compiler" derleyici ismi verildi. (Grace Hopper aynı zamanda Cobol dilini geliştiren
ekipten biridir, bug(böcek) sözcüğünü ilk olarak Grace Hopper kullanmıştır.) Artık programcılar
sembolik  sözcüklerden  oluşan  Assembly  programlarını  kullanıyor.  Yazdıkları  programlar
derleyici  tarafından  makine  koduna  dönüştürülüyor  ve  makine  kodu  eski  hızından  birşey
kaybetmeksizin tam hızla çalışıyordu. Assembly diller 2. kuşak diller olarak tarihte yerini aldı.
Assembly  dillerinin  kullanılmaya  başlamasıyla  bilgisayar  kullanımı  hızla  arttı.  Ancak  en  basit
işlemlerin  bile  bilgisayara  yaptırılması  için  bir  çok  komut  gerekmesi,  programlama  prosesini
daha hızlı bir hale getirmek için arayışları başlatmış, bunun sonucunda da daha yüksek seviyeli
programlama dilleri geliştirilmeye başlanmıştır

3 yorum: