Fortran'dan C#’a Zaman Tüneli

Merhabalar,

Uykunun en uyku olduğu yerinde kalkıp gecenin karanlığına her zamanki gibi yazılım aşkı ve merakı ışık tutmakta.  İçimde bir ses uyumamı engelliyor. Yapılacak çok iş var, bi yerden başlamak lazım.. Kimseyi uyandırmamak için ses çıkarmamaya özen gösterek bastığım klayve tuşları ve zihnimden akan kelimeler..

Çok sorulan bir soru.. Bir zaman makineniz olsa nereye gitmek isterdiniz?  2002 yılında “The time machine” filminin de insanlara yönelttiği soru buydu (Where would you go?).  Filmin kahramanı bir kazada kız arkadaşını kaybettikten sonra zamanda geriye giderek bunu önlemek ve ölümüne engel olmak ister. Bunun için bir zaman makinası icat eder.. Gerisini filmi izleyenler zaten hatırlayacaktır, izlemeyenler içinse bir merak konusu olarak burada noktalayarak asıl konumuza dönelim. İşimiz filmin kahramanı kadar zor değil, en azından şu yazıyı yazarken bir zaman makinası icat etmemize gerek olmadığı söylerek içinizi rahatlatabilirim. Peki ne yapacağız? Biz, insanın yaratılışı ile ona hediye edilmiş olan dünyanın en hızlı zaman makinasını yani beynimizi kullanarak yazılım dillerinin ortaya çıkışını ve hangi evrelerden geçerek bugünkü halini aldığını o dönemlere giderek an be an yaşayacağız.

Yolculuğu iki araçla gerçekleştirebiliriz seçeneklerden biri de yazının başlığı olan zaman tüneli.. Zaman tünellerini bilirsiniz, sağlı sollu resimlerle en eskiden günümüze akan ve insanı hayretler içinde bırakan sanat galerileridir.

İster bir zaman makinasında olduğunuzu hayal edin, isterseniz de harika bir zaman tünelinin başlangıç noktasında.. İkisinin de başlangıcı aynı, ikisinin de bitişi aynı..

Ben zaman makinasını tercih edenlerdenim. Bence artık yolculuğa çıkma vakti geldi de geçiyor.

Zaman makinamıza bindik ve tarihi 1954 olarak seçtik ardından “Send” butonuna bastık. Hiç merak etmeyin zaman makinemiz sizi itina ile hazırlanmış bir e-posta gibi adrese teslim edecektir.

Farkında mısınız bilmiyorum butonunun arkasına yazdığımız kodlarımız hata almadan çalışıyor..

O zaman devam..

1954 yılları..

Fortran ile tercüman arayışı..

Bu yıllarda bilgisayarlarda hız çok önemli olduğundan yazması zor dahi olsa programlar makine dili kullanılarak oluşturulurdu. Bunun nedeni var olan yüksek programlama dillerinin bir derleyiciden yoksun olmasıydı. Nasıl mı? Şöyle ki, bu diller bir yorumlayıcı (interpreter) ile çalışıyordu ve bu durum da programın her çalıştırılması gerektiği zaman yazılmış olan kodların tekrar makine diline çevrilmesi gibi gereksiz bir işlemi yapmasına neden oluyordu. Söz konusu durum yüksek seviyeli bir dille yazılan programın makine dili ile yazılmış programlara nazaran 10 kat daha yavaş çalışması sonucunu doğuruyordu.

 John Backbus ve ekibinin aklında bir soru vardı. Yüksek programlama dilleri gibi kolay yazılıp daha sonra bir derleyici yardımıyla bir kez makine diline çevrilen bir dil icat edilebilir miydi acaba. Buraya dikkatinizi çekmek  istiyorum. Artık programlar insanların anlamasının zor olduğu makine dili yerine yüksek seviyeli bir dilde yazılacak fakat program derlendikten sonra tek sefer makine diline çevrilecek ve de daha sonra program çalıştırılmak istendiğinde kenarda paket halinde bulunan makine koduna başvurulacak. Bilgisayarın anladığı dilin makine dili olması ve derleyicinin makine diline çevirerek programı paket halinde kenarda tutması sayesinde programlar çok hızlı bir şekilde çalıştırılabilecekti.

