Se você é um programador, já deve ter se perguntado: “vale a pena aprender C++?". Seja no início da sua carreira ou após anos de experiência, a dúvida é recorrente.
As respostas para ela também confundem: uns declaram ser essencial ao desenvolvedor dominar a linguagem, outros são categóricos ao afirmar que é desnecessário e contraprodutivo.
Para quem deseja tomar uma decisão informada, essa divergência de opiniões não é grande ajuda. A verdade é que a resposta é mais complexa do que se pode resumir num simples sim ou não.
C++ é uma linguagem muito rica e de extrema importância para a indústria do software. Nesse artigo, explicaremos as vantagens e desvantagens gerais do uso de C++ em aplicações.
Vista por muitos como um verdadeiro bicho de sete cabeças, essa linguagem é uma das mais conhecidas e utilizadas na indústria da tecnologia.
Em muitos contextos de ensino e aprendizado de programação, inclusive na academia, C++ é caracterizada como “C com classes”. Apesar disso, a definição pode soar um pouco simplista.
C++ surgiu no início dos anos 80. Foi concebida pelo cientista da computação Bjarne Stroustrup. Ele pretendia criar uma versão distribuída do kernel Unix, escrito em C, para incluir novas funcionalidades.
Implementar esta versão do kernel da maneira idealizada por Stroustrup implicava desafios por si só.
C deveria continuar sendo a base, em função de sua performance e compatibilidade, mas carecia de recursos oferecidos por outras linguagens de mais alto nível. Stroustrup enxergava nestes recursos a possibilidade de uma implementação mais sofisticada da versão.
Sua solução foi criar um superset de C no qual implementou recursos similares aos observados nas demais linguagens. O código escrito desta maneira era então pré-processado e transformado em C. Chamava-se a linguagem de C with Classes.
Em 1983, C with Classes foi renomeada C++ e passou a exigir um compilador próprio, escrito por Stroustrup, abandonando o pré-processador de que anteriormente necessitava.
Como visto anteriormente, C++ tem a rapidez na sua essência. Desenhada pensando na máxima eficiência, essa linguagem oferece tanta agilidade quanto a CPU puder fornecer.
Além disso, C++ é uma linguagem compilada. Isso significa que aplicações implementadas com ela podem ser executadas com muita eficiência, em comparação a implementações utilizando linguagens interpretadas.
C++ oferece ainda excelentes mecanismos de abstração. Assim, permite empacotar algoritmos altamente sofisticados em bibliotecas que adicionam muito pouco overhead à aplicação.
Por este motivo, você encontrará milhares de bibliotecas disponíveis para incorporar ao seu projeto — sem precisar sacrificar a performance.
As características dessa linguagem fazem dela uma excelente escolha para aplicações em sistemas embarcados, como aqueles utilizados na robótica, aeronáutica, mercado financeiro e até mesmo em videogames.
Se você trabalha ou gostaria de trabalhar numa destas indústrias, é recomendável que estude pelo menos um pouco de C++, pois esta linguagem ainda é muito presente no mercado.
O grande problema ao trabalhar com C++ é que, enquanto aplicações dessa linguagem são muito eficientes, sua implementação não costuma ser. Os motivos para isso variam, mas compartilham um tema comum.
A verdade é que a robustez da linguagem e sua notória eficiência são frequentemente desnecessárias para as aplicações mais comuns do mercado. Sua rigidez e complexidade, somadas à carência de mão de obra, costumam resultar em custos de implementação maiores do que o esperado.
Em função do avanço de outras tecnologias, hoje é desnecessário e contraprodutivo utilizar C++ para a maioria das APIs e aplicativos mobile, web ou desktop.
Isso não quer dizer que a linguagem não possa ser útil para essas aplicações, mas considere utilizá-la apenas ao lidar com projetos de grande escala. Do contrário, é possível que prejudique a eficiência da implementação ao optar por essa tecnologia.
Falamos anteriormente sobre o valor de C++ para implementações de qualidade em sistemas embarcados. Sem dúvidas, é uma linguagem de extrema competência neste tipo de aplicação.
Todavia, é importante trazer, no cenário atual, uma importante consideração sobre o uso dessa tecnologia.
Vimos na última década grandes avanços na tecnologia em hardware: o aumento do poder de processamento e da memória disponível em sistemas e a estandardização em plataformas de 32 e 64-bit.
Essa mudança de paradigma tem permitido que linguagens como Java, Lua e Python sejam aplicadas em sistemas profundamente embarcados.
Por que isso é relevante? Porque essas linguagens são significativamente mais simples de aprender e utilizar. Isso implica custos de implementação menores e maior eficiência de tempo.
Estas linguagens têm demonstrado um desempenho tão satisfatório quanto C++ em aplicações que, em um momento anterior, teriam requerido a aplicação de C++. Tudo isso enquanto oferecem a mesma facilidade que esta, em termos de compatibilidade multiplataforma.
Aqui, fica novamente relegada ao discernimento do desenvolvedor a escolha por C++ ou outra linguagem. Para decidir, é importante avaliar a real demanda da aplicação por performance e eficiência.
Lembre-se que, para a maioria das aplicações, os ganhos de performance obtidos pelo uso de C++ só são perceptíveis em (muito) grande escala.
No fim das contas, é verdade que a maioria das pessoas não precisa aprender C++. Especialmente se você trabalha com APIs ou aplicativos desktop/web/mobile, as demais tecnologias disponíveis costumam oferecer um melhor custo-benefício quando comparadas a C++.
Dito isso, o conhecimento de C++ é extremamente útil quando você deseja trabalhar com aplicações específicas que sejam conhecidas por requerer a linguagem. Em áreas como a robótica, aeronáutica, finanças e outras que requeiram sistemas embarcados, C++ ainda é o padrão da indústria.
Em relação ao mercado de trabalho, as perspectivas para o desenvolvedor C++ também são mais restritas. Por exigir mais recursos do que outras linguagens, C++ é evitada em muitas aplicações. Por consequência, há uma demanda significativamente menor para esta linguagem do que para outras.
Entretanto, a baixa demanda do mercado de trabalho também desincentiva a formação de novos profissionais. São poucas as posições de entrada para desenvolvedores da linguagem.
Com poucas oportunidades, poucos profissionais conseguem aprimorar sua senioridade com C++. Isso também resulta na carência de profissionais experientes para suprir as demandas do mercado, quando surgem.
Pelo lado positivo, a remuneração para desenvolvedores C++ experientes costuma ser muito boa. O lado negativo é que adquirir essa experiência pode ser um processo difícil e demorado.
Se você deseja se desenvolver rapidamente na sua carreira de programador, talvez queira considerar outras tecnologias. HTML, CSS, Javascript e React são algumas das mais buscadas pelo mercado de trabalho.