Tüm diller, diğer her dilin özelliklerini içermemelidir.
C ++ aslında çok, çok karmaşık bir makro birleştiricisidir. C #, Java, Objective-C, Smalltalk, vb.Gibi üst düzey bir dil DEĞİL (geleneksel anlamda).
Farklı işler için farklı araçlara sahip olmak iyidir. Sadece çekiçlerimiz varsa, her şey çivi gibi görünecektir. Betik dillerine sahip olmak bazı işler için yararlıdır ve yansıtıcı OO dilleri (Java, Obj-C, C #) başka bir iş sınıfı için yararlıdır ve süper Verimli çıplak kemikler makineye yakın diller başka bir iş sınıfı için de yararlıdır (C ++, C, Assembler).
C ++, Assembler teknolojisini inanılmaz karmaşıklık yönetimi düzeylerine genişletmenin inanılmaz bir işini yapar ve programlamayı daha büyük, daha karmaşık görevleri insanlar için çok daha mümkün kılmak için soyutlamalar yapar. Ancak, sorunlarına kesinlikle üst düzey bir perspektiften (Lisp, Smalltalk, Java, C #) yaklaşanlar için en uygun dil olması gerekmez. Sorunlarınıza en iyi çözümü uygulamak için bu özelliklere sahip bir dile ihtiyacınız varsa, hepimizin kullanması için bu dilleri yaratanlara teşekkür edin!
Ancak C ++, hangi nedenle olursa olsun, kodları ve altta yatan makinenin çalışması arasında güçlü bir korelasyona ihtiyaç duyanlar içindir. İster verimliliği, ister aygıt sürücülerini programlama, ister alt düzey işletim sistemi hizmetleriyle etkileşim ya da her neyse, C ++ bu görevler için daha uygundur.
C #, Java, Objective-C, bunların yürütülmesini desteklemek için çok daha büyük, daha zengin bir çalışma zamanı sistemi gerektirir. Söz konusu çalışma zamanının söz konusu sisteme teslim edilmesi gerekir - yazılımınızın çalışmasını desteklemek için önceden yüklenmiş. Ve bu katman, bazı platform sistemleri için korunmalı ve bazı platformlar üzerinde çalışması için BAZI DİĞER DİL tarafından özelleştirilmelidir. Ve bu orta katman - ana işletim sistemi ile kodunuz arasındaki bu uyarlanabilir katman - çalışma zamanı, neredeyse her zaman C veya C ++ gibi bir dilde yazılır, burada verimlilik # 1'dir, burada yazılım ve donanım arasındaki tam etkileşimin iyi anlaşılabileceği anlaşıldı ve maksimum kazanca dönüştürüldü.
Smalltalk, Objective-C seviyorum ve yansıma, meta veri, çöp toplama, vb ile zengin bir çalışma zamanı sistemine sahip. İnanılmaz kod bu tesislerden yararlanmak için yazılabilir! Ancak bu, yığın üzerinde daha yüksek bir katman, en sonunda OS ve donanımın üzerine oturması gereken alt katmanlara dayanması gereken bir katman. Ve bu katmanı oluşturmak için her zaman en uygun dile ihtiyacımız olacaktır: C ++ / C / Assembler.
Zeyilname: C ++ 11/14, C ++ üst düzey soyutlamaları ve sistemleri desteklemek için yeteneğini genişletmeye devam etmektedir. İş parçacığı oluşturma, senkronizasyon, hassas bellek modelleri, daha hassas soyut makine tanımları, C ++ geliştiricilerinin, bu üst düzey yalnızca bazı dillerin özel alanlara sahip olduğu yüksek düzey soyutlamaların çoğunu elde etmelerini sağlarken, metal performansı ve mükemmel öngörülebilirlik (yani minimum çalışma zamanı alt sistemleri). Belki de yansıma olanakları, C ++ 'ın gelecekteki bir revizyonunda seçici olarak etkinleştirilecektir, isteyenler için - veya belki de bir kütüphane bu tür çalışma zamanı hizmetleri sağlayacaktır (belki şimdi bir tane var mı, yoksa bir tane başlıyor mu?).