Dikkat ederseniz burada derleyicinin rolü çok önemli, biz derleyici sayesinde bilgisayarla iletişime geçiyoruz. Bu sayede bilgisayarın bize şunu dediğini duyar gibiyim; sen makine dilini bilmiyor olabilirsin fakat benimle bildiğin dilde konuş, bizim aramızda zaten bir tercüman (derleyici) var, o benim anlayacağım dile çevirir.

Günlük hayattaki farklı dilleri konuşan insanların tercüman aracılığı ile iletişim sağlaması gibi derleyici de bizim kullandığımız programlama dili ile makine dili arasında bir tercüman vazifesi görmektedir.

Odak noktası buydu, bunun üzerine düşündüler ve cevabı bulduklarını da Kasım 1954’te “The IBM Mathematical FORmula TRANslating System : Fortran” isimli raporla tüm dünyaya gösterdiler. Bu yönüyle Fortran’ın programlama dilleri arasında bir kilometre taşı olduğu söylenebilir. Zira derleyici kavramını yazılım dünyasına kazandırmış ve kendisinden sonra ortaya çıkan programlama dilleri de bunu kullanmışlardır.

1959 yılları..

Cobol, yoksa iş dünyasının kahramanı mı olacak..?

COBOL (COmmon Business Oriented Language), komplike iş uygulamaları ile ilgili program yazmaya uygun bilgisayar programlama dili. Ticaret alanı ve özellikle iş yerlerinin yönetimiyle ilgili konularda, tüm dünyada kullanılmak üzere hazırlandı. US savunma bakanlığı kuruluşu olan CODASYL ile çeşitli bilgisayar imalatçıları ve bilgi işlem cihazları kullanıcıları tarafından geliştirilmiştir. ISAM yapısına izin veren sınırlı sayıdaki dilden biridir. Sayı tipi sınırsızdır.

COBOL dili, atası FORTRAN'ın iyi yanlarını almıştır, tamamen ilkel (native) bir dildir. Gerçekte, FORTRAN soyundan gelen öteki dillerle karşılaştırıldığında, bazı işlemleri İngilizce ifade etmekten başka kolaylığı yoktur.

FORTRAN soyundan gelen öteki dillerle karşılaştırıldığında bazı işlemleri İngilizce ifade etmek gibi bir kolaylığı vardır. Örneğin COBOL herkesin bildiği X = A + B aritmetik işlemini ADD A TO B GIVING X şeklinde ifade ederek bu yönüyle gelenekten farklılık göstermiştir.

COBOL (COmmon Business Orientated Language) 1959 den beri kullanılmaktadır. İş uygulamalarına uygun bir dil olarak COBOL  1 milyondan fazla şirket tarafından kullanılmaktadır.

1969 yılları..

C dili, modern dillerin atası mı doğuyor..?

C, AT&T labratuarlarında 70’li yılların başında Dennis Ritchie tarafından tasarlanmış ve yazılmıştır. Ritchie o yıllarda B adlı programlama dilinin tasarımcısı olan Ken Thompson ile birlikte UNIX işletim sistemi üzerinde çalışıyordu. O zamanın yapısal programlama dilleri sistem programlama açsınıdan yetersizdi. Ritchie boylece thomson tarafından tasrlanan B diline yeni fikirler getirirek C dilinin temelerini atmış oldu. Unix işletim sisteminin sonraki uyarlamalarında yoğun olarak C kullanılmıştır.

C önceleri geniş kitleler tarafından tanınmıyordu. C’nin tüm dünyada tanınması ve yıldızının parlaması 1978’de Dennis Ritchie ve Brian Kernighan tarafından yazılan “C Programing Languages” kitabı ile birlikte oldu. Bu kitap aynı zamanda yazılım konusunda buıgüne kadar yazılmış en iyi eserler arasında yer almaktadır.

Önceden yalnızca unix tabanlı sistemleri çalıştıran C kişiesel bilgisayarların 1980’li yıllarda yaygınlaşması ile en fazla tercih edilen programlama dilleri arasına girmiştir. Bugün hemen her tur sistemde C derleyicilerine rastlamak mümkündür. C 1983 yılında ANSI tarafından standardize edildikten sonra yuksek oranda taşınabilir bir sistem programlama dili olmuştur. 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 bir dildir.


1979 yılları..

C++, C dili + 1 de ne..?

