Mandar um cafézinho para o programador:


Me ajude a transformar café em código!

C ou C++? Qual a diferença? Qual é melhor? Precisa saber C para aprender C++?

Para aprender C++ precisa saber C?

A dúvida inicial de quem se interessa por C++ é sempre envolvendo a linguagem C:
“Preciso estudar C antes de estudar C++ ?”
“Meu amigo disse que pra aprender C++ tem que dominar C”
“C++ é uma extensão do C, então pra estudar C++ já precisa saber C”

apostila de C++ online, C++ Progressivo, vai agora explicar em detalhes e sanar todos esses tipos de dúvida.

C ou C++: qual diferença?

É necessário saber C para aprender C++ ?

Não, não é necessário. São duas linguagens de programação independentes, você pode estudar e criar aplicações com uma ou com outra.
Se seu amigo disse que C++ é uma extensão do C, ele está certo.
Se ele disse precisa estudar C antes de estudar C++, ele está errado e você deve se afastar dele.


Qual a diferença entre C e C++ ?

C++ é uma extensão do C.
É o C com mais recursos e funções. E a principal diferença é que C++ é multi-paradigma: você pode programar em C++ com o paradigma Estruturado (o C é somente estruturado) ou com o paradigma de Orientação a Objetos (como a linguagem Java, por exemplo).

O símbolo ++, em programação, significa incremento. Representa o fato que o que é possível fazer com C, é possível fazer com C++.
C++ é a linguagem C incrementada. É tanto que seu criador, Bjarne Stroustrup, batizou ela como "C com classes".

Se C++ é uma extensão do C, então...

C++ é melhor que a linguagem C ?

Não existe linguagem melhor que a outra, existe linguagem mais adequada para determinado tipo de problema.
Sim, o C++ tem mais recursos, mas isso não vem de graça.
Sua implementação é mais complexa, tem mais coisas ocorrendo por debaixo dos panos. Logo, C++ não é tão eficiente quanto C, consome mais memória e processamento.

Onde se usa C e onde se usa C++ ?

Como dissemos, C é mais eficiente, é mais rápido. Programar em C é programar próximo ao 'metal', é ter acesso direto a memória do computador. Isso se chama programação em baixo nível.
O C++ também consegue isso, mas C++ também oferece a oportunidade de trabalhar em alto nível.

Porém, algumas aplicações exigem o máximo de velocidade e eficiência possível, por isso o C é usado para a criação de Sistemas Operacionais (como Linux e Windows) e até mesmo para trabalhar com microcontroladores.
Já C++ não serve para esses propósitos, porém serve para outros.

O problema do C ocorre quando as aplicações começam a ficar muito grandes, o que dificulta o controle e manutenção do código. É aí que entra o C++.
Devido sua Orientação a Objetos, e ao fato de possuir mais recursos e opções (como Templates), facilita muito na hora de programar e aumenta incrivelmente a eficiência do programador C++.
Ou seja, em um mesmo intervalo de tempo, o programador C++ consegue ser mais eficiente que um programador C fazendo a mesma coisa, pois o C++ tem mais coisas na ponta da agulha, pronta para o uso do programador.

Um exemplo de uso da linguagem C++ são os jogos de alto rendimento.
Eles são muito complexos para se fazer, por isso não é recomendado o uso de C ou Assembly.
Porém, eles precisam de uma eficiência muito grande, por isso não pode ser feito numa linguagem de mais alto nível, como Java ou C#.

É aí que entra o C++: ele é, ao mesmo tempo, muito mais eficiente que a maioria das linguagens e é mais pronto para o uso do que as linguagens de baixo nível, como o C.

Ou seja, C++ é um equilíbrio entre alto rendimento das linguagens de baixo nível, com a eficiência da programação de linguagens de alto nível.

O Java, por exemplo, também é orientado a objetos e vêm com mais recursos, então...

Qual o melhor, Java ou C++?

Por favor, pare de se perguntar se X ou Y é melhor. É sempre o mesmo que perguntar 'qual o melhor, banana ou maçã?"

Banana é o mais recomendável para fazer vitamina de banana, e maçã é o mais recomendado para fazer suco de maçã.
Não existe linguagem melhor que a outra, e sim mais recomendada para um determinado propósito.
(dica de amigo: dizer que tal linguagem é melhor que outra é coisa de adolescente leigo metido a hacker. Respeite todas as linguagens, profissionais e programas, se quiser ser alguém de respeito no meio).

A diferença começa com o fato de Java ser exclusivamente Orientado a Objetos.
Já C++ pode ser usado para programar tanto como estruturado como orientado a objetos.

A melhor característica do Java é o fato dele ser multi-plataforma, ou seja, você programa em Java e a aplicação roda em Windows, Linux, Mac, mobile e até no papel (brincando).
Isso acontece pois o Java não roda na máquina propriamente dita, e sim em uma máquina virtual (JVM - Java Virtual Machine). E isso pesa, deixando as aplicações Java mais pesadas.

Já o C++ não é pesado e é muito mais eficiente que o Java.
Porém não é multi-plataforma, pois o C++ chega, em alguns aspectos, aos níveis mais baixos de programação.
Por isso, rodar uma aplicação C++ em uma máquina pode ser que não funcione em outra, depende da arquitetura do sistema.

Se C++ é uma extensão do C, então...

Os comandos de C rodam em C++?

Sim, rodam na grande maioria das vezes.
Á rigor, C++ não é uma extensão do C, pois há algumas poucas coisas que são possíveis fazerem em C que não são possíveis fazer em C++ (como com o void* e char*). Mas no geral, em 99,99% das vezes, seus códigos C serão interpretados corretamente pelo C++.

Porém, como dissemos no início, são duas linguagens independentes, uma NÃO precisa da outra.
Então NÃO MISTURE C COM C++ !
É um péssimo e abominável hábito. Ou programe em C ou programe em C++.
Também não faz muito sentido programar de maneira estrutural em C++, pois você estaria desperdiçando os recursos a mais que o C++ oferece (relacionados com a orientação a objetos).
Se for programar estruturado, vá de C.

Como está o mercado de C++ no Brasil ?

Vamos ser sinceros, e isso implica em uma notícia boa e uma ruim.

A boa que o mercado é ótimo, há uma extrema carência de BONS profissionais de C++ e no geral, ganham bem mais que a maioria dos programadores das outras linguagens.

A ruim é que não é uma linguagem fácil nem simples de aprender.
Sua curva de aprendizado é maior que as outras, e se quiser ir em frente com C++ você deve estudar bastante.

E aí, tá afim de aprender C++ ?
Bem vindo a apostila de C++ online: Curso C++ Progressivo

6 comentários:

  1. Da para compreender perfeitamente, parabéns pelo conteúdo!

    ResponderExcluir
  2. esse site me ensinou o que e programar

    ResponderExcluir
  3. Texto extremamente didático, parabéns!

    ResponderExcluir
  4. Pra mim todas linguagens de programação são como uma obra prima aos meus olhos.

    ResponderExcluir
  5. "você programa em Java e a aplicação roda em Windows, Linux, Mac, mobile e até no papel (brincando)."
    Nunca achei que fosse estudar programação e dar risada. Parabéns pelo conteúdo!

    ResponderExcluir

Ajude o C++ Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo