Os recursos do C++ podem ser utilizados no Java?

9 respostas
Mendigo_do_Futuro

Boa Noite

Estou estudando C++ para um trabalho da faculdade, nisso percebi que muitos tópicos abordados no livro( C++ Como Programar 8ª ed) também são abordados no livro sobre Java.
Minha dúvida é, como o Java vem do C++, se esses recursos que estou aprendendo em C++ poderão ser usados no Java posteriormente ou eu terei que aprender tudo outra vez? ( os recursos que eu digo são tratamento de exceções, sobrecarga de operadores, streams, gabaritos e processamento de arquivos)

Obrigado pela atenção

9 Respostas

E
São um pouco diferentes.

tratamento de exceções -> C++: try/catch, Java: try/catch/finally & try-with-resources

sobrecarga de operadores -> Java: não tem

streams -> Java: é bem diferente (em Java é bem mais fácil combinar streams que em C++)

gabaritos -> Java: generics (parece mas não é templates)

processamento de arquivos -> é o que eu falei sobre streams.

Não se esqueça, Java foi inspirado no C++ mas não é um sub ou superconjunto do C++.

ViniGodoy

Eu ainda citaria essas:
C++ => Gerencia de memória manual ou semi-automática (Smart Pointers) Java => Gerencia de memória automática
C++ => Acesso fácil ao hardware e ao SO Java => Acesso difícil ao hardware e ao SO
C++ => Compilação condicional Java => Sem compilação condicional
C++ => Suporte ao paradigma estruturado Java => Sem suporte a esse paradigma (embora depois do import static, tenho lá minhas dúvidas).

Orocildo

Pegando o gancho… Estava pensando em estudar C++, mas será que me agrega algo ou seria perda de tempo ?

Estou projetando para as férias me dedicar a algo que aumente minha competência com programação, então pensei em C++.

Uma recomendação vinda de um professor meu é se aprofundar em uma linguagem funcional.

Linguagem funcional + reforço em algoritmos de estrutura de dados podem ser interessantes também.

Que vocês acham ?

ViniGodoy

Eu sou fã de C++, então sou suspeito para falar.
A grande vantagem de estudar a linguagem é que nela é possível programar qualquer coisa mesmo. Desde softwares de tempo real, como jogos e aplicações desktop portáveis, até minúsculos processadores.
Outra vantagem é que ela te dá um grande entendimento de como o computador funciona.

Mas é uma linguagem difícil, pois é uma linguagem antiga. Conhecer boas práticas em C++ não é só uma questão de melhorar estilo, mas uma necessidade.
Parte da evolução da linguagem criou recursos novos e mais fáceis de usar, mas não pode simplesmente matar com um jeito antigo e sujeito a erros.

S

ViniGodoy:
Eu sou fã de C++, então sou suspeito para falar.
A grande vantagem de estudar a linguagem é que nela é possível programar qualquer coisa mesmo. Desde softwares de tempo real, como jogos e aplicações desktop portáveis, até minúsculos processadores.
Outra vantagem é que ela te dá um grande entendimento de como o computador funciona.

Mas é uma linguagem difícil, pois é uma linguagem antiga. Conhecer boas práticas em C++ não é só uma questão de melhorar estilo, mas uma necessidade.
Parte da evolução da linguagem criou recursos novos e mais fáceis de usar, mas não pode simplesmente matar com um jeito antigo e sujeito a erros.

Aproveitando esse topico, existe alguma IDE parecida com Eclipse para C++? E qual a diferença entre o C e o C++ além de que o C++ é orientado a objeto?

E

IDEs para C++ é o que não faltam.
No Windows, você tem o Microsoft Visual Studio (há a versão paga e a versão gratuita), o QtCreator, o Code::Blocks, o SlickEdit, etc.
Em Linux, o QtCreator, o Code::Blocks, o KDevelop, o CodeLite, o SlickEdit, o próprio Emacs, etc.
No MacOSX você tem o XCode, o QtCreator, etc. Se usar o MacPorts no MacOSX provavelmente você também terá acesso ao KDevelop, etc.
Há também o plugin do Eclipse para C++, chamado Eclipse CDT. Entretanto, não recomendo usar o Eclipse CDT logo de cara; acho que é melhor usar uma IDE como o QtCreator ou o Code::Blocks.
O NetBeans, no Linux e Solaris, é usado como base para o Sun Studio.

S

