Sou iniciante e tenho pouco conhecimento em programação.
Seria bom se eu aprendi C ++ diretamente de livros que cobrem o novo C ++ 11 ou devo estudar os melhores livros antigos de C ++?
Devo ter pouco conhecimento sobre C ++ antes de aprender C ++ 11? ou posso começar diretamente de lá?
Causaria problemas se eu iniciar diretamente do C ++ 11? Se não, sugira alguns livros sobre C ++ 11.
Programmers — Stack Exchange is a site for professional programmers...
Nesse caso, você se importaria de me guiar até o site para programadores iniciantes? Eu também sou um novato de codificação e eu vou ter bastante algumas perguntas básicas ...Respostas:
Existem muitos aprimoramentos de usabilidade que tornam o C ++ 11 mais compreensível para um iniciante, especialmente aquele que possui experiência em outros idiomas com esses recursos. Outras alterações no C ++ 11 são de interesse apenas de usuários avançados, portanto, é provável que você fique impressionado se pegar um livro que foi projetado para ensinar principalmente as diferenças. Verifique se qualquer livro que você recebe foi projetado para iniciantes completos em C ++.
Dito isto, você provavelmente terá que aprender da maneira antiga eventualmente, pois há muito código existente e até mesmo o novo código C ++ 11 conterá a maneira antiga de fazer as coisas, se o programador assim o desejar. Eu escrevo C ++ para ganhar a vida e minha empresa ainda nem chegou a avaliar os compiladores compatíveis com C ++ 11, sem falar em usar um em produção.
fonte
Você não precisa usar o C ++ antigo para começar a usar o C ++ 11, há novos recursos no C ++ 11, mas o uso é opcional. Saber como usar os recursos do C ++ 11 poderia ser uma vantagem, certamente não seria uma desvantagem ao trabalhar com bases de código legadas (anteriores ao 11), uma vez que você conhecesse as idiossincrasias das versões mais antigas.
Aprender C ++ seria um bom lugar para começar a aprender e o Apêndice B ensinará os recursos do C ++ 11 após você aprender o básico.
Eu posso ver por que algumas pessoas sugeriram Java / CSharp etc. como linguagens alternativas mais fáceis, mas aprendi um pouco de C ++ antes de passar para o CSharp e não sou um programador pior por causa disso, pelo contrário, as habilidades de programação são muito mais profundas que a linguagem sintaxe / funcionalidade e com uma base sólida em C ++, você pode aprender qualquer outra linguagem OOP imperativa facilmente.
fonte
É difícil dizer.
O C ++ antigo é mais um campo minado, e é bom aprender a navegar por um animal desses. Também o fará entender por que as coisas são feitas como são e quais são as implicações de diferentes construções.
Então, novamente, C ++ antigo não é o que você deseja quando escreve código.
Mas, mais uma vez, o antigo C ++ é o que muita indústria estará produzindo por mais 20 anos.
Eu amo C ++ 11, mas só é utilizável em startups por enquanto. Não em grandes bases de códigos herdados. E pular direto para o C ++ 11 pode deixar você com habilidades não desenvolvidas em partes desagradáveis do C ++. O que sairá pela culatra uma vez que algumas construções avançadas do C ++ 11 vazem ou travam porque são usadas de uma maneira sintaticamente correta, mas logicamente incorreta.
fonte
Apesar de muitas melhorias
C++11
,C++
ainda não é uma linguagem fácil. Java, embora não seja tão fácil quanto alguns possam pensar, ainda é uma linguagem mais fácil com desempenho muito bom (geralmente quase tão rápido quantoC++
) e oferece IDEs melhores (talvezVisual C++
seja tão bom quanto os IDEs Java atuais, mas sem sorte aqui no Linux), biblioteca padrão mais abrangente (o JDK), mais bibliotecas (por exemplo , Hibernate , Spring , JEE , Lucene , etc) e sem vazamentos de memória (bem, quase nenhum - você ainda pode criar um vazamento de memória em Java, mas é mais difícil fazê-lo do que emC++
). Para ser justo, com o modernoC++11
, é muito mais fácil evitar o alho-poró da memória.O C ++ 11 possui muitos recursos interessantes, como lambdas, palavra-chave automática, semântica de movimentos e muito mais. É definitivamente uma linguagem muito melhor do que
C++98
era. Veja esta visão geral de Herb Sutter sobre os novos recursos emC++11
: Elementos doC++
estilo moderno .Resumindo, acho que todos deveriam aprender pelo menos alguns
C++
. Se você tiver sido programação emJava
,Scala
,Ruby
ouPython
para a última década e nunca tocouC
ouC++
, agora comC++11
que eu acho que é hora de aprenderC++11
e melhorar suas habilidades de programação ao fazê-lo.Provavelmente, não usarei
C++
muito trabalho nos próximos anos e, quando precisar de uma linguagem mais poderosa doJava
que provavelmente usarei o Scala, mas examinarei mais de pertoC++11
e tentarei aprender e entender os novos recursos, particularmente aqueles sobre multithreading e simultaneidade.fonte
Respire fundo e leia este artigo de Peter Norvig.
Você leu isso? Ok, se você é iniciante, precisa começar em pequenas etapas. - insira o idioma aqui - pode vir mais tarde, confira o Coursera ou o Udacity para ver alguns cursos de introdução à ciência da computação para iniciantes.
Após concluir isso, eu recomendaria trabalhar lentamente na linguagem de programação The C da K&R, se você estiver definido em uma linguagem 'C'.
Trabalhe no básico, o resto chegará a tempo.
fonte
Os livros introdutórios recentes sobre C ++ também estão cobrindo cada vez mais o C ++ 11. Li o Teach Yourself C ++ de Sam depois de trabalhar com linguagens de script, mas não o C / C ++ por quase dez anos, e achei realmente útil. Rapidamente fiquei familiarizado com as idéias centrais do C ++ (incluindo muitas STL) e consciente de muitos detalhes diferentes no C ++ 11.
Como alguns outros pôsteres mencionaram, o C ++ 11 é, em muitos aspectos, mais fácil do que os padrões mais antigos, com acréscimos no estilo de script
auto
,for(int &i : m_vector){}
etc. Portanto, se seu "pouco conhecimento" vem de linguagens como Python ou Matlab, você encontrará o C ++ 11 um pouco mais "natural" do que os padrões anteriores.Gostaria também de salientar que, até agora, a compatibilidade do compilador para C ++ 11 está ( quase ) completa, portanto, ter código "muito atualizado para compilar" não é mais um problema.
Em suma, faça.
fonte
Quando eu era C, era considerado um pré-requisito do C ++, especialmente para os iniciantes em programação. Porque você precisa descobrir o que faz uma linguagem e por que ela foi projetada dessa maneira. C recebeu muitas idéias grandes e suficientes da linguagem de programação, que nunca estarão desatualizadas. Portanto, acredito que este é o melhor começo.
E depois de ter um ponto de vista básico sobre os materiais de programação, você pode ter que escolher o que deve ser feito na próxima jogada, o que significa escolher uma linguagem para aprender o mais profundamente possível. Não importa a profundidade, você geralmente pode decidir a profundidade de qualquer outro idioma, o que significa que, não importa quantos idiomas você aprendeu, o mais profundo será sempre o primeiro que você desenterrou. Para mim, realizei pesquisas em Java e fiz alguns modelos de Java por conta própria para entender melhor sua funcionalidade do kernel.
Depois disso, você poderá aprender o que quiser, porque possui total entendimento da tecnologia da linguagem de programação. Comecei a aprender C #, Go, Python e até Scala e fiz muitos projetos por diversão / trabalho. O recorde pessoal é de 3 meses, desde o início do aprendizado de um idioma até o ponto 1.0 de um projeto em desenvolvimento.
No meu caso, já faz mais de 15 anos desde o meu primeiro programa e eu nem me lembro o que é. Eu acredito que se você trabalhar duro o suficiente, você definitivamente ficará melhor e mais rápido do que eu.
fonte
Como iniciante, acho que primeiro você precisa passar pelos conceitos de C ++ porque o C ++ 11 e tudo são como uma nova versão, mas C e C ++ são básicos para qualquer tipo de desenvolvimento. Depois de aprender C ++, a maioria dos conceitos será limpa automaticamente.
fonte
C ++ é uma linguagem realmente excelente e poderosa. No entanto, também coloca muita responsabilidade no programador.
Se você é completamente novo em programação, facilite a vida e comece com C #. Sua sintaxe é baseada em C ++, mas o tratamento de erros é muito mais amigável para iniciantes, ajudando-o quando as coisas dão errado.
Se você está familiarizado com métodos, classes, herança e deseja desenvolver em um ambiente em que o gerenciamento de recursos de memória e sistema é mais importante que a produtividade, o C ++ é uma boa opção, e eu começaria aprendendo o padrão atual. Lembre-se de que o C ++ exige que você entenda a memória e gerencie-a ativamente. Cometa erros aqui e tudo o que você recebe é um núcleo despejado ou seus dados contêm bytes que não fazem sentido. E, frequentemente, o ponto em que você encontra o problema não tem relação com o local onde realmente está a causa.
fonte
Por que você quer começar com C ++?
Eu, pessoalmente, recomendo o C ++ como primeira língua. É complicado, complexo, difícil ... simplesmente um nível muito mais baixo e mais "inseguro" do que a maioria das outras linguagens de programação.
Aconselho a escolher c #, java, python ou javascript ... e um bom livro ao longo do caminho. Você terá um tempo muito mais agradável com isso.
fonte