Bu yıllar nesne yönelimli programlamanın ihtiyacının iyice hissedildiği yıllardı.Var olan programlama dilleri günlük hayatın modellenmesi konusunda yetersizdi  ve bu durum programların önündeki en büyük engellerdendi.Gerçi 1960’larda Simula ve ardından Smalltalk programlama  dillleri Nesne Yönelimli Programlama Tekniğini  bünyelerine katmışlardı fakat yazılım dünyası bu konuda daha yolun başındaydı, programlama dilleri hala bir çok beklentinin gerisinde kalıyordu.

C programlama dilinden esinlenen C++, tam da bu eksikliğin giderilmesi konusunda çözüm arayışlarına girmiş ve başarılı da olmuştur. Ve  bu yönüyle C++ programcılık tarihinde bir kilometre taşıdır. İlk ortaya çıktığında OOP tekniğini de yanına alarak “C with classes”(Sınıflarla C) adıyla kendini göstermiştir.1983 yılında ise ismi C++ olarak değiştirilmiştir.

Tekrar söylemekte yarar var, C++ dilinin C dilinden en önemli farkı Nesne Yönelimli Programlama’ya destek veriyor olmasıdır.

1990 yılları..

Java, kettle’ımın içindeki program da mı Java..?

James Gosling tarafından geliştirilen bir programlama dilidir ve 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ışabilen tipik bytecode(sınıf dosyası)dır.

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.

Java platform bağımsız olması yönüyle yazılım dünyasında bir kilometre taşıdır. Nasıl mı çalışır? Şöyle ki Java programcısının yazdığı kod bir Java derleyicisi ile derlenir. Sonuçta 'bytecode' adı verilen bir tür makine kodu ortaya çıkar. Düzlem bağımsızlığını sağlayan da bytecode'dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde çalışabilir.

2000 yılları..

Artık hayatımızda C# var.

C#; C, C++ ve Java’dan türeyen güçlü , basit, esnek, tip güvenli, modern bir dildir. .NET için Microsoft tarafından geliştirilmiş olup programlama alanında en popüler üç dilin, C, C++ ve Java’nın, iyi özelliklerini alıp bu dillerin tehlikeli olabilecek özelliklerini dışarıda bırakmıştır ve yaklaşık olarak 40 dilin desteklendiği .NET platformunun harika çocuğu olarak adlandırılan bir dildir.

Gelin işin biraz da magazin yönünde duralım ve C#’ın nasıl ortaya çıktığına bakalım.

90’lı yıllarda Java programlama dilinin platform bağımsız oluşu ve OOP desteği sayesinde piyasadaki pazar payı iyice artmaktadır. Bu durum Microsoft’u yeni arayışlara itmiş ve Java’nın karşısına çıkaracak güçlü bir aktör bulma uğraşı içine sokmuştur.

Microsoft, o dönemler kendisine bir kurtarıcı ararken Borland firmasında Delphi’nin asıl mimarı olan ve yazılım dünyasının en yetenekli coder’ları arasında gösterilen Anders Hejlsberg’i rekor bir miktar ile transfer eder, aynı zamanda bu yıllar içinde Microsoft, Borland firmasından yaklaşık olarak 35 kilit çalışanı da bünyesine katmayı başarır. Yalnız bu durum Microsoft ile Borland firmasının mahkemelik olmasına neden olur. İki yıl süren dava sonucunda 1997 yılında iki şirket aralarında yaptıkları ayrıntıları kamuoyuna yansımayan bir anlaşma ile davadan vazgeçerler.

Sonuç olarak Microsoft, geçen bu zor süreçlerin ardından Java’nın karşısına yenilmesi güç bir rakip olan .NET ile birlikte, .NET’in prensi olan C#’ı çıkartmış ve yazılım dünyasında farklı bir devrim yapmıştır.

Günümüzde ise C#, yeni nesil iş uygulamalarının mimarı olan bir dil haline gelmiştir.

Böylece geldik günümüz dünyasına, zamandaki bu seyahatinizin zevkli geçtiğini umut ediyorum..

Bir başka yazıda görüşmek dileğiyle, hoşçakalın..

2 yorum:

İbrahim KILIÇ 7 Aralık 2011 00:00  

Ellerine sağlık Ertuğrul. Gerçekten harika bir yazı olmuş. Tek kelime ile anlatacak olursa mükemmel çok yakışan bir tanımlama olacaktır. Bir sonraki yazını merakla bekliyorum. İbrahim KILIÇ

Ertgrl_ISIK 7 Aralık 2011 08:55  

Teşekkür ederim İbrahim, yorumun beni çok mutlu etti.

Yorum Gönder