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)
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
Sem_Nome
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
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.
S
Sem_Nome
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
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++ ). 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
Sem_Nome
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++ ). 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++