entanglement:
IDEs para C++ é o que não faltam.
No Windows, você tem o Microsoft Visual Studio (há a versão paga e a versão gratuita), o QtCreator, o Code::Blocks, o SlickEdit, etc.
Em Linux, o QtCreator, o Code::Blocks, o KDevelop, o CodeLite, o SlickEdit, o próprio Emacs, etc.
No MacOSX você tem o XCode, o QtCreator, etc. Se usar o MacPorts no MacOSX provavelmente você também terá acesso ao KDevelop, etc.
Há também o plugin do Eclipse para C++, chamado Eclipse CDT. Entretanto, não recomendo usar o Eclipse CDT logo de cara; acho que é melhor usar uma IDE como o QtCreator ou o Code::Blocks.
O NetBeans, no Linux e Solaris, é usado como base para o Sun Studio.

Obrigado, vou dar uma olhada no QtCreator.

Só mais duas perguntas: por qual motivo você não recomenda usar o Eclipse CDT de cara? Alguma dessas IDEs fazem que nem o Eclipse que é mostrar possíveis erros de compilação enquanto você ainda está escrevendo o código?

E

Acho duas coisas:

a) Tanto o Eclipse CDT quanto o NetBeans são muito pesados, eu acho que uma IDE C++ deve ser leve (e escrita em C++ :slight_smile: ). Outra coisa de usar uma outra IDE que não o Eclipse ou o NetBeans é que você “reduz suas expectativas” - você não espera que em C++ a IDE vá lhe dar tanta colher de chá quanto o Eclipse ou o NetBeans com o Java. Se você estiver no Eclipse CDT ou no NetBeans e começar a ver que em C++ você não tem todos aqueles recursos que você teria no Java, você acaba ficando desanimado, e isso nunca é uma boa coisa.

b) A linguagem C++ é extremamente complexa e sua sintaxe não é amigável para compilação parcial com acesso restrito apenas ao contexto local (que é o que as IDEs como o Eclipse fazem com o Java), alguns erros podem ser detectados pela IDE enquanto se está digitando, mas a maior parte só é descoberta na compilação “em si”.
Um simples “#include”, contendo várias macros, pode detonar completamente o significado de um programa.
As versões mais modernas do Visual Studio (que é o que eu uso, mas mais por motivos profissionais que por gosto pessoal) tentam fazer a mesma coisa que o Eclipse faz (ou seja, ir mostrando os erros à medida que você vai digitando), mas justamente devido à complexidade da linguagem, não funcionam muito bem (é diferente do C# e do Java, que foram projetados para ser amigável para compilação parcial). Não é por falta de cientistas competentes na Microsoft; é porque a linguagem é complexa mesmo.

S

entanglement:
Acho duas coisas:

a) Tanto o Eclipse CDT quanto o NetBeans são muito pesados, eu acho que uma IDE C++ deve ser leve (e escrita em C++ :slight_smile: ). Outra coisa de usar uma outra IDE que não o Eclipse ou o NetBeans é que você “reduz suas expectativas” - você não espera que em C++ a IDE vá lhe dar tanta colher de chá quanto o Eclipse ou o NetBeans com o Java. Se você estiver no Eclipse CDT ou no NetBeans e começar a ver que em C++ você não tem todos aqueles recursos que você teria no Java, você acaba ficando desanimado, e isso nunca é uma boa coisa.

b) A linguagem C++ é extremamente complexa e sua sintaxe não é amigável para compilação parcial com acesso restrito apenas ao contexto local (que é o que as IDEs como o Eclipse fazem com o Java), alguns erros podem ser detectados pela IDE enquanto se está digitando, mas a maior parte só é descoberta na compilação “em si”.
Um simples “#include”, contendo várias macros, pode detonar completamente o significado de um programa.
As versões mais modernas do Visual Studio (que é o que eu uso, mas mais por motivos profissionais que por gosto pessoal) tentam fazer a mesma coisa que o Eclipse faz (ou seja, ir mostrando os erros à medida que você vai digitando), mas justamente devido à complexidade da linguagem, não funcionam muito bem (é diferente do C# e do Java, que foram projetados para ser amigável para compilação parcial). Não é por falta de cientistas competentes na Microsoft; é porque a linguagem é complexa mesmo.

Entendo.

Muito obrigado por tirar essas dúvidas. Hora de eu começar a estudar C++ :smiley:

Criado 21 de outubro de 2012
Ultima resposta 24 de out. de 2012
Respostas 9
Participantes 5