Değişken Kavramı

Merhaba arkadaşlar,

İnsanlar için hafızanın önemi yadsınamaz bir gerçek. Biz onunla bilir, onunla farkında olur, onunla analiz yapar, özetle onunla yaşarız.

Fakat hayatta hafızadan mahrum olan insanlar da vardır tabi.

Leonard Shelby, karısı öldükten sonra tüm hayatını karısını öldüren adamı bulup ondan intikam almaya adar. Yalnız katili belirleme aşamasında büyük bir zorlukla karşı karşıyadır. Leonard nadir görülen ve tedavisi olmayan kısa süreli hafıza kaybı hastalığına yakalanmıştır. 15 dakikalık hafızaya sahiptir O. Eğer uzun cümleler kurarsa cümlenin başını unutabilecek kadar hastadır hatta. Buna rağmen adalet arayışı sonucu çözümü de bulmuştur. Hayatını vücuduna dövme şeklinde yaptığı ve ufak kağıtlara  aldığı notlara göre yaşamaktadır. Hafıza defteri (Memento) isimli film de adını Leonard'ın notlarından almaktadır.

Aklınızda tutamadığınız her bilgi, Leonard gibi vücudunuza veya bir kağıt parçasına yazmıyorsanız eğer, yok olmaya mahkumdur..

Bir deney..

Size şuan aklınızdan bir sayı tutun ve daha sonra da tuttuğunuz sayı ile 8'i toplayın ve bana sonucu söyleyin desem ne yaparsınız? Önce aklınızda tuttuğunuz sayıyı alır yanına 8'i koyarak toplama işlemini yapar ve sonucu söylersiniz değil mi?

Gelin bu işin detaylarına inelim..

Sayı tutun dediğimde ilk yaptığınız işlem onu unutmamak için ekstra bir konsantrasyonla sayının hafızanızda yer etmesini sağlamak oldu. Eğer böyle bir çabanız olmasaydı bilgi boşlukta yok olup gidecekti. Bu tıpkı enfes bir tabloyu duvara asmanıza benzer. Eğer duvarda çivi yoksa güzelim tablo yere düşecektir. Dolayısıyla öncelikle duvara bir çivi çakmalı ve sonrasında da tabloyu asmalısınız. Bilgiyi de hafızanızdan düşmesini engelleyecek şekilde aklınıza çivilemelisiniz.

Bilgisayarlar.. İnsanı, onun akıl yapısını, hayatını kendine model alırak onu taklit ederler.. Dolayısıyla yukarıdaki senaryo bilgisayarlar için de geçerlidir.

Dikkat!.. Can alıcı nokta!

O halde ileride programımda kullanacağım sayı veya değerleri bilgisayarın hafızasına yerleştirebilirsem balık hafızalı programlar yerine çok ciddi projeler yazabilirim.

Peki bunu nasıl yaparım?

"Saklamak" sihirli kelime..

Karşılaştığımız bu sorunun çözümü yazılımdaki değişken kavramında gizlidir. Değişkenin kısa bir tanımını yapacak olursak önümüzdeki sis bulutu biraz daha aralanmış olacaktır. Değişkenler, programlarımızda kullanıcıdan aldığımız veya program içinde bizim ürettiğimiz değerlerin yok olmasının önüne geçer. Değişkenler bizim değerlerimizi saklayan kutular gibidir. Onlara ihtiyacımız olduğunda yanlarına gider, değeri alır veya içine değer koyar programımıza kaldığı yerden devam ederiz.

Peki değişkenleri nasıl tanımlayabiliriz?

Size matematikten bir örnekle bunu açıklayamaya çalışacağım ve ne kadar kolay olduğunu göreceksiniz..

Gelin matematikteki çok basit bazı kuralları hatırlayalım..

Şuan matematikten konuşuyoruz. Size bir soru sorsam, elimde bir x değişkeni var ve ben ona 2 değerini vermek istiyorum desem bunu nasıl ifade edersiniz? "x = 2" olarak değil mi? Kesinlikle!

Bakın C#'ta da değer tanımlaması aynen bu şekilde yapılır. Soldaki değişken eşitliğin sağındaki değeri alır ve yoluna devam eder.

Bu bilgiden sonra ilk değişken tanımlamamızı yapalım.

string mesaj = "Merhaba";

Bunun anlamı şudur: aynen matematikteki gibi isim değişkeni "Merhaba!" ya  eşittir. Buraya kadar herhangi bir sorun yok sanırım.

Yalnız aklınıza mesaj değişkeninin önüne yazılmış olan string ifadesi takılmış olabilir. Bu ifade değişkenin tipini göstermektedir. Hemen açıklayalım..

Öncelikle bir kaç soru..

1.       Adınız soyadınız nedir?
2.       Yaşınız?
3.       Aylık kazancınız?
4.       Üniversite mezunu musunuz?

C#'ta bilgiler işlerimizi kolaylaştırmak için farklı veri tipleri ile saklanır. Örneğin ad ve soyad bilgisi alfanümerik yani metinsel, yaşınız ise nümerik bir bilgidir dolayısıyla farklı bir tip ile değeri saklanır. Aylık kazanç bilgisi ise parasal olduğundan bu veri tipi de para birimi ile ilgili değişken tipinde tutulur. Son sorunun da cevabı yalnızca doğru veya yanlış olabilen özel bir tür ile değeri tutulan bir veridir.

Önemli nokta.. Amaca göre değişken..

C#'ta farklı veri tiplerinin bulunmasının ana nedeni ihtiyaçların farklı farklı olmasıdır. İhtiyaçlar göz önünde bulundurularak her yazılımcının gereksinimini karşılayacak veri tipleri C# içerisine konmuştur.

Bu veri tipleri nelerdir?

Sayısal veri tipleri

1-      Tamsayılar;

byte : 0 - 255 arasında değerler alır. byte bir değişkene 255 üzerinde bir değer atamanız durumunda visual studio tarafında daha programınız derlenmeden hata alırsınız. Dikkat!
Değişken tiplerine alabileceği kadar değerler vermek yazacağınız programın sorunsuz çalışmasına katkı sağlayacaktır.
Bu tip ile hangi veriler saklarım? Ayakkabı numarası, insanın yaşı vs bilgiler için byte veri tipi biçilmiş kaftandır.
RAM yönetimi açısından da byte veri tipinin sadece 8 bit yer kapladığını söylemek yararlı olacaktır. Dolayısıyla byte ile degerini saklayabileceğiniz bir değişkeni daha büyük değerleri de alabilen int gibi bir veri tipinde tutmak RAM'de daha fazla yeri işgal etmenize neden olacaktır. Bu, yarım litre suyu 1 litrelik kova (burada byte oluyor) yerine 4 litrelik kovada (bu da int veri tipidir) muhafaza etmek gibi oluyor. Dolayısıyla bu durum kovanın koyulan yerde de daha fazla yer kaplamasına neden olacaktır. Günümüz bilgisayarlarında RAM kapasitelerinin çok yüksek seviyelere getirildiğini biliyoruz.  Ancak buna rağmen RAM yönetimi konusunda olabildiğimiz kadar cimri davranmalıyız. Bu durum daha hızlı çalışan programlar olarak bize geri dönüş sağlayacaktır.

sbyte : byte veri tipinde negatif değerler tutmamız mümkün değildir. Örneğin -10 değerini bir değişkende tutmak isterseniz ne yaparsınız?
Bu ihtiyaç göz önünde bulundurulmuş ve negatif değerler de alabilen  'signed byte' (işaretli byte) veri tipi oluşturulmuştur. Bu veri tipinde saklayabileceğiniz değer aralığı  -128 ile +127 'dir.
RAM'de kapladığı yer de byte gibi 8 bit'tir.

short : Basit bir toplama işlemi yaptığınızı düşenelim. Sonuç ortalama olarak 1000 civarında çıkıyor. Bu toplam değerini hangi değişkende tutarız? Şuana kadar gördüğümüz byte ve sbyte kabul edersiniz ki bu konuda aciz kalıyor. Evet bu gibi 255'ten daha büyük değerler için short veri tipi imdadımıza yetişen bir kurtarıcı gibidir.
short veri tipi -32.768 ile 32.767 arasında değer alabilir.
RAM'de kapladığı alan 16 bit'tir.

ushort : Bazen negatif sayılar hesaplamalarınıza dahil olmayabilir. Siz yapacağınız işlemlerde sürekli pozitif sayılarla çalışacak olabilirsiniz. Bu durumda işaretsiz short (unsigned short) veri tipi hizmetinize sunulmuştur. Söz konusu veri tipi 0 ile 65.535'e kadar değerler alır.

int : Programlarımızın prensi olan ve sayısal veriler için en çok kullanılan veri tipidir. int veri tipi short'a göre daha büyük değerler alabiliyor olması sebebiyle programcılar tarafından tercih edilir. int -2.147.483.648 ile 2.147.483.647 arasında değerler alabilir.
RAM'de kapladığı alan 32 bit'tir.

uint : int veri tipinin işaretsiz hali (unsigned int) yani yalnızca pozitif sayılar için üretilmiş versiyonudur. Söz konusu veri tipi 0 ile 4.294.967.295 arasında değerler saklayabilir.

long : Çok çok büyük sayıları saklamak için kullanılır. long veri tipi -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasında değerler alabilir.
RAM'de kapladığı alan 64 bit'tir.

ulong : long veri tipinin işaretsiz halidir. Sadece pozitif değerler alabilir. Alabileceği değer aralığı 0 ile 18.446.744.073.709.551.615 arasındadır.


2-      Ondalıklı Sayılar


double : İki sayıyı böldüğünüzü düşünelim, örneğin sonuç da '2,3' gibi bir değer çıktı. Bu değeri nasıl tutarım? Bu zamana kadar biz tamsayıları inceledik. Eğer bir tamsayı veri tipinde bu değeri tutmaya kalkışırsanız tamsayı veri tipi doğası gereği virgülden sonrasını almayacak ve bu değeri 2 olarak saklayacaktır. Bu durum da ince hesapların karışmasına neden olarak başınızı baya bi ağırtacaktır. Böyle bir eksiklik double türü ile giderilmiştir. Bu tip ondalıklı sayıları saklayabilmeniz için yaratılmıştır. Özellikle matematiksel işlemlerde, bölüm sonucu yansıtmak ve bunun benzeri işlerde sıklıkla kullanılan bir tiptir.
RAM'de 64 bit yer kaplar.

decimal : Hatırlarsanız veri tiplerine giriş yapmadan önce 4 soru sormuştum. Bunların 3.'sü maaşınızın ne kadar olduğu ile ilgiliydi. Bu tip soruları kullanıcıya yönelttikten sonra kullanıcının gireceği değeri decimal veri tipinde tutarsınız. Çünkü söz konusu veri tipi parasal değerler için özel olarak üretilmiştir. Özellikle bankalara ait programlarda bu veri tipi sıkça kullanılır.
RAM'de 128 bit yer kaplar.

float : double veri tipinden daha hassas davranır. Virgülden sonra daha çok basamak gösterir ve daha çok grafiksel işlemlerde kullanılır.
RAM'de kapaladığı alan 32 bit'tir.


Karaktersel veri tipleri


char : Bankalar açısından anne kızlık soyadının ilk harfi büyük önem taşımaktadır. Bankada çalışan görevliler çok işlemde bankaya müracat eden müşterilerine bu soruyu yöneltirler. Peki biz tek bir karakter saklamamız gerektiğinde hangi veri tipini kullanırız?
Şuana kadar gördüğümüz veri tiplerinin hepsi sayısaldı. Burada ise amacımız çok farklıdır. Bir karakter tutmak istediğinizde size yardımcı olacak veri tipi char'dır. İçinde bir harf yani karakter saklar.

string : Adınız, soyadınız, yaşadığınız şehir, mezun olduğunuz okullar, hobileriniz, vs. bilgiler tek bir karakterden ziyade karakterler bütünüdür. Böyle bir veri de ancak şuana kadar incelemediğimiz bir veri tipinde tutulabilir. Çünkü dikkat ederseniz saklayacağımız olan değer tek bir karakter yerine karakterler bütününden oluşmaktadır. Buradaki gereksinim yeni bir veri tipini ortaya çıkarmıştır. O da string anahtar kelimesi ile temsil edilir. Sayısız miktarda harf içerebilir, karaktersel veri tipleri içinde en çok kullanılan tiptir.


Mantıksal veri tipleri


bool : Arabanız var mı? İstanbul'da mı yaşıyorsunuz? Lise mezunu musunuz? Sigara kullanır mısınız? vs vs sorular çoğaltılabilir. Dikkat ederseniz bu soru cevaplarının iki ihtimali var. Karşı taraf bu soruları ya evet ya da hayır olarak yanıtlayacaktır. Böyle durumlarda bizim de evet veya hayır alabilen bir değişkene ihtiyacımız var değil mi? Kesinlikle!

bool veri tipinin ortaya çıkışında da bu ihtiyaç yatmaktadır arkadaşlar. Bu veri tipi true(doğru) ve false(yanlış) olarak iki değer alabilmektedir.


Sınıflama dışı bir veri tipi


object : Bazı sinema oyuncuları hakkında, her rolün oyuncusu gibi sözler duyarız. Hatta bazen futbolda veya diğer sporlarda da yaşanır bu, spor yorumcuları başarılı bir oyuncu için hangi mevkiye koyarsan koy en iyi şekilde oynar diye yorumlar yapar. Bahsi geçen oyuncular gerektiği yerlerde farklı kişiliklere bürünerek görevlerini en iyi şekilde yaparlar.
object veri tipi de aynen böyledir. Tüm değerlerin atası olarak da niteleyebileceğimiz bu tip içine her türden değeri alabilmektedir.
               
object ile birlikte yazımızın sonuna da iyice yaklaştık..

Sonuç olarak kullanıcıdan aldığım değerleri programımda kullanamıyorum veya programım içinde üretilen değerleri kaybediyorum diyorsanız bir hastalığa yakalandığınız kesin..

Yakalanmış olduğunuz hastalık yazılım dilinde "değişkensizlik sendromu" olarak adlandırılan bir vak'adır. C#'taki reçeteniz int, string, double vs türünden veri tiplerini kullanmak..

Bi doktordan tavsiye, program yazarken değişkenlerinizi yanınıza alın ve gerektiği yerde kullanmaktan sakınmayın..

Bir sonraki yazımızda görüşmek dileğiyle.

Sağlıklı günler..

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..