Bilgisayar bilimleri alanına merak salan insanların en çok sorduğu sorulardan biri "Hangi dille başlamalıyım?" Oluyor. Bence öncelikle İngilizce öğrenerek işe başlamalısınız. Eğer akademik yeterliğe sahip İngilizce beceriniz varsa bu önermemi es geçebilirsiniz.
Sorduğunuz soruya gelecek olursak, söz ettiğiniz programlama dillerinin doğaları birbirinden çok farklı ve bu dillerin her birinde uzmanlaşabilmeniz çok mümkün görünmüyor. Eğer ki programlama ile yeni tanışıyorsanız, her şeyden önce benim tavsiyem C veya C++ ile başlamanız yönünde olacaktır. Çünkü C/C++ diğer dillerden farklı olarak pointer kullanımına imkan tanımaktadır. Diğer dillere nazaran birçok hazır veri yapısını, fonksiyonu ve kütüphaneyi, proje bazında çok daha verimli olarak implement edebilme gücünü size sağlar. Öyle ki, sadece pointerları kullanarak, procedural paradigma ile kullanmaya alışkın olduğumuz C'de, C++'dakine benzer bir nesne yönelimli bir paradigma ile bile çalışabilirsiniz (konuyla alakalı olarak Axel T. Schreiner'in Objektorientierte Programmierung mit ANSI C kitabına göz atabilirsiniz.). Kısacası gücünüzün limitleri, hayal gücünüze ve öğrenme arzunuza kalmış.
Bu esnekliğin bir götürüsü olarak, C/C++ diller, verimlilik ve performans adına birçok unsafe operasyona açık bir şekilde gelir. En basitinden Memory-management, index boundary check konuları programcının sorumluluğu altındadır. Bu konu başta can sıkıcı görünse de proje bazında etkili çözüm üretebilme becerinizi artırırken aynı zamanda hata ayıklama ve algoritmik düşünme yeteneklerinizi de güçlendirir.
Aynı zamanda C++ ile hem procedural hem de nesne yönelimli programlama yapabilirsiniz. Modern nesne yönelimli programlama tekniklerinin çoğu (multiple-inheritance, polymorphism) C++'da mevcuttur. Büyük projelerde, gerçek dünya problemleri için yapılan modellemelerde ve takım çalışmalarında OOP'dan bihaber bir programcının etkin çözümler üretebilmesi pek mümkün görünmüyor.
Veri yapıları, sıralama algoritmalarının implementasyonu, OOP, tasarım örüntüleri konularında yeterli birikime ulaştıktan sonra, web için backend uygulamalar da yazarsınız, Qt ile arayüz de tasarlarsınız, Unreal Engine ile oyun da geliştirebilirsiniz, veri analizi de yapabilirsiniz. Yapabilecekleriniz sizin yeteneklerinize kalmış bir noktadan sonra.
C++ için Udemy üzerinde mevcut olan Frank Mitropoulos'un C++ kursunu tavsiye edebilirim.
İşin temel felsefesi konusunda hakimiyet kazandıktan sonra artık birçok modern dile kolayca adapte olabilirsiniz. Bu noktadan sonra açıkçası öğrenmenin sınırı, karşılaştığınız problemlerle şekilleniyor ve bir noktadan sonra elinizdeki araçlar çatalla çorba içmeye çalışmak mevzusuna dönebiliyor. Bu noktada siz zaten sizin için en iyi aracın ne olduğunu anlayabilir konumda olacağınızdan, yeni bir platforma ayak uydurmak, endişeleneceğiniz en son konu olacaktır.