Sim, mas no seu caso, acho que você gosta tanto de C++ que não está conseguindo ver aos olhos das pessoas que nunca mexeram.
Para quem tá acostumado com outras linguagens, essas barreiras somadas fazem a pessoa desistir. A C++ por si só exige que pessoa entenda de memória e etc, aí com esses extras fazem com que muita gente prefira trabalhar com outras linguagens e deixam C++ de lado.
Tipo, wxString tem seus motivos para existir. Mas, se std::string
fosse bom o suficiente, wxString não precisaria existir. E aí, se a pessoa tiver mexendo com wx e outra lib qualquer, ela ainda vai ter que transformar wxString para outra coisa. Se o padrão fosse mais forte, acho que todo mundo usaria só std::string.
Cmake é bom. Mas, dependendo da IDE, a pessoa tem que registrar os .cpp e .h na mão. Outras linguagens nem tem isso. Imagina a frustração da pessoa que não precisa fazer isso agora precisa? Sem falar que aqueles #define HEADER_H
ou #pragma once
deixam a pessoa que não tá acostumada doida.
Aí tem outro ponto: a maioria das pessoas não se importa com a desempenho do código delas. Se funcionou e tá "rápido suficiente", tá bom. Daí por mais que tenha várias otimizações que C++ faz, tanto faz para a maioria.
Eu sou fã de C++, mas acho que linguagem nunca vai ter uma "fanbase" tipo de Rust por coisas assim. Tipo, Rust não sofre com vários desses problemas citados.
Sim, são pontos relevantes, e justamente isso levou a minha pergunta, quando a maioria das pessoas chega a esse ponto do "pe da montanha" desistem.
Eu tenho mais de 6 anos estudando e praticando C++, e ja possuo proficiência em linguagens como python, java e javascript, e me arrisco a dizer que talvez a linguagem não condiza com a sua visão de programação, se você não quiser usar Cmake, use Visual Studio e deixe a IDE fazer tudo por você. E memória só é um problema quando você não se importa com ela, muitos sistemas dependem de gerenciamento ativo de memória. Se não for o seu caso, smart pointers podem facilitar seu trabalho, ou até mesmo alguma lib que faça esse gerenciamento.
O uso de libs é inevitavel, principalmente em baixo nível aonde todo esforço é um esforço considerável.
Sobre o std::string, acredito que você não entendeu o meu comentário, se quiser um exemplo veja Kivy e seus ObjectProperty em Python, Vue e seus encapsulamentos, é o mesmo padrão, você sobrescreve tipos de dados padrões por uma necessidade específica, e quem usa essa ferramenta precisa conviver com isso, esse luxo não é exclusivo de linguagens de baixo nivel em geral, só é mais evidente lá.