Programlama dilleri belli başlı sorunların bilgisayar tarafından çözülebilmesi için insan-bilgisayar arasında iletişim kurulmasını sağlayan yapılar bütünü olarak tanımlanabilir. Programlama dillerini kullanarak bilgisayarın sizin için yapmasını istediğiniz işlemleri yönetebilir ve komutlar verebilirsiniz. Programlama dilleri, sizin de bildiğiniz gibi evrensel kullanım yoluyla oldukça popüler hale geldi ve de geniş bir teknoloji ağına sahip olması sebebiyle gerekliliği reddedilemez boyutlara ulaştı.
Yazının ilerleyen kısımlarında bahsedeceğiz fakat giriş mahiyetinde birkaç bilgi vermek istiyorum. Belki aşinasınızdır, bilgisayarlar “ikili” dediğimiz yöntem ile çalışır. Bu ikili yöntemi basitçe 1’ler ve 0’ların yan yana gelerek ortaya çıkardığı sentaks olarak açıklayabiliriz. Bahsettiğimiz bu sentaks anlaşılması zor bir yapı olduğu için programlama dilleri adeta bir çevirmen gibi araya girip biz ve bilgisayarlar arasında temsili ifadeler kullanarak iletişim kurmamızı sağlar. Kısacası yazdığımız kod ikili sisteme çevrilerek verimli bir iletişim ortaya çıkarılır. Bu işlem “Derleme” olarak isimlendirilir.
Bu yazımız ile birlikte programla dilleri hakkında genel bilgi vermek ve sonrasında özel olarak programlama dilleri ile alakalı bir seri hazırlamak istiyorum. Hakkında bilgi vermemi istediğiniz herhangi bir konu olursa yorumlar kısmında düşüncelerinizi ve isteklerinizi belirtebilirsiniz. Şimdi programlama dillerinin tarihçesine göz atalım.

Programlama Dillerinin Tarihçesi
1822 yılında “Fark Makinesi” şeklinde adlandırılan aygıt, Charles Babbage tarafında keşfedildi ve böylece ilk defa –çalışma prensibi göz önüne alındığında- makinelere talimat vererek istenilen işi yaptırma ihtiyacı ortaya çıktı. Tahmin edersiniz ki bu ihtiyaç, programlama dillerinin oluşumuna ortam hazırladı. Başlangıçta gelişmemiş donanımın sınırları içinde kalan programlama dilli, zamanla mantıksal dallanma, nesne yönelimi gibi özellikler kazanarak gelişme kaydetti. Programlama dilleri özellikle geçtiğimiz 50 sene içerisinde iki önemli aşama ile ayrıldı. Bunlar; erken dönem programlama dilleri ve modern programlama dilleri olarak iki ana grupta incelenebilirler.
Babbage’ın fark makinesi, iç içe geçmiş çarklıların belli bir düzenle ayarlanması yoluyla işlem gerçekleştirir. Tanıdık gelmesi amacıyla ilk hesap makineleri ve kasalar örnek verilebilir. Bu cihazlar, Babbage’ın “Fark Makinesi” ile aynı yöntemi izleyerek çalışır. Çok uzak değil, birçoğumuzun babası bu makineleri kullanmıştır diye tahmin ediyorum. Zaman içinde mekanik programlama biçimi yerini elektrikli sistemlere bıraktı. Buna örnek olarak ABD tarafından geliştirilen ENIAC gösterilebilir.
John Von Neumann, 1945 yılında bilgisayar programlama sisteminin gidişatını belirleyen iki önemli kavram ortaya sürdü. Bunlardan ilki, “Basit bir donanımın, karmaşık komutlar ile kontrol edilmesini öngören ve yeniden programlamayı basitleştirerek, programa göre donanım değişikliğini ortadan kaldıran paylaşımlı programlama.” tekniğidir.
İkinci kavram ise programlama dilleri açısında oldukça önemli bir yere sahip olan “Koşullu Denetim Transferi Kavramı”dır. Bu kavramı, bir programlama dilinde program yazılırken yapılacak işlemin programın yazılış sırasına göre yapılması yerine alt programların ve kısa kod parçalarının istenilen sırayla işleme alınması özelliği şeklide açıklamak mümkündür. Bu özelliğin amacı programlama dilini geliştirebilmek ve “if-else-then-for” gibi mantık ifadelerinin, döngü deyimlerinin kullanımını sağlamaktır.
1949 yılında ilk defa elektronik cihazları kodlayabilmemizi sağlayan ve “Short Code” adı verilen programlama dili üretildi. Bu dilde programlamacı 0 ve 1’leri kullanarak elektronik aygıtları kodlayabiliyor, program komutlarını değiştirebiliyordu. Ayrıca “Short Code” ilk karmaşık programlama dillerinden biri olarak kabul edilir.
Short Code dilinden iki yıl sonra, 1951 yılında Grace Hoper ilk derleyiciyi yazdı. Böylece karmaşık 0-1 sistemini kapsayan ve temsili ifadelerle program yazımını kolaylaştıran bir programlama sistemi oluşturulmuş oldu. Bu durum elbette işleri daha da kolaylaştırdı.
Ve tüm bunların ardında 1957 yılında ilk gelişmiş programlama dili olan FORTRAN ortaya çıktı. Bu dil IBM tarafında bilişsel hesaplamaları yapmak amacıyla geliştirildi. Bu dilin içeriği oldukça basittir ve kullanıcın bilgisayar donanımına alt seviyeden erişmesine imkân sağlar. Günümüzde bu dil, içerdiği mantık ifadelerinin kullanışsız hale gelmesi sebebiyle genelde tercih edilmiyor. Tabi ki icat edildiği dönemde bu ifadeler oldukça faydalıydı. FORTRAN günümüz dillerine ilham verdi ve onların gelişmesini sağladı.
1958 yılında MIT’de çalışmakta olan John McCarthy, yapay zeka çalışmalarında kullanmak amacıyla LISP dilini geliştirdi. Oldukça derin ve karmaşık bir alanda çalışmak amacıyla geliştirilen bu dilin söz dizim yapısı kendine özgüydü. LISP dilinin diğer dillerden ayrılan yanı, içerdiği tek veri türünün liste olmasıdır. Liste veri türü parantezler içerisinde sınırlandırılmış öğeler dizisi anlamına gelir. Bununla birlikte LISP dilinin kendi kendini değiştirme ve geliştirme gibi oldukça şaşırtıcı bir özelliği de bulunmaktadır.
Yine 1958 yılında “ALGOL” adlı programlama dili nesne yönelimli programlamada kullanılmak için geliştirildi. Bu dil programlama açısından oldukça önemli bir konuma sahipti çünkü PASCAL, C, C++, JAVA gibi dillerin gelişmesi için ilk adımdı. ALGOL dili, bir sonraki sürümü olan ALGOL 68 ile birlikte kendi kendini çağıran (recursive) fonksiyonlar gibi özellikler kazanmasına rağmen bu özellikle birlikte kullanım zorluğunu da beraberinde getirmiş ve bundan dolayı PASCAL dili üretilmiştir.
PASCAL dili, daha önce bahsettiğimiz diğer dillerin kullanışlı özellikleri birleştirilerek 1968 yılında Niklaus Wirth tarafından geliştirildi. PASCAL dili ile birlikte işaretçi veri türü ve “Case” kontrol yapısı ortaya çıktı. PASCAL kendi içinde yenilikler getirerek kullanıcılara sunuldu fakat o sıralarda yeni geliştirilen bir dil dikkat çekmeye başlamıştı.
C programlama dili, 1972 yılında, Dennis Ritchie tarafından New Jersey merkezli Bell Laboratuvarları’nda geliştirildi. İlk gelişmiş dillerden günümüzün modern dillerine geçiş PASCAL’dan C diline geçiş ile gerçekleştirildi. C dilinin kökeni “B” ve “BCPL” dillerine dayanmasına rağmen PASCAL dili ile oldukça benzerlik göstermektedir. PASCAL’ın içerdiği birçok özelliği barındıran C dili hızlı ve güçlü olmak amacıyla işaretçi yapısını oldukça kapsamlı kullanır. Bu açıdan bakıldığında C dilinin okunurluğu zordur ama PASCAL dilindeki birçok hatayı giderdiği için kullanıcılar tarafından benimsenmiştir. Ayrıca C dili UNIX, Windows, McOS ve çeşitli Linux sürümleri gibi işletim sistemlerinin geliştirilmesinde de kullanıldı.
Bu gelişmeler ile birlikte 64’lü yıllardan günümüze kadar C++, BASIC, JAVA, Visual BASIC, Pearl gibi bilinen ve kullanılan, nesneye yönelik-web tabanlı diller ortaya çıktı ve sonrasında geliştirildi. Bu gibi diller yaşadığımız dönemde geniş çevrelerce kullanılmakta.
Programlama dilleri yıllardır geliştiriliyor ve gelişim kuşkusuz daha da devam edecek. Geliştirilen her yeni dil kendisinden önceki dillerin hatalarından sıyrılmış ve kendi bünyesinde tüm iyi yanları barındıracak şekilde ortaya çıkıyor.
Bugüne kadar geliştirilmiş programlama dillerini şu alt başlıklar ile sıralamak mümkündür:

