Sayfalar

12/08/2010

Neden C++?

Microsoft .NET teknolojilerinin ağırlığının tüm haşmetiyle hissedildiği bir dönemde bazı insanlar neden hala C++ diyorlar? C# ve VB.Net'in kolay kullanılabilirliği yetmiyor mu?

Özellikle .Net teknolojileri ortaya çıktıktan sonra kendini programcı sayanların miktarında ciddi bir artış olduğu kaçınılmaz bir gerçek. Ayrıca .Net pazarını ortaya koyduğunuzda bu pazardan ekmek yemek isteyecek çok insan çıkacaktır. Fakat buna rağmen .net'in nüfuz edemediği alanlar mevcut ve bu alanlarda hala C++ at koşturuyor. (en azından şimdilik).

Bu girizgahtan sonra gelelim C++'a. C++, diğer programlama dilleriyle kıyaslandığında karakteristik özelliklere sahiptir. Bunlardan bazıları:

Nesne Tabanlı (Nesne yönelimli) programlama
Programlamayı nesne yönelimli yapmak programcının uygulamasını yapısal bir koddan ziyade nesneler arasında iletişim kurma şeklinde tasarlayabilmesine olanak tanır. İlave olarak kodun daha mantıksal ve üretken bir biçimde tekrar kullanılabilmesini (code reuseability) sağlar.

Taşınabilirlik
Aynı C++ kodunu neredey her tür bilgisayarda ve işletim sisteminde herhangi bir değişiklik yapmadan derleyebilirsiniz. C++, dünyada en çok kullanılan ve taşınmış programlama dilidir.

Modüler Programlama
C++’ta bir uygulamanın gövdesi birden fazla kaynak kodu dosyasına ayrılıp ayrı ayrı derlenip daha sonra ilişkilendirilebilir. Küçük bir değişiklik yapıldığında tüm uygulamayı baştan derlemek yerine sadece değişikliği içeren dosyayı derlemek zaman tasarrufu sağlar. Ayrıca, bu özellik C++ kodunun Assembler veya C gibi dillerle üretilmiş kodlarla ilişkilendirilebilmesine de olanak sağlar.

C Uyumluluğu
C++, C diliyle geri dönük olarak uyumludur. C’de yazılmış herhangi bir kod, bir değişiklik yapılmaksızın C++ programına dahil edilebilir.

Hız
C++ hem yüksek seviyeli hem de düşük seviyeli bir dil sayılabildiğinden hem de dilin kendisinin düşük boyutu C++ derlemesi sonucu elde edilecek kodun çok efektif olmasını sağlar.

 Yukarıdaki avantajlar bir web sayfasından alıntıdır ve söz konusu bilgi 2009 tarihlidir. Microsoft .NET'i ve dolayısıyla C# ve VB.Net'i geliştirmek için inanılmaz çaba harcıyor. Sonuç olarak da bu diller ile C++ arasındaki boşluk oldukça hızlı bir şekilde kapanıyor. Fakat bu demek değildir ki biri iyidir diğeri de kötüdür. Artık günümüzde nasıl herkes anadilinden başka en az iki lisan bilmeli diyorsak bir programcının da portföyünde birden fazla programlama dili bulunmalıdır. Özellikle c++ ve c# bir arada kullanıldığında ortaya çıkan sonuç inanılmaz derece başarılı olabilmektedir.

Örneğin .Net'in remoting kütüphanelerini kullanarak kuracağınız bir iletişim altyapısı üzerine kurgulayacağınız bir c++ uygulamasını tek başınıza oldukça kısa sürede ortaya çıkartabilirsiniz.

Ayrıca kendi deneyimlerimden biliyorum, önce C++ öğrendiğinizde C#'ı inanılmaz kısa sürede öğrenebiliyorsunuz fakat tam tersi geçerli değil.

Bunların haricinde bir de işin parasal yönü var. Piyasada veya şirketlerde C++ ile yazılmış geçmişten gelen o kadar çok sistem ve uygulama var ki, bunların tekrar baştan yazılması maliyetler nedeniyle mümkün değil. Herkesin C# bildiğini iddia ettiği bir dönemde C++ da öğrenip sürüden ayrılmak, farklılaşmak kesinlikle size bir artı değer katacaktır.

Bu yola gireceklere şimdiden başarılar diliyorum, herkese iyi çalışmalar.


referanslar (ingilizce):
1) Why C++
2) A brief description
3) C++ in the Real World: Advice from the Trenches
4) Why C++ Remains Relevant

2 comments:

  1. Hocam merhaba; görüşlerinizle tamamen hem fikirim bu yüzden c/c++ birlikte öğreniyorum. Bir arkadaşıma kafeterya programı yazıyorum 2 tane daha şubeleri var orlarda da kullanacaklar buraya kadar sorun yok. Lakin bana diğer şubelerdeki personelimin bilgisayarda anlık olarak ne yaptığını görebilmek gereksiz şeylerle boşa zaman harcıyorlarmı bunu zaman zaman farketirmeden bağlanıp görmek istiyorum bunu yapabilir misin dedi? Bende bilmediğim den önce bir araştırayım dedim. Araştırmalarında remoting diye bir olay gördüm ama c++ ile hiç bir bilgiye ulaşamadım bu konuda yardımcı olabilirmisiniz lütfen..

    ReplyDelete
  2. Hocam merhaba; görüşlerinizle tamamen hem fikirim bu yüzden c/c++ birlikte öğreniyorum. Bir arkadaşıma kafeterya programı yazıyorum 2 tane daha şubeleri var orlarda da kullanacaklar buraya kadar sorun yok. Lakin bana diğer şubelerdeki personelimin bilgisayarda anlık olarak ne yaptığını görebilmek gereksiz şeylerle boşa zaman harcıyorlarmı bunu zaman zaman farketirmeden bağlanıp görmek istiyorum bunu yapabilir misin dedi? Bende bilmediğim den önce bir araştırayım dedim. Araştırmalarında remoting diye bir olay gördüm ama c++ ile hiç bir bilgiye ulaşamadım bu konuda yardımcı olabilirmisiniz lütfen..

    ReplyDelete