6 Aralık 2011 Salı

PROGRAMLAMA DİLLERİNİN TARİHİ


Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tektipleştirilmiş yoludur. Programlama dilleri, yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını, verinin nasıl depolanıp iletileceğini, hangi koşullarda hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar. Bir başka deyişler programlama dillerini günlük hayatta kullandığımız dillere benzetmekte mümkündür. Tek farkı programlama dillerini makinelere belli iş parçacıklarını yaptırmak için kullanıyor olmamızdır. Programlama dilleri, programlamaya belli yaklaşımları ifade ederler. Programlama dilleri de günümüzdeki birçok dil gibi bir birinden etkilenmek sureti ile gelişimini sürdürmektedir.
Her yeni programlama dili bazen devrim niteliğinde bazen de ilerleme anlamında yepyeni özellikler getirmiş, karmaşık olan yazılım geliştirme projelerinin yine karmaşık olan programlama faaliyetlerini daha basit ve üretken yapma konusunda iddialara sahip olmuşlardır.
Şu ana kadar 2500’den fazla programlama dili yapılmıştır. Her dili ayrı ayrı ele alıp özelliklerini incelemek bu yazının konusu olmamakla beraber belli başlı dillerden yola çıkarak 20. yüzyılın ortalarında başlayan programlama ve yazılım projesi geliştirmenin ne gibi safhalardan geçtiğini anlamakta fayda vardır.





Makine ve Assembly Kodları
Programlamanın ilk yıllarında, 1950′lerde yani, programlama doğrudan makine dilinde yapılıyordu ve ortaya çıkan koda da makine kodu deniyordu. Zaten yazılan programlar da yeterince küçüktü ve üzerinde çalışılan bilgisayarlar, günümüz bilgisayarları ile kıyaslanamayacak derece ilkeldiler. Dolayısıyla programların etkin çalışması da önemliydi. Bu yüzden makine dili çok zaman yeterli olabiliyordu. Makine kodu, 0 ve 1′lerden oluşmakta olup, ilk nesil kod (first-generation code) olarak adlandırılmaktadır.
Daha sonraları, makine koduna çevrilebilen, 2.nesil yapılar ortaya çıktı: Assembly dilleri. Bu diller, içinde ADD, PUSH, PULL gibi kelimeler barındıran ve assembler denen çevirici programlar tarafından makine koduna çevrilebilen bir üst seviyeli dillerdi.

FORTRAN
1954'de IBM tarafından üretilen IBM 704 için ilk sürümük Jhon Backus ve ekibi tarafından geliştirilmiştir. Backus ve ekibi Kasım 1954'de "The IBM Mathematical FORmula TRANslating System: Fortran" isimli raporu yayınlamışlardır. Fortran ilk yüksek düzey programlama dili olmasa da 1950'deki yüksek programlama dilleri derlenmeden, bir yorumlayıcı (interpreter) yardımıyla çalıştırılıyordu. Bu da makine koduyla yazılan programlardan en az 10 kat daha yavaş çalışmalarına sebep oluyordu. 1950'lerdeki bilgisayarlar için hız çok şey ifade ettiğinden yazması zor da olsa makine kodu bu yüzden hala populerdi. İşte bu noktada Backus ve ekibi hem yüksek programlama dilleri gibi kolay yazılabilen hem de makine kodunda yazılmış gibi hızlı çalışan bir programlama dili sözüyle Fortran 'ı tanıttılar.
Fortran 'ı diğer yüksek düzey programlama dillerinden ayıran bir çevirici yerine bir derleyici(compiler) kullanmasıydı. Program yüksek düzey dilde yazıldıktan sonra makine koduna çevriliyor ve böylece hız kaybı engelleniyordu. Her ne kadar ilk derlenebilir yüksek düzey dilin Fortran olup olmadığı hala tartışma konusu olsa da, Fortran geniş kitleler tarafından kullanılmış ilk yüksek düzey derlenebilir dildir. İlk Fortran sürümü Fortran 0 'dır.

ALGOL
ALGOL, yüksek düzey bir programlam dilidir. Adı ALGOritmic Language 'den gelmektedir. ALGOL evrensel bir programlama dili yaratmak için yapılan çalışmalar sonucu doğmuştur. Amerika ve Avrupa'da hızla gelişen bilgisayar bilimi sonucunda tasarlanmış birçok programlama dili vardı. Özellikle Amerikan tekelinde kalmak istemeyen Avrupalı bilim insanları da programlama dilleri üzerinde çalışmalar yapmaktaydılar. GAMM(Almanca'da Uygulamalı Matematik ve Mekanik Örgütü'nün kısa adı) her makine üstünde çalışabilen evrensel bir programlama dili üzerinde çalışıyordu. Amerika Birleşik Devletlerinin GAMM 'ı ikna etmesiyle Avrupa ve Amerika evrensel bir programlama dili üstünde çalışmaya karar verdiler. 1958'de 27 Mayıs'dan 1 Haziran'a kadar Zürih'de yapılan toplantıda evrensel bir programlama dili üstünde çalıştılar. Toplantı sonunda ALGOL 58 adıyla ilk ALGOL doğmuş oldu. Aslında toplantı sonunda programlama dilinden çok bir taslağı çıkmıştı. Amerikalı ve Avrupalı bilim insanlarının birçok konuda yeni fikirler üretmelerine rağmen, toplantılar bazı zamanlar anlamsız tartışmalarla geçiyordu. (Küsuratlı sayılar için nokta mı (Amerikan yöntemi) yoksa virgül mü (Avrupalı yöntemi) kullanılacak gibi.) Toplantı sonunda evrensel bir programlama dili için bir umut doğmuş da olsa ALGOL 58 pek kullanılan bir dil olmadı. Özellikle FORTRAN 'ın IBM tarafından çıkarılmış olması ve IBM 'in kendi diline ağırlık vermesi ve Amerikan Ordusunun kendi programlama dilini tercih etmesi de bunu etkiledi. ALGOL 58 Avrupalı yaratıcıları tarafından da sahiplenilmedi.

İkinci toplantı 1960'da Paris’te oldu. 1958'deki toplantının aksine bu seferki bir hafta sürüdü. Fakat bu bir haftada büyük gelişmeler kaydedildi. John Backus ve Peter Naur tarafından yaratılan BNF (Backus-Naur form) toplantının en önemli olaylarından biriydi. İkinci toplantının ardından ALGOL 60 beklenen etkiyi yapmadı. Ne Amerika'da ne de Avrupa'da geniş kitlelere ulaşabildi. Bunun en büyük sebeperinden bir tanesi o zamanki programcıların ALGOL 'u biraz fazla karışık bulmalarıydı. Özellikle dilin daha kolay anlaşılması için çıkmış olan BNF onlar için tam bir karmaşaydı. Büyük bilgisayar firmalarının (IBM vb.) da ALGOL 'u desteklememesi sonucu bu programlama dili geniş kitlelere hiç ulaşamadı.
Her ne kadar geniş kitlelere ulaşamamış da olsa evrensel bir programlama dili yaratmaya çalışan ALGOL: PL/I, SIMULA 67, ALGOL 68, C, Pascal,Ada,C++ ve Java gibi dillerin atası sayılabilir. Ayrıca BNF formatının çıkması, ayrıştırma teorisinin şekillenmesi, derleyici tasarımı gibi alanlarda yapılan çalışmalarla ALGOL bilgisayar bilimine büyük katkılar sağlamıştır.

BASIC
BASIC (İngilizce: Beginner's All-Purpose Symbolic Instruction Code Türkçe: Yeni başlayanların her işe yarayan simgesel öğretim kodu) 1964'te John George Kemeny ve Thomas Eugene Kurtz tarafından New Hampshire, ABD'de icat edilmiş, günümüzde de çeşitli türevleri kullanılmakta olan yüksek düzey bir programlama dilidir. Farklı türevleri birçok işletim sisteminin parçası olarak sunulmuştur.
BASIC öğrenmesi ve yazılımları kolay olan bir dildir. Genelde amatörce ve hobi uğraşıları için kullanılmıştır. Microsoft daha sonra Kişisel bilgisayarlar için Quick Basic derleyicisi piyasaya sürmüştür. Bununla yazılan BASIC metinlerini makine koduna çevrilebilmiş böylece sürat kazanmıştır. Bugün halen geniş bir kullanım alanına sahip olan Visual Basic dili var olup bununla hatta Windows'un belirli bölümleri yazılmıştır. Her Microsoft Office paketinde bir BASIC türevi var olup makro programlamada büyük kolaylıklar getirmektedir.
Basic programlama dili algoritma'ya çok yakın bir yapıya sahiptir. Bu yüzden öğrenilmesi ve uygulanması kolaydır.

PASCAL
Pascal bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli sürümleri bugün hala yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.
Bilgisayar bilimcisi Niklaus Wirth Pascal'ı 1970'te yapısal programlamayı derleyiciler için daha kolay işlenir hale getirebilmek amacıyla geliştirmiştir. Adını matematikçi ve düşünür Blaise Pascal'dan alan Pascal, Algol programlama dilinden türemiştir. Wirth, Pascal'dan başka Modula-2 ve Obreon programlama dillerini de geliştirmiştir. Bu diller Pascal'a benzerler ve ayrıca nesneye yönelik programlamayı da desteklerler.

C
AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis M. Ritchie tarafından UNIX İşletim Sistemi' ni geliştirebilmek amacıyla B dilinden türetilmiş yapısal bir programlama dilidir. Geliştirilme tarihi 1972 olmasına rağmen yayılıp yaygınlaşması Brian W. Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin (Microsoft Windows, GNU/Linux, BSD, Minix) yapımında %95' lere varan oranda kullanılmış, halen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken heryerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır.
Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen bir alt küme C++ diline geçmişlerdir.

C++
C++ (Bell Labotaruvarlarından Bjarne Stroustrup tarafından 1979 yılından itibaren geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir. İlk olarak C With Classes (Sınıflarla C) olarak adlandırılmış, 1983 yılında ismi C++ olarak değiştirilmiştir. Beraberinde getirdiği en büyük yenilik OOP(Nesne Yönelimli Programlama) olmuştur.
Genel olarak her C programı aynı zamanda bir C++ programıdır, ancak her C++ programı bir C programı değildir. Bu durumun bazı istisnaları mevcuttur. C++'ı C 'den ayıran özellikler C++'ın nesne paradigması kullanılarak programlamaya olanak tanıyan özelliklerdir. Sınıflar sayesinde yeni veri türleri yaratılabilir veya varolan türlerden yenileri türetilebilir. Ayrıca çok biçimlilik sayesinde bir sınıf tanımıyla yazılmış kod, o sınıf türünden türetilmiş yeni sınıflarla da çalışabilir.

JAVA
Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (interpreted) bir dildir. Genelde ufak çaplı projelerde kullanılır.
1995 yılında Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük level olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Virtual Machine(JVM)'de çalışabilir.
Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. Şu anda özellikle kurumsal alanda ve mobil cihazlarda son derece popüler olan Java özellikle J2SE 1.4 ve 5 sürümü ile masaüstü uygulamalarda da yaygınlaşmaya başlamıştır.

C#
C# Programlama Dili, Microsoft'un 2000 yılının sonuna doğru geliştirmiş olduğu yeni nesil dilidir. Yine Microsoft tarafından geliştirilmiş .NET Teknolojisi için geliştirilmiş dillerden biridir.
C programlama dilinde bir tamsayı değişkeni 1 attırmak için ++ soneki kullanılır. C++ dili adını, C diliyle Nesneye Yönelimli Programlama yapabilmek için eklentiler (C With Classes) almıştır. Benzer şekilde C++ diline yeni eklentiler yapılarak ((C++)++) bir adım daha ileriye götürülmüş ve tamamen nesneye yönelik tasarlanmış C# dilinin isimlendirilmesinde, + karakterlerinin birbirlerine yakınlaşmış hali ve bir melodi anahtarı olan C# Major kullanılmıştır.
Bu dilin tasarlanmasına Pascal, Delphi derleyicileri ve J++ programlama dilinin tasarımlarıyla bilinen Anders Hejlsberg liderlik etmiştir.
Birçok alanda Java'yı kendisine örnek alır ve C# ta java gibi C ve C++ kod sözdizimine benzer bir kod yapısındadır. .NET kütüphanelerini kullanmak amacıyla yazılan programların çalıştığı bilgisayarlarda uyumlu bir kütüphanenin ve yorumlayıcının bulunması gereklidir. Bu, Microsoft'un .Net Framewok'u olabileceği gibi ECMA standartlarına uygun herhangi bir kütüphane ve yorumlayıcı de olabilir. Yaygın diğer kütüphanelere örnek olarak Portable.Net ve Mono verilebilir.
Özellikle nesne yönelimli programlama kavramının gelişmesine katkıda bulunan en aktif programlama dillerinden biridir. .NET platformunun anadili olduğu bazı kesimler tarafından kabul görse de bazıları bunun doğru olmadığını savunur.

Makalemde anlattığım programlama dilleri yazının başında da ifade ettiğim gibi kilometre taşları kabul edilecek programlama dillerinden bazılarıdır. Program dillerinin birbirlerinden etkilendiğini ve türediğini birlikte gördük. Aşağıda bu ilişkinin bir tablosu bulunmaktadır.



Bir sonraki makalemde görüşmek üzere hoşçakalın.

İbrahim KILIÇ

Hiç yorum yok:

Yorum Gönder