Bom dia pessoal;
Uma dúvida que não consigo esclarecer.
Qual a diferença entre a linguagem C e C++?
Qual é a melhor.
Já programo em jsp a algum tempo.
Más gostaria de esclarecer isso.
Abraços a todos!
Bom dia pessoal;
Uma dúvida que não consigo esclarecer.
Qual a diferença entre a linguagem C e C++?
Qual é a melhor.
Já programo em jsp a algum tempo.
Más gostaria de esclarecer isso.
Abraços a todos!
C++ é um superconjunto (quase perfeito*) da linguagem C (que é um “assembly portável”.
O C++ suporta o paradigma de programação orientada para objetos (classes) e para programação genérica (templates), além da velha e boa programação estruturada.
O C suporta apenas a programação estruturada (embora você possa fazer uns truques com macros para que ela possa suportar programação orientada a objetos - o pacote OpenSSL, http://www.openssl.org, é um exemplo disso.)
Não sei o que é “melhor” ou “pior”; é como perguntar se espanhol é melhor que português - vai ter briga de foice e não quero estar no meio. (Sei as duas o suficiente para não entrar no meio dessa briga).
(* Digo “quase” porque a linguagem C divergiu um pouco, em sua versão C99, da linguagem C++. )
Minha opinião pessoal:
Usando a programação orientada a objetos meu voto vai 100% para C++.
O Código fica muito mais organizado (lembrem-se: minha opinião).
Um código organizado significa muita, muita coisa 
Não sei se há muita diferença em termos de performance, mas se houver, acredito que seja minima.
De qualquer maneira, o pessoal da Apple prefere usar Objective-C e C para programar o sistema operacional MacOS X .
O Objective-C é anterior ao C++ e bem mais orientado a objetos que o C++ - se você vir um programa em Objective-C vai ver que ele parece uma mistura de Smalltalk e C. (O livro sobre programação orientada a objetos, do Brian Cox, que é um dos primeiros livros que foram traduzidos para o português sobre OOP, usa Objective-C, não C++, para dar os exemplos).
Não entendi essa sentença no contexto da questão rs
De C / C++ para Java é plenamente possível e desejável.
De Java para C++ bastante difícil.
De Java para C eu diria impossível. Seria como deixar de usar telefone celular para se comunicar via sinal de fumaça. Até dá, mas vai ser difícil e doloroso.
Concordo com o ultimo post.
Eu gosto de Java, não tenho dificuldade.
Más a vantagem do C++ é a comunicação com o Hardware, coisa que o Java deixa a desejar até com um simples aplicativo que usa a porta-paralela.
C é muito gostoso de programar, pelo menos eu adoro, principalmente para brincar com Hardware …
c++ é c Orientação a Objeto
O principal o Thingol falou: OO e templates.
Outras vantagens são:
Não parece, mas isso é uma diferença significativa.
O principal o Thingol falou: OO e templates.Outras vantagens são:
- Melhor conceito de constness e inline - o que praticamente elimina a necessidade de macros, como #define;
- Bibliotecas prontas standard, como a STL e a TR1, com coisas como vector, string, maps, multimaps e, recentemente, a inclusão de alguns SmartPointers.
- Operadores new e delete - facilitam a alocação/desalocação de memória;
Não parece, mas isso é uma diferença significativa.
class SQL {
...
};
class MySQL: public SQL {
...
};
class SQLServer: public SQL {
...
};
...
SQL *getConnection() {
if ... {
return new MySQL();
} else if ... {
return new SQLServer();
...
}
SQL *psql;
psql = getConnection();
...
Quando voltei ao código, algum tempo depois, verifiquei que o gajo que tinha alterado meu código não conseguiu compreender como é que “SQL *psql = new MySQL()” funciona. Ele simplesmente reescreveu um monte de coisas - duplicou o código, e fez tudo como:
MySQL *psql = new MySQL();
...
SQLServer *psql = new SQLServer();
Foi muito frustrante.
- O que eu conheço dos programadores C++ por aí é que eles desconhecem “const”, STL, (ou seja, a TR1) e mal e mal usam “new” e “delete”. Para piorar, eles costumam não conhecer direito essa parte de herança, polimorfismo e outros conceitos de OOP.
Exatamente, foi até por isso que eu fiz questão de citar essas diferenças. Também já passei por experiências assim, onde todos os meus smart pointers foram substituídos por ponteiros comuns e, “de brinde”, ainda mantiveram um throw antes do delete, deixando um belo memory leak para a posteridade.
Pior é que deixei um comentário nesses programas que explicava como é que a tal construção “SQL *psql = new MySQL()” funcionava e por quê. Acho que estava lidando com gente analfabeta…