şükela:  tümü | bugün soru sor
209 entry daha
  • efsane olmuş programlama dilidir.

    dünyamız unıx ile sadece iphone ve ipad gibi çığır açan birçok elektronik aletin yapımını mümkün kılan bir işletim sistemi kazanmakla kalmadı, aynı zamanda yine tıpkı unıx gibi vazgeçilmez bir programlama dili olan c’ye de kavuştu. bu müthiş programlama dili c’nin tıpkı benjamin button gibi gittikçe gençleşen bir kahramana benzediğini söylersek hiç de abartmış olmayız. peki, sadece unıx’in değil windows ve linux gibi başka işletim sistemlerinin hangi programlama dilinde programlandığını hiç merak ettiniz mi? buyurun, cevabı beraber bulalım.

    1970’li yılların başında kenneth thompson ve dennis ritchie, bell laboratuvarları’ndaki bir dec pdp-7 üzerinde efsanevi işletim sistemi unıx’i yaratmıştı. unıx’in başarısı üzerine at&t hemen o dönemin en modern donanımlarından olan bir dec pdp-11 temin etmiş ve thompson ile ritchie bu makine üzerinde unıx’in daha gelişmiş bir sürümünü gerçekleştirmek için tüm güçleriyle çalışmaya başlamıştı.

    unıx, pdp-7’de b adlı bir programlama dilinin yardımıyla geliştirilmişti. b ise, mıt’de (massachusetts ınstitute of technology) görevli ingiliz bilim insanı martin richards tarafından geliştirilen bcpl (basic combined programming language) adlı programlama dilinin örnek alınmasıyla thompson tarafından 1970 yılında geliştirilmiş bir programlama diliydi. fakat b, aynı bcpl gibi donanıma hayli yakın çalışan, düşük düzeyli bir sistem programlama dili olmasına karşın pdp-11 üzerindeki yeni çalışmalar sırasında giderek yetersiz kalmaya başladı. kısa bir süre sonra bunun başlıca sebeplerinden birinin b‘nin yalnızca tek bir veri tipine sahip olması ve bu nedenle pdp-7‘ye göre hayli modern bir donanım olan pdp-11‘e tam olarak uyum sağlayamaması olduğu anlaşıldı. bunun üzerine b, unıx‘i geliştirme çalışmalarına paralel olarak, ritchie‘nin öncülüğünde yeniden gözden geçirilip geliştirilmeye başlandı. bu çalışmalar sırasında (1971-1973) b, sözdizim yapısı korunarak, ancak farklı veri tiplerine ve birçok başka yapısal değişikliğe izin verecek şekilde yeniden tasarlandı. rithcie tarafından ortaya çıkarılan bu yeni programlama dilinin ilk sürümü ilk önce “new b” daha sonra “c” olarak adlandırıldı ve 1973‘de tamamlanarak o zamanki unıx çekirdeğinin yeniden programlanmasında kullanılmaya başlandı.

    c’nin kökleri: bcpl ve b

    yukarıda da belirtildiği gibi c’nin kökleri b’ye, b’nin kökleri ise bcpl adlı bir programlama diline dayanır. bu nedenle günümüz c’sinde bile bcpl’in etkileri yer yer görülür. bcpl, 1966 yılında ingiliz bilim insanı martin richards (mıt) tarafından geliştirilmiş ve daha sonra o dönemlerdeki çeşitli projelerde başarıyla kullanılmıştı. büyük ölçüde ken thompson’ın, kısmen de dennies ritchie’nin katkılarıyla geliştirilen b ise sadece unıx işletim sisteminin ilk sürümünün geliştirilmesinde kullanılmış ve 1973’te unıx çekirdeğinin c ile yeniden yazılmasından sonra tahtını kesin olarak c’ye bırakmıştır.

    c denilince akla gelen kitap: the c programming language

    c’yi tahtına doğru götüren yoldaki en büyük destekçisinin incecik bir kitap olabileceği hiç aklınıza gelir miydi? bu gerçekten de böyle olmuştur: 1978 yılında brian kernighan ve dennis ritchie tarafından yazılmış the c programming language adlı kitap, c’yi ele alan belki de en ince ama aynı zamanda en kapsamlı ve etkili kitaptır. 1988 yılında ikinci baskısı yapılan kitap bugün bile c’yi en baştan öğrenmek isteyenlerin ve profesyonel c programcılarının bir numaralı başvuru kaynağı olarak güncelliğini koruyor.

    ansı-c’ye giden yol

    günümüz bilişim dünyasına hâkim olan programlama dillerinin aksine c, herhangi bir komite tarafından tasarlanıp düzenlenmemiş, aksine yetenekleri c’yi kullanan programcılar tarafından yapılan eklentilerle zamanla adım adım geliştirilmiştir. c, her ne kadar bu sayede kendi kendine yürüyen bir dev haline gelmiş ise de bu sürecin yan etkisi c’nin dünyanın her yerinde farklı sürümlerinin doğması olmuştur. durumun gittikçe karmaşık bir hal aldığını gören amerikan ulusal standartlar enstitüsü (american national standards ınstitute-ansı) 1983 yılında c’nin standartlaşması için bir çalışma grubu (x3j11) oluşturarak 1989’a kadar süren çalışmalar sonucunda c’yi dünya çapında standartlaştırır (ansı x3.159-1989) ve hatta bu arada dilin yapısına birkaç yenilik getirerek çeşitli iyileştirmeler de yapar: dünyaca ünlü c-standartı, ansı-c artık doğmuştur. ansı-c yapılan bir kaç değişiklikten sonra 1990 yılında ıso (ınternational organization for standardization) tarafından da kabul edilir ve “c90” başlığı altında yayımlanır. daha sonraki yıllarda (1995, 1999 ve 2011) yine ıso tarafından “c90” standartına birtakım eklemeler yapılması sonucu ortaya çıkan yeni standartlar da sırasıyla “c95”, “c99” ve “c11” başlıkları altında yayımlanır. “c11” olarak bilinen ıso standartı aynı zamanda ansı tarafından da kabul edilen en güncel c standartıdır.

    nesne yönelimli programlama ve c++’ın doğuşu

    her ne kadar nesne yönelimli programlama (object oriented programming - oop) bilişim dünyasında ilk olarak 1990’lı yıllarda ticari uygulamaların geliştirilmesinde boy göstermeye başlamış olsa da, temeli ilk olarak 1970’lerde atılmaya başlanmıştı (1967 yılında oslo üniversitesi’nden ole-johan dahl ve kristen nygaard tarafından geliştirilen simula-67 ilk nesne yönelimli programlama dilidir). 1972 yılında xerox parc laboratuvarları’nda alan kay, dan ıngalls ve adele goldberg yönetiminde geliştirilen smalltalk-80 adlı programlama dili, simula-67’den sonra ikinci nesne yönelimli programlama diliydi. 1980’li yıllarda apple tarafından başarılı bir şekilde ticarileştirilmesiyle birlikte bilişim dünyasında artık geri dönüşü olmayan bir süreç başlamıştı.

    yazılım dünyasındaki tüm bu gelişmeleri yakından takip eden bell laboratuvarları, c’nin uygulama geliştirmelerinde büyük ağırlığa sahip nesne yönelimli programlamada yetersiz kalacağını öngörerek daha 1979 yılında bjarne stroustrup adlı danimarkalı bir bilim adamının yönetiminde c++ adlı yeni nesil bir programlama dili için ilk çalışmaları başlatmıştı bile. c’nin nesne yönelimli programlamanın bel kemiğini oluşturan sınıfların ve olağandışı durumların işlenmesine olanak tanımaması, c++ projesinin başlatılmasında rol oynayan en önemli faktördü. c++ prensip olarak, yalnızca c’nin biraz daha gelişmiş ve nesne yönelimli programlama için uyarlanmış bir şekli olarak görülebilir. d adını almamasının nedeni de budur (c++, c jargonunda c’nin değerinin bir artırılması anlamına gelir). günümüzde c++, microsoft windows gibi işletim sistemlerinin geliştirilmesinden, yüksek performans gerektiren uygulamaların geliştirilmesine kadar birçok alanda kullanılıyor. aynı c’nin c++’ya ilham vermesi gibi, c++ da java, php ve c# gibi başka programla dillerinin mimarilerini hayli etkilemiştir.

    c# (c sharp)

    microsoft tarafından 2001 yılında geliştirilen c#’ın temeli c, c++ ve java’ya dayanıyor. özellikle sözdizim yapısının c’den büyük ölçüde etkilendiği söylenebilir. c# kullanımı basit, genel amaçlı fakat hayli başarılı bir nesne yönelimli programlama dili ve günümüzde microsoft.net teknolojilerinin ana programlama dilini temsil ediyor. her ne kadar c# ile geliştirilmiş uygulamalar bellek ve işlemci gereksinimleri açısından hayli tutumlu olmalarıyla bilinseler de, performans açısından c programlama dili ile programlanmış uygulamalarlala rekabet edecek düzeye erişememişlerdir.

    günümüzde c

    java, c#, c++ gibi 3. nesil bir programlama dili olan c de genel amaçlı programlama için geliştirilmiştir. c, düşük düzeyli bir dil olduğu için bir uygulama geliştirme dilinden çok ideal bir sistem programlama dilidir ve günümüzde birçok derleyici ve işletim sisteminin geliştirilmesinde kilit rol oynamaktadır. java sanal makinesi (java virtual machine), unıx ve linux’un hemen hemen tamamı, microsoft windows’un özellikle ilk sürümlerinin büyük bölümü yine c ile geliştirilmiştir. ayrıca c’nin başarıları sadece bunlarla kalmamış ve c++ üzerinden günümüzün diğer ana programlama dilleri java, php ve c#’ın mimarilerine ilham vererek, bu programlama dillerinin yapılarını da büyük ölçüde etkilemiştir. c, hayli yüksek bir performansla ve büyük bir güvenilirlikle her donanım üzerinde çalışabilmektedir ki bu son özellik bilgisayar dünyasında büyük bir devrimi de beraberinde getirmiştir (1970’li yıllarda programcıların işi hayli zordu; bir programı ya belirli bir donanım için geliştirmek zorundaydılar ya da büyük çabalar ve zaman harcayarak söz konusu yazılımı her bir donanım tipine ayrı ayrı uyarlamak zorundaydılar.)

    gelecekte c

    yukarıda da belirtildiği gibi, her ne kadar c’den daha sonra ve nesne yönelimli programlama ve olağandışı durumların tanımlanabilmesi vb. gibi hususlar da dikkate alınarak geliştirilmiş olsa da, c++ kesinlikle c’nin halefi olarak görülemez. çünkü c++ özellikle nesne yönelimli felsefeyle programlanacak olan uygulamaların geliştirilmesi için tasarlanmış bir programlama dilini temsil ederken, c donanıma çok yakın düzeyde, olağanüstü bir performansla çalışan bir sistem programlama dilidir. c’nin belki de en zayıf yönlerinden biri derleyicisinin hata ayıklama süreçlerinde programcıya yeterince “ipucu” verememesi ve dolayısı ile programcıyı bazı durumlarda hataları ile neredeyse “baş başa” bırakmasıdır. bunun sebeplerinden biri de c derleyicisinin doğrudan bellek operasyonlarına izin vermesidir. her ne kadar güvenilir programlama dilleri kategorisinde bulunsa da, c’nin bu tip özelliklerinden dolayı gerçek zamanlı sistemlerde ve güvenliğin ön planda olduğu diğer alanlarda (tıpta, havacılık ve uzay sanayilerinde vb.) uygulama geliştirilmesinde kullanılması pek tavsiye edilmez. diğer taraftan c’nin gömülü sistemlerdeki başarısını burada bir daha hatırlatmakta yarar var: mikrodenetleyici programlanması alanında c, hâlâ en çok tercih programlama dili. işletim sistemleri cephesinde ise, her ne kadar microsoft windows’un geliştirilmesinde c yerine artık c++ kullanmaya başlamış olsa da, bilişim dünyasının iki kilit işletim sistemi olan unıx’in ve linux’un geliştirilmesine -tıpkı geçmişte olduğu gibi- yine c ile devam edileceği kesindir (c doğal olarak, bu son iki işletim sisteminin sistem programlama dili olarak kalmaya da devam edecektir). bütün bu nedenlerle, c’nin gelecek dönemlerde de önemini kaybetmeyeceği, aksine unıx, linux gibi işletim sistemlerinin kullanımının yaygınlaşmasıyla daha da önem kazanacağı açıktır.

    kaynaklar
    brian w. kernighan and dennis ritchie, “the c programming
    language-ansı c”, prentice hall, 2nd edition, s. ix-xii, s.1-4, 1988.
    dennis m. ritchie, “the development of the c language”,
    association for computing machinery ınc., 1993.
    bjarne stroustrup, “die c++ programmiersprache”,
    addison-wesley, 4. aktualisierte und erweiterte auflage, s. 3-22.
    danny kalev, “the future according to dennis ritchie (a 2000 interview)”,
    linuxworld.com, 20. december 2000.
    wilfried elmenreich, “systemnahes programmieren,
    c programmierung unter unix und linux”, ınstitut für technische ınformatik,
    technische universität wien, s. 109, 2005.
    wikipedia, “c-programmiersprache”,
    http://de.wikipedia.org/wiki/programmiersprache_c/
    donna cunningham and patrick regan, “ritchie and thompson receive
    national medal of technology from president clinton”, alcatel-lucent / bell labs, 2002.
    rupert goodwins, “dennis ritchie, father of unix and c, dies”, 13. october 2011.
    http://en.wikipedia.org/…arp_(programming_language)

    -börteçin ege
111 entry daha