Şirket
yöneticileri geliştirilecek proje için bir programlama dilini seçmek zorunda
kaldığında genelikle şu soruyu sorar : Hangi programlama dili ile projeyi en
etkin ve en hızlı şekilde müşterime sunabileceğim hale getirebilirim? Bu
sorunun çözümüne ulaşmak o kadar da kolay olmuyor maalesef. Çözüme zor ulaşmada
programlama dillerinin fazla olmasının etkisi omakla beraber her bir
programlama dilinin sunduğu standart kütüphanenin farklı olmasının da etkisi
oldukça fazladır. Özellikle günümüz iş uygulamaları birden fazla platformu
destelemek zorunda kalmıştır. Buda seçilecek uygulama geliştirme ortamının
önemini açıkca göstermektedir. Uygulamaların internet ortamına taşınması ile
birlikte bir programlama dilinden beklenen özelliklerde doğal olarak değişmiştir.
1970’ li yıllarda bir mikroişlemciyi programlamak ne denli önemli olduysa
2000’li yıllarda interneti programlamak o kadar önemli olmuştur.
İnternet’in iş
dünyasına girişi ile birlikte geliştirilen uygulamalardan beklenenler de değişmiştir.
Bu durum doğal olarak uygulama geliştiricileri doğrudan etkilemiştir. İnternet
ortamında çalışan ve dağıtık yapıda çalışabilen çok yönlü bir uygulama geliştirmek
eski yöntemlerle imkansız değildir ancak inanılmaz derecede zaman ve insan gücü
gerektirmektedir. Bu zorulukları aşmak için gelişen teknolojiye ve isteklere
paralel olarak programlama dilleri de doğal gelişim içine girmiştir. Bu yazıda
son yıllarda iş ve kişisel uygulama geliştiricilerin adını sıkça duyduğu C#
programlama dili ve diğer dillerle olan ilişkisi anlatılacaktır. C# programlama
dilinin sunduğu imkanları anlatmaya başlamadan önce programlama dillerinin
tarihsel gelişimine göz atmak gerekir. Zira C# dili yıllardır yoğun bir şekilde
kullanılan C,C++ ve JAVA dillerinin temelleri üzerine kurulmuştur. Şunu da
hemen belirtelim ki, son geliştirilen ilk geliştirilenden çoğu zaman daha iyi
olacaktır. Bu yüzden eski ile yeniyi karşılaştırırken ticari amaçları bir
kenara bırakıp objektif bir gözle değerlendirmek gerekir.
C#’ı konuşmadan önce
C, C++ ve C# ile yakından ilişkili olan JAVA’dan bahsetmek gerekir.
C dili ve Yapısal Programlama
Düşündüklerimizi
makinelere yaptırma isteğimizin bir sonucu olarak programlama dilleri doğmuştur.
Makineleri anlamak insanoğlu için o kadar da kolay olmamıştır. Zira
makinelerin(bilgisayarların) anladığı dilden konuşmak insanlar için gerçekten
zor bir iştir. Gün geçtikçe makineleri anlamak ve onları programlamak için yeni
arayışlar içine girildi. Somutlaştırılmış makine komutları sayesinde
bilgisayarları daha etkili bir şekilde yönetmek mümkün hale gelmiştir. Zaman
ilerledikçe bilgisayarlar sadece belirli bilimsel hesaplamaları yapmak için
kullanılan araç olmaktan çıkıp insanların yaşamlarında rutin işleri yapabilecek
araç haline geldi. Bilgisayarların insanların ihtiyaçlarına hızlı bir şekilde
cevap verebilmesi için onları hızlı bir şekilde programlamak gerekiyordu.
Klasik yöntemlerle(makine komutlarıyla) hızlı çözümler üretilemez hale gelince
daha yüksek seviyeli programlama dillerine ihtiyaç duyuldu. 1980’li yıllarda en
çok kullanılan programlama dili olan “C” bu anlamda atılmış büyük bir adımdır.
Yapısal programlama modeli her ne kadar C dilinden önce de yapılıyor idiyse de
asıl büyük gelişmeler C dili ile birlikte olmuştur. C gibi makine diline göre
yüksek seviyeli programlama dilleri ile büyük projeler yapılabiliyordu. Artık
uygulamalar sadece bilimsel çalışma aracı olmaktan çıkıp iş dünyasında kullanılabilen
uygulamalar haline geldi. Bütün bu iyi gelişmelerin yanında zaman su gibi akıp
gidiyordu, buna paralel olarak projeler büyüyor ve teknoloji artan ivmeyle gelişiyordu.
Yavaş yavaş anlaşıldı ki C dili çok büyük projelerde yetersiz kalıyordu. Yeni
bir programlama modeline ihtiyaç duyuldu ve C++ dilinin temelleri atıldı.
C++ ve Nesne Yönelimli Programlama
Yapısal
programlama modeliyle çok büyük projeleri kontrol altına almak neredeyse imkansızdır.
Bu sorunun üstesinden gelmek için yeni bir model gerekiyordu. Nihayet Bjarne
Stroustrup tarafından C dili baz alınarak yeni bir programlama dili geliştirildi.
Bu dilin adı : C++’tır. C++, C’nin üzerine inşaa edildiği için ilk başlarda “C
with Classes”(Sınıflı C) olarak adlandırıldı. Peki bu dil C’den farklı olarak
programcılara ne sunuyordu? C++ dilinin sunduğu en büyük yenilik nesne
yönelimli programlamayı destekliyor olmasıdır. Nesne yönelimli programlama
tekniği günümüzde de yaygın bir şekilde kullanılan bir tekniktir. Bu teknik
gerçek hayatı modellemede büyük bir başarı sağlamaktadır. Söz gelimi bir
projeyi parçalara ayrıp bu parçalar arasında programlama yolu ile bağlantılar
kurmak çok basit hale gelmiştir. Nesne yönelimli programlama tekniği proje geliştirme
aşamasında burada sayamayacağımız birçok kolaylık sağlamaktadır.
C++ dilinin diğer
bir özelliğide C programcılarına hitap etmesiydi. C dilindeki temel kurallar
aynen C++ dilinde de mevcuttur. Bu yüzden C++ dilini ve nesne yönelimli
programlama tekniğine geçiş yapmak için C dilini iyi bilmek gerekir. Daha doğrusu
C++ dilini sadece nesne yönelimli programlamayı destekliyor şeklinde düşünmemek
gerekir. Günümüzde birçok alt seviye işlemlerde(haberleşme, işletim sistemi,
aygıt sürücüleri) C++ dilinin yoğun bir şekilde kullanılması bunun bir kanıtıdır.
İnternetin Gelişimi ve JAVA Dili
İnterneti’in
gelişimi bilgisayar dünyasındaki en önemli ilerlemelerden biridir. Programlama
dünyasında JAVA dilinin ortaya çıkması en az internetin ilerlemesi kadar
önemlidir. Çünkü C ve C++ dilleri ile yalnızca belirli sistemlere yönelik
uygulamalar geliştirilebiliyordu. Oysa internet sayesinde birçok farklı sistem
birbirine bağlanır hale gelmiştir. Artık sistemlerden bağımsız uygulama geliştirmek
gerekiyordu. Daha doğrusu interneti hedef alacak uygulama geliştirmek
gerekiyordu. Programcılar gelişen internet ortamına yabancı kalamazdı. Bu amaç
doğrultusunda Sun Microsystems isimli firma önceleri OAK olarak anılan JAVA
isimli programlama dilini ortaya çıkardı. JAVA, dil olarak C++ dilinin devamı
gibi düşünülebilir. Ama amaç tamamen farklıdır. Zira Sun firması ortaya JAVA
dili ile birlikte yeni bir uygulama geliştirme modelide sunmaktaydı. Bu
programlama modelinde en büyük hedef sistemler arası taşınabilir kod yazmaktır.
Yani bir uygulamayı hem Microsoft platformunda hemde Unix ve Linux platformlarında
çalıştırabilmek hedeflenmiştir. Böylece geliştirilen uygulamalar işletim
sistemi ve işlemciden bağımsız hale gelecektir.
Peki sistemler
arası bu yüksek taşınabilirlik nasıl olmaktadır? Cevabı basit : Ara Dil. Evet,
JAVA dilinde yazılmış kodlar derlendiğinde kodlar makine komutların çevrilmeden
“ara kod” denilen “bytecode” a çevrilmektedir. Bytecode’a çevrilen program çalıştırıldığında
Java Sanal Makinesi devreye girer ve uygulamanın çalıştırıldığı sisteme özgün
makine kodunu üretir. Bu durumda Sun firmasının bir çok sistemde çalışabilecek
Java Sanal Makinesi üretmesi gerekiyordu. Nitekim zamanla günümüzde yaygın kullanılan
bütün sistemlerde sorunsuz çalışabilecek Java Sanal Makineleri geliştirildi.
Hatta şu an için bazı cep telefonları ve çeşitli sim kartlarında bile JAVA
programlarını çalıştırabilecek Java Sanal Makineleri mevcuttur.
JAVA ile C++
dili her ne kadar birbirine çok benzer olsada aynı kategoride değildir. Elmayla
armutu karıştırmamak gerekir. Eğer “JAVA mı C++ mı” diye bir soru sorulursa
cevap “her ikisi de” olacaktır. Çünkü ikisininde kullanım amacı farklıdır. Bir
firma bir proje için hiçbir zaman bu iki dilden birisini seçmek durumunda
kalmayacaktır. JAVA ile aynı kefeye koyabileceğimiz dil birazdan anlatacağım C#
dilidir.
C# Dili ve .NET Platformu
JAVA’nın
platform bağımsız kod üretmedeki başarısı su götürmez bir gerçektir. Bir çok
kurumsal dev projede JAVA dilinin ve J2EE platformunun olanaklarından faydalanılması
bunun en önemli göstergesidir. Günümüzde büyük projelerde birden fazla
programlama dili kullanılabilmektedir. Ancak JAVA’nın diller arası uyumlu çalışmaya
destek verememesi JAVA’nın bir eksikliği olarak görülmüştür. Diller arası
uyumlu çalışma alanında en büyük başarıyı Microsoft firması sağlamıştır. Son
dönemlerde sıklıkla kullanılan COM teknolojisi bu uyumluluğa bir örnektir. COM
sayesinde farklı dillerde yazılan yazılım parçacıkları diğer bir uygulamada
kullanılabilmektedir.
JAVA’nın
programlamadaki büyük bir boşluğu doldurması onun en büyük rakibi olan
Microsoft firmasının gözünden kaçmadı. En sonunda Microsoft’un bir ürünü olan
Visual Studio yazılım geliştirme aracına JAVA yı da ekleme kararı aldı. Visual
J++ adı altında Windows platformuna entegre edilen JAVA dili bu platformda pek
başarılı olamadı. Bu oluşumun başarılı olmadığını gören Microsoft yeni arayışlar
içine girdi. Microsoft başkasının malını kendi ürününe entegre etmek yerine kendi
ürününü geliştirmeye karar verdi ve .NET yazılım geliştirme platformunu ortaya
çıkardı. .NET temel felsefe olarak J2EE platformuna benzemektedir ancak .NET’in
derinliklerine daldıkça çok yeni kavramlarla karşılaşırız. Bu yeniliklerden en
önemlisi “diller arası uyumluluk” tur. J2EE platformunda sadece JAVA dili
kullanılıyorken .NET platformunda birçok dil kulanılabilmektedir. Bu dillerin
sayısı oldukça fazladır. Üstelik Microsoft tarafından .NET platformu için sıfırdan
yeni bir dil tasarlanmıştır. Yapı olarak C++ ve JAVA dilllerine benzerliği ile
bilinen bu dil Anders Hejlsberg tarafından geliştirilen C# (C Sharp)’tan başka
bir şey değildir..
JAVA, C++ diline
nasıl benziyorsa C# dilide C++ ve JAVA’ya benzemektedir. Programlama modeli
yine her üç ortamda da nesne yönelimlidir. Değişen şey bu modelin uygulanış şeklidir.
C++’ta kaynak kod derleyici tarafından makine koduna, JAVA’da bytecode’a C#’ta
ise IL(Intermediate Language-Ara Dil)’a çevrilmektedir. Burda vurgulanması
gereken en önemli nokta JAVA’da bytecode JAVA sanal makinesi tarafından
yorumlanarak çalıştırılırken, .NET’te IL kodları derlenerek çalıştırılmaktadır.
Hemen şunu da belirtelim ki, derleme işlemi yorumlama işleminden performans açısından
daha öndedir.
C# dil olarak
C++ ve JAVA’ya çok benzemektedir. Bu yüzden C# dilini konuşurken .NET
platformunu göz önünde bulundurmalıyız. Dilleri sadece birer araç olarak
görmemizde fayda var. İsterseniz lafı daha fazla uzatmadan JAVA/J2EE ve
C#/.NET’i karşılaştırıp benzerliklerini ve farklılıklarını ortaya koyalım ardından
C#’ı diğer .NET
dillerinden ayıran özellikleri inceleyip “neden C#” sorusuna cevap arayalım.
C# ile .NET mi JAVA ile J2EE mi?
Saf C# ve JAVA
dilleri düşünüldüğünde birkaç nokta dışında bu iki dil birbirine benzemektedir.
Bu yüzden karşılaştırma yaparken bu dillerin kullanıldıkları platformlarıda göz
önünde bulundurmak gerekir. İsterseniz madde madde her bir özelliği iki
platform için değerlendirelim.
1-) Mimari :
.NET ve J2EE çalışma biçimi olarak birbirine çok benzer. Her iki platformda da uygulama
kaynak kodu ara bir koda dönüştürülür. Aradaki en büyük fark bu ara kodun işletilmesi
sırasında görülür. .NET’te ara kod çalışma zamanında derlendikten sonra çalıştırılırken
JAVA’da yorumlanarak çalıştırılır.
2-) Çalışma
Zamanı(Runtime) Mimarisi : J2EE platformundaki Java Sanal Makinesi ile .NET
platformundaki CLR(Common Language Runtime) birimi eşdeğerdedir. JVM,
bytecode’un işletilmesinden sorumlu iken CLR, IL kodlarının işletilmesinden
sorumludur.
3-) Sistemler
Arası Taşınabilirlik : Teorik olarak C# ve JAVA ile yazılmış uygulamalar
sistemden bağımsızdırlar. Günümüzde C# ile .NET ortamında geliştirilen
uygulamaların bir çok mobil cihazda ve Windows sistemlerinde kullanıldığını düşünürsek
bu teorinin yavaş yavaş gerçeğe dönüştüğü görülebilir. Yakın bir gelecekte .NET
altyapısının Linux versiyonunun da çıkacağı bilinmektedir. JAVA ise bu konuda
kendisini çoktan kanıtlamış durumdadır.
4-) Diller Arası
Uyumluluk : J2EE platformunda sadece JAVA dili kullanılırken .NET ortamında
C#,C++,VB.NET ve hatta JAVA dili bile kullanılabilmektedir. Üstelik farklı
dillerde yazılmış parçacıklar diğer bir dilde sorunsuzca kullanılabilmektedir.
Bu sayede bütün programcıların .NET platformunda rahat programlama yapabilmesi
sağlanmıştır. .NET uyumlu herhangi bir dilde geliştirilen bütün uygulamalar aynı
ara koda dönüştürüldüğü için .NET dilleri arasında büyük performans farklılıkları
meydana gelmez.
5-) Web Servisi
Kullanımı : Web Servisleri dağıtık yapıda geliştirilen uygulamaların temel
parçası olmuştur. Özellikle iletişimin XML tabanlı olması web servislerinin
önemini göstermektedir. Her iki dil ile web servislerine erişmek mümkün olsada
C# ile bir web servisini kullanmak oldukça kolaydır. C# ve .NET’in web
servislerine kolay erişmesi bir avantaj olarak görülebilir.
6-) Bellek
Yönetimi : C#’ta aynen JAVA’da olduğu gibi kullanılan nesneleri toplama
programcının görevi değildir. Kullanılmayan gereksiz nesneler gereksiz nesne
toplayıcısı tarafından zamanı geldiğinde bellekten silinirler. Buna rağmen C#
programcıları isterse belleği kendileri de yönetebilir. Yani C# dilinde bellek
adreslerini tutan göstericiler(pointer) hala kullanılabilmektedir. JAVA dilinde
bu imkan yoktur. C#’ı JAVA dan ayıran en büyük fark budur. Zira gösterici
kullanımı sayesinde geriye dönük uyumlulukta sağlanabilmektedir. Örneğin
parametre olarak bir gösterici alan sistem fonksiyonunu C#’ta kullanmak
mümkündür.
7-) Veri Tipleri
: C# dilinin temel felsefesi herşeyin bir nesne olmasıdır. Temel veri türleride
dahil olmak üzere herşey birer nesne olarak tanımlanır. C# ve JAVA sağladığı
temel veri türleri bakımından birbirlerine çok yakındır.
8-) Tekrar
Kullanılabilirlik : Nesne yönelimli programlama modelinin en önemli özelliği
geliştirilen sınıfların paketlenerek sonradan tekrar tekrar farklı uygulamalarda
kullanılabilmesidir. C#’ ta sınıflar isim alanları(namespace) içerisinde
paketlenerek diğer uygulamalar içinde kullanılabilir. Java’da ise sınıflar
“package” dediğimiz bir kavramla paketlenir. Sonuç olarak her iki dilde eşit
oranda bu özelliği desteklemektedir. Ancak C#’ta sınıfların organizasyonu daha
estetik bir şekilde düzenlenmektedir.
9-) Kontrol
Mekanizmaları : Kodların içinde en çok görülen bloklar olan for,while ve if
gibi yapılar her iki dilde de vardır. C#’ta JAVA dilinde olmayan ayrıca foreach
döngüsü bulunmaktadır. foreach döngüsü ile koleksiyon tabanlı nesnelerin
elemanları arasında tek yönde rahatça dolaşılabilmektedir.
10-) Türetme ve
Çok Biçimlilik : Nesne yönelimli programlama modelinin C++ dilinden beri kullanılan
mekanizmaları olan türetme ve çok biçimlilik her iki dilde de mevcuttur.
C++’tan farklı olarak C# ve Java’da sadece tekli türetme mevcuttur.
11-) İstisnai
Durumları Yönetme : Uygulamların en büyük düşmanı olan istisnai durumların(exceptions)
her iki dilde de ele alınış biçimi hemen hemen aynıdır.
12-) Sınıf
Kütüphanesi : Veritabanı ve dosya işlemleri gibi burada sayamayacağımız bir çok
temel işi yapan sınıflar .NET ve J2EE platformunda mevcuttur. Gerek bu sınıfların
organizasyonu gerekse de sınıfların kullanılış biçimi bakımından .NET
platformunun daha avantajlı olduğunu söyleyebiliriz.
Bütün bu
maddeler bir bütün olarak ele alındığında C#’ın JAVA’dan bir kademe önde
olduğu görülmektedir. Bu durum elbette proje yöneticilerinin seçimlerini
etkilemektedir. Microsoft faktörünüde göz önünde bulundurursak C# ve .NET’in
gelecekte çok iş yapacağını söylemek için müneccim olmaya gerek yok. Bu arada
JAVA’nın halen yaygın bir şekilde kullanıldığını da gözardı etmemeliyiz. Bu
durum C# ve JAVA’nın seçiminde sadece teknik özelliklerin değil aynı zamanda
Windows ve Linux’te olduğu gibi sosyal etkenlerinde rolü bulunduğunu
gösteriyor.
Buraya kadar
söylediklerimden belki şöyle bir soru işareti doğmuş olabilir : “C# mı JAVA mı”
sorusunu “C# mı C++ mı” şeklinde sorsak neler değişir? Cevap : Çok şey değişir.
Evet C#’ın JAVA ile olan ilişkisi C++ ile olan ilişkisinden
tamamen farklıdır. C# ile JAVA’yı ancak saf dil olarak karşılaştırabiliriz.
Yani dilin sentaksından bahsediyorum. Bu iki dilin kullanıldığı ortam farklıdır.
Birinde bir sisteme özgün makine kodu üretilirken diğerinde sistemden bağımsız
ara bir kod oluşturulmaktadır. Bu durumda C++ ve C#’ı bir bütün
olarak karşılaştırmayı kişisel olarak doğru bulmuyorum. Çünkü ikisi farklı
kategorilerde yarışıyor. Eğer bir gün .NET’in ürettiği ara koddaki komutlar ile
çalışan mikroişlemci geliştirilirse o zaman belki C# ile C++’ı karşılaştırabiliriz.
Peki C# mı C++? Cevap : Her ikiside. Eğer şirketiniz Intel işlemciler için bir
işletim sistemi geliştiriyorsa elbette C++ ve C dilleri seçilmelidir. Şirketiniz
dağıtık yapıda çok geniş bir çalışma ağı olan bir uygulama geliştiriyorsa o
zaman C# ve .NET’i seçmeniz daha doğru olacaktır. Bu seçim bir projede hangi
dilin kullanılacağını değerlendirmek içindi. İşe bir de programcılar açısından
bakalım. Bir programcının hem C++ hem C# hemde JAVA bilmesine gerek var mı?
Bence gerek var yada yok. Kesin bir cevabı verilemez bu sorunun. Daha doğrusu
bir programcı ihtiyaç dahilinde herhangi bir programlama dilini
kullanabilmelidir. Ancak şunu da unutmayalım ki iyi bir programcı çok sayıda
programlama dili bilen demek değildir. İyi bir programcı .NET platformunda olduğu
gibi programlama dilinden bağımsız kod üretebilmelidir.
Diğer .NET Dilleri ve C#
Daha öncede dediğim
gibi .NET paltformunda bir çok programlama dilini kullanabiliriz. Bu dillerin
en önemlileri C#, VB.NET, C++.NET ve J# dilleridir. Bu dillerden bir tanesinin
özel bir konumu vardır. Tahmin edeceğiniz gibi bu dil C#’tır. C# .NET platformu
için sıfırdan geliştirilmiş yeni bir dildir. Diğer diller ise eski versiyonları
değiştirilerek .NET’e uyumlu hale getirilmiştir. Özellikle Visual Basic dilinin
devamı gibi görünen VB.NET dilinde bir çok radikal değişiklik yapılmıştır. Örneğin
VB dili nesne yönelimli programlama tekniğini destekler hale getirilmiştir. Bu eklentilerin
çok başarılı oloduğu söylenemez. Çünkü bu şekildeki zoraki eklentiler dilin en
başta tasarlanma amacına uygunluğunu ortadan kalkmaktadır. Bu amaçla Microsoft,
hem nesne yönelimli programlama tekniğine tam destek veren, C++ dilinin güçlü
özelliklerinden yoksun olmayan ve aynı şekilde Visual Basic dilinin kolaylığından
esinlenerek C# dilini çıkardı.
Peki .NET
dilleri arasında C#’ı tercih etmemize neden olacak başka neler var? Her şeyden
önce C# öğrenilmesi kolay bir dildir. Az sayıda anahtar sözcük içermesine rağmen
bir çok olanağı programcının hizmetine sunmuştur. C# nesne yönelimli
programlama diline tam destek verdiği içinde seçilebilir. C#’ta değişken kavramı
neredeyse kalkmıştır. Bunda bütün temel veri türleri de dahil olmak üzere bütün
sınıfların Object diye adlandırılan bir sınıftan türetilmesinin etkisi vardır.
C# dili güç ve hızlılık arasındaki dengeye estetik bir şekilde korumaktadır.
Temsilci ve olaylarla VB’deki olay mantığına benzer bir model sunarken aynı
zamanda göstericileri kullanmaya imkan vererek C++ dilinin güçlü
özelliklerinden yoksun bırakmamıştır. .NET sınıf kütüphanesinin büyük bir kısmı
C# ile geliştirilmiştir. Yani bu kütüphaneyi en etkin biçimde C# ile
kullanabiliriz. Dahası C# dili .NET’in çalışma mimarisi de gözönünde bulundurularak
sıfırdan tasarlandığı için .NET’in bütün olanaklarından en etkin biçimde C# ile
faydalanabiliriz.
C# için
söylenebilecek son söz : C#, modern programlama tekniklerine tam destek veren,
internet çağının gerektirdiği tüm yazılım bileşenlerini geliştirmeye izin
veren, hızlı ve etkin bir şekilde kodlama yapılabilen, C++ ve JAVA’nın güzel
yönlerini alıp geriye dönük uyumluluğu JAVA’da olduğu gibi gözardı etmeyen bir
programlama dilidir.
Sonuç
İnternet’in ve
haberleşme teknolojisinin çok ileri bir seviyede olduğu bir dönemde internet
üzerinde kullanılabilecek yazılım bileşenlerini programlamak son derece önem
kazanmıştır. Her ne kadar C# ve JAVA öncesi dillerle herşey yapılabiliyor
olsada projelerin boyutlarının büyümesi bu dillerin artık yetersiz olduğunun
bir göstergesidir. Özellikle yeni nesil iş uygulamalarında C# ve JAVA, C++’tan
bir adım önde görünüyor. Tabi bu durum C++ dilinin kötü olduğunu göstermez.
Nitekim C# ve JAVA dillerinin her ikiside C++ dilini örnek almıştır. Değişen
tek şey günün ihtiyaçlarıdır. Aynı zamanda C# dili JAVA, C++.NET, VB.NET ve J#
gibi diller önünde de bir adım önde görünüyor.