Executando verificação de segurança...
1

Então, mas se for parar pra pensar C++ não traz somente mudanças perceptíveis pra nós, como qualidade de vida e recursos, ele traz uma gama de correções, e melhorias de desempenho (sim ainda hoje inventam formas de compilação mais eficiente em C++), inclusive processamento em tempo de compilação que aumenta a cada nova versão. Isso tudo junto a desings de conceitos modernos adaptados para a realidade de C++ tipo lambdaz e corrotinas. Eu estou pessoalmente muito satisfeito com o avanço que vem sendo mostado (nem consigo estudar tudo oque sai de novo kkkk).

Sobre as libs, eu entendo sua dor, vendo que muita gente sofre por sequer saber adicionar uma lib, mas pegando de exemplo a boost, muitas coisas que deram certo lá se tornaram padrão da linguagem em algum momento (veja sobre std::move e os similares), além disso, tipos que "ofuscam" os tipos já existem, como wxString e entre outros tem seus motivos de implementação para existir.

Tratando de uix, provavelmente esses tipos trazem mutabilidade e reatividade, o que não esta e nunca estará presente em, por exemplo std::string. Mesmo que a certo ponto de vista, em algum momento existirá um inferno de namespaces o qual você tera de lidar, e isso é ruim, más acredito que os modulos da versão mais recente de C++ venham justamente para ajudar a mitigar esses problemas (não cheguei a estudar a fundo módulos c++).

Sobre Cmake, cara, cmake me parece um projeto muito bom, e com força o suficiente pra fazer eu não argumentar sobre precisar algo nativo. Ele simplesmente faz o trabalho muito bem, por que se preocupar em implementar isso sobre trazer outras coisas que foquem nos pontos fracos? Acho que os mantenedores da linguagem também pensam assim.

Carregando publicação patrocinada...
1

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.

1

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á.