Evet, iş sayısı bayağı daha fazla C#'ın ama C++ varken neden tercih edildiği hakkında bir fikrim yok. Bence kolay Syntax yapısı hariç pek bir avantajı yok.
C#'daki güvenlik endişem genel olarak çok kolay decompile edilebilmesi. GameMaker gibi programları decompile edip korsan sürümünü çıkarabiliyorlar.
C++'da ise assembly benzeri bir dilde kodlara ulaşması bayağı daha zor. Tabii başka şekilde korumalar vs. konulabilir ama kodlara bu kadar kolay erişim beni rahatsız etti. Ki başka firmaları da rahatsız etmiş olacak ki EA, Steam, Ubisoft'un yazılımlarının hepsi C++ ile yazılmış. Yoksa dil ile sıkıntım yok.
C#, Microsoft tarafından geliştirilen, .NET framework üzerine inşa edilmiş bir programlama dildir ve genellikle Windows işletim sistemi için yazılmış yazılımlar ve uygulamalar geliştirmek için kullanılır. C#, birçok farklı türde uygulama ve platform için kullanılabilir, ancak en çok Windows platformu için yazılmış yazılımlar ve uygulamalar için kullanılır.
C++, geniş bir kullanım alanına sahip, C programlama dilinin geliştirilmesiyle oluşan bir programlama dilidir. C++, sistem programlama, oyun geliştirme, veri yapıları ve algoritmaları gibi birçok farklı alanda kullanılabilir. C++, yüksek performanslı uygulamalar geliştirmek için tercih edilir ve geniş bir ekosistemi bulunan, eski ve güncel bir programlama dildir.
İş imkanları açısından, C# daha çok enterprise sektöründe yaygın olarak kullanılır ve özellikle Windows platformu için yazılmış yazılımlar ve uygulamalar için iş imkanı sunar. C++ ise daha çok sistem programlama, oyun geliştirme gibi alanlarda iş imkanı sunar ve çok sayıda farklı platformda kullanılabilir.
Her iki dilde de iş imkanları bulunmaktadır, ancak hangi dilde daha fazla iş imkanı olacağı platforma, ihtiyacınız olan uygulamanın türüne ve size uygun olan programlama paradigmasına bağlıdır.
C#'daki güvenlik endişem genel olarak çok kolay decompile edilebilmesi. GameMaker gibi programları decompile edip korsan sürümünü çıkarabiliyorlar.
C# gibi açık kaynaklı programlama dillerinin kolayca decompile edilme riskini önlemek için bazı yollar vardır;
Bytecode Obfuscation: Kodların okunmasını zorlaştırarak gizleme yöntemidir.
Tamamı ile Binary olarak dağıtmak: Kodların çalışması sırasında okunamayacak şekilde binary formatta dağıtmak.
Crypto-Based Code Protection: Kodları şifreleyerek gizleme yöntemidir.
Tamamı ile Assembly olarak dağıtmak: Kodların çalışması sırasında okunamayacak şekilde assembly formatta dağıtmak.
DLL Bütünleştirme: Kodları başka bir DLL'e ekleyerek gizleme yöntemidir.
Tamamı ile Native Code olarak dağıtmak: Kodların çalışması sırasında okunamayacak şekilde native code formatta dağıtmak.
Bu yolların her birinin avantaj ve dezavantajları vardır ve her bir projenin ihtiyacına göre en uygun olanı kullanılmalıdır.