Programlama Dillerinin Sınıflandırılması
1-Genel Sınıflandırma
*Temel Programlama Dilleri
- Fortran
- C
- Cobol
- Basic
- Pascal
*Veriye Yönelik (Data Oriented) Programlama Dilleri
- Lisp
- Apl
- Snobol
- Icon
*Nesneye Yönelik (Object Oriented) Programlama Dilleri
- Java
- C++
- Ada 95
- VisualBasic
- Simula
2-Uygulama Alanlarına Göre Sınıflandırma
*Bilimsel Mühendislik Dilleri
- Fortran
- C
- Pascal
- Phyton
*Sistem Programlama Dilleri
- C
- Assembly
*Veritabanı Dilleri
- Dbase
- Clipper
- Microsoft SQL Server
*Yapay Zeka Dilleri
- Prolog
- LISP
- Phyton
*Genel Amaçlı Programlama Dilleri
- C
- Pascal
- Basic
3-Seviyelerine Göre Sınıflandırma
*Düşük Seviye/Altdüzey
- Assembly
*Orta Seviye
- C
- C++
- C#
*Yüksek Seviye
- Fortran
- Basic
- Pascal
- Cobol
- Phyton
*Çok Yüksek Seviyeli Diller
- Dbase
- Clipper
- VisualBasic
- Paradox
- Access
Bu noktada belirtmek gerekir ki programlama dillerini seviyelerine göre sınıflandırırken kullandığımız düşük, orta, yüksek ve çok yüksek gibi sıfatlar, onların kalitesiyle neredeyse hiç bağdaşmaz. Burada akıllara gelmesi gereken programlama dilinin bilgisayar diline uzaklığı ve yakınlığı ya da programlama dilinin insan diline yakınlığı ve uzaklığıdır. Düşük seviyeli diller bilgisayar diline yani 0-1 sistemine yakınken yüksek seviyeli diller insan diline daha yakındır.
Yukarıda bahsettiğimiz gibi programlama dilleri değişik amaçlarla kullanıldı ve zaman içerisinde gelişerek farklılaştı. Günümüzde sıkça kullanılan dillerin en önemli ortak özelliği nesneye yönelik programlama olmalarıdır diyebiliriz.

Nesneye Yönelik Programlama
Nesneye yönelik programlamanın kökeni 60’lı yıllarda geliştirilen “Simula” isimli dile dayanır. Bu kavram, adından da anlaşılacağı üzere nesne odaklıdır. Burada “nesne”, gerçek dünyada var olan ya da programcı tarafından tasarlanan mantıksal bir varlıktır. “Nesne, kendisini tanımlayan veriler ve bu veriler üzerinde yapılacak tüm işlemler ile bir bütün olarak düşünülür. Aynı gruptan nesnelere genel bir isim verilip yeni bir veri türü yaratılır. Bir genelleme olan bu yapı ‘sınıf’ olarak adlandırılır. Nesneye yönelik programlama üç temel yapı üzerine oturtulmaktadır.”
Veri Soyutlama: Kullanıcının yeni veri türlerini modelleyen sınıflar yaratmasıdır.
Kalıtım: Yaratılan sınıfların genişletilerek ve özelleştirilerek yeni sınıflar oluşturulmasıdır.
Çok Biçimlilik: Aynı isimdeki işlemlerin değişik nesne sınıfları için farklı algılanmasıdır.
Sonuç olarak başta bilgisayarlar biliminin ve teknolojinin gelişiminde önemli rol oynayan programlama dilleri zaman içerisinde oldukça geniş kullanım alanlarına yayıldı ve gelişti. Bu gelişim hala devam ediyor.
Sonraki yazılarda gelişen ve değişen programlama dilleri üzerinde durulacak ve kapsamlı bilgiler verilecek.
KAYNAKÇA
- Bilgisayar Mühendisliğine Giriş, Programlama Dilleri, Rifat Çölkesen
- C++ ile Programlama, Programlama Dilleri, Paul-Harvey Deitel
- Yapay Zeka, Nils J. Nilsson