C# ve Diğer Diller
Ş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.