C++? Gerçekten mi?

   Kısa bir süre önce, yaz olmasının da verdiği bir rahatlıkla, C++'a bir kez daha şans vermek istedim. Code Complete'den öğrendiğim birşey varsa; o da doğru iş için doğru programlama dilini kullanmanın önemidir. Bugüne kadar birçok farklı dili rahatlıkla kullandım ancak C ve C++ hep bir hevesle başlayıp sonra bırakmamla sonuçlandı. Yani tamam, üniversitedeki derslerde C/C++ öğrendik, ama bunların gerçek hayattaki kullanımını hep sorgulamışımdır. Birkaç senedir takip ettiğim Qt (Nokia'nın Trolltech'i alarak bünyesine kattığı, platformlararası bir GUI geliştirme framework'ü, İngilizce "cute" sözcüğü gibi okunuyor), C++ denemek için iyi bir fırsat olabilirdi. Ama Qt'un Java binding'i (Qt Jambi) olması ve de platformlararası çalışma konusunda Java'nın başarısı sebebiyle bu fikir beni pek sarmadı. Sonra aklıma birşey geldi, gerçekçi olalım; yazılım sektöründe çalışan ve işini bilerek seçen erkeklerin büyük bölümünün programlamayla ilk olarak ilgilenmesinin sebebi bilgisayar oyunlarıdır.
   3D uygulamalarda genellikle grafik verisi VRAM'de saklandığı için mümkün olduğu kadar az kaynak harcanması isteniyor. Bu genellikle düşük seviye diller ve karmaşık olarak tasarlanmamış kütüphaneler kullanmayı gerektiriyor (bkz. DirectX, OpenGL). Oyun sektöründe C++'ın çok popüler olduğunu biliyorum, ben de C++ bilgimi derinleştirmek için DirectX ile 3D programlama öğreten bir kitap aramaya başladım. Beginning DirectX 10 Game Programmingadlı kitap anlatım olarak hoşuma gitti. Genellikle "beginning" serilerinden pek hoşlanmam, çünkü başlığında "programcılar için" ibaresi olan kitaplarda bile çoğu zaman tekrar tekrar temel yazılım geliştirme konularına değinilinir ve çoğu zaman da o bölümleri atlarsanız sonraki bölümlerin önceki bölümlerdeki kodlar üzerine kurulduğunu görür ve kitabı takip edemezsiniz. Ama bu başlangıç kitabı, neredeyse doğrudan DirectX programlamaya giriş yapıyor ve sayfalarca gereksiz bilgi içermiyor, benim gibi hobi olarak 3D programlama denemek isteyen biri için ideal...
   Birkaç konu sonra neden C++'tan nefret ettiğimi tekrar hatırladım, sanırım hemen her zaman bir dilin etrafında gelişen komünite dilin genel gidişatını belirliyor. Microsoft'un .NET kütüphanelerini tasarlarken ki başarısını DirectX SDK için de gösterdiğini ummuştum ancak görünen o ki, 3D oyun veya C++ çevrelerindeki alışkanlıklar sebebiyle pek iç açıcı bir kütüphane tasarlanmamış. Günümüzde artık "okunulabilirlik" ve "anlaşılabilirlik" kavramının en az performans kadar önemli olduğunu konusunda her yazılımcı hem fikirdir sanardım, yanılmışım. Bir struct'a DXGI_SWAP_CHAIN_DESC gibi bir isim vermek ne kadar iyi bir fikir bilemiyorum. Sanki DirectX geliştirme takımı, okunulamaz hale getirmek için zorla uğraşmış gibi; alışık biri anlayabilir belki ama eminim bu yapının adı SwapChainDescription olsaydı kimse şikayet etmezdi. Şimdi bu yapı tek başına pek sorun değil gibi gelebilir, ama karmaşık bir uygulamanın kodunu gözden geçirirken böyle isimlerle karşılaşmak ve kodu anlamaya çalışmak ciddi derecede sabır gerektiriyor.
   Şöyle bir DirectX forumlarını gezip göz gezdirdim, her zaman her yerde karşılaşılan C fanatikleri tabii ki orada da vardı. Neden bilmiyorum yazılım çevrelerinde hep bir dil/teknoloji karşılaştırması vardır, genellikle de düşük seviye dillerle yazılım geliştirenler kendilerini daha üstün görmekte kararlıdır (TechRepublic'in bir araştırmasına göre C# kullanan yazılımcılar, eşdeğer pozisyondaki VB.NET kullanan yazılımcılara göre belirgin bir şekilde daha fazla maaş alıyorlarmış). Artık çok çekirdekli işlemciler standart haline gelirken ve bulut (cloud computing) hizmetleri gün geçtikçe yaygınlaşırken; bu tartışmalar pek mantıklı olmuyor. C++ kullanıp bir hata yüzünden saatlerce okunulamaz derecede korkunç bir kod yığınını okumaktansa, Java kullanıp milisaniyelik gecikmeleri göz ardı etmeyi tercih ederim.

Comments

Popular Posts