Eu visitei um dia de abertura do departamento de ciência da computação da universidade hoje e na turnê dos laboratórios nós sentamos para brincar com alguns projetos do último ano de alunos de graduação. Um era particularmente bom - uma espécie de jogo de asteróides FPS. Decidi dar uma olhada no src
diretório para descobrir que era feito em C ++ (a maioria dos outros projetos eram aplicativos Java 3D).
Eu não fiz nenhum C antes, mas já olhei alguns códigos C antes. Pelo que vi no código .cpp deste jogo, não parecia muito diferente.
Estou interessado em aprender C ou C ++, mas provavelmente irei aprender o outro mais tarde. Há alguma vantagem em aprender um antes do outro e, se sim, qual?
Respostas:
Não há necessidade de aprender C antes de aprender C ++.
São línguas diferentes . É um equívoco comum pensar que C ++ é de alguma forma dependente de C e não de uma linguagem totalmente especificada por si só.
Só porque o C ++ compartilha muito da mesma sintaxe e muito da mesma semântica, não significa que você precisa aprender C primeiro.
Se você aprender C ++, eventualmente aprenderá a maior parte de C, com algumas diferenças entre as linguagens que aprenderá com o tempo. Na verdade, é muito difícil escrever C ++ adequado porque os programadores intermediários de C ++ tendem a escrever C / C ++. Isso é verdade quer você tenha começado com C ou com C ++ ou não.
Se você conhece C primeiro, isso é uma boa vantagem para aprender C ++. Você começará conhecendo um pedaço da língua. Se você não conhece C primeiro, não há motivo para focar em uma linguagem diferente. Existem muitos bons livros e tutoriais disponíveis que o iniciam do nada e cobrem qualquer coisa que você aprenderia com C que se aplica a C ++ também.
Por favor, veja mais motivos nesta resposta .
fonte
Adoro esta pergunta - é como perguntar "o que devo aprender primeiro, snowboard ou esqui"? Acho que depende se você quer fazer snowboard ou esquiar. Se você quiser fazer os dois, precisa aprender os dois.
Em ambos os esportes, você desliza colina abaixo na neve usando dispositivos suficientemente semelhantes para provocar essa pergunta. No entanto, eles também são suficientemente diferentes para que aprender um não o ajude muito com o outro. A mesma coisa com C e C ++. Embora pareçam ser linguagens suficientemente semelhantes em sintaxe, a mentalidade necessária para escrever código OO versus código procedural é suficientemente diferente para que você praticamente tenha que começar do início, seja qual for a linguagem que aprender em seguida.
fonte
Aprendi C primeiro e fiz um curso de estruturas de dados que usavam C, antes de aprender C ++. Isso funcionou bem para mim. Um curso de estruturas de dados em C me deu uma sólida compreensão de ponteiros e gerenciamento de memória. Também tornou óbvios os benefícios do paradigma orientado a objetos, uma vez que eu aprendi o que era.
Por outro lado, aprendendo C primeiro, desenvolvi alguns hábitos que inicialmente me fizeram escrever código C ++ incorreto, como o uso excessivo de ponteiros (quando as referências de C ++ funcionariam) e o pré-processador.
C ++ é realmente uma linguagem muito complexa com muitos recursos. Não é realmente um superconjunto de C, no entanto. Em vez disso, há um subconjunto de C ++ que consiste nas construções de programação procedural básicas (loops, ifs e funções), que é muito semelhante a C. No seu caso, eu começaria com isso e, em seguida, trabalharia para conceitos mais avançados como classes e modelos.
A coisa mais importante, IMHO, é ser exposto a diferentes paradigmas de programação, como procedural, orientado a objetos, funcional e lógico, desde o início, antes que seu cérebro congele em uma maneira de ver o mundo. A propósito, eu também recomendo fortemente que você aprenda uma linguagem de programação funcional, como Scheme. Isso realmente expandiria seus horizontes.
fonte
Se você decidir aprender ambos (e como outras pessoas mencionaram, não há necessidade explícita de aprender ambos), aprenda C primeiro. Ir de C para C ++ parece uma progressão natural; ir para o outro lado é como amarrar deliberadamente uma mão atrás das costas. :-)
fonte
Acho que você deve aprender C primeiro, porque aprendi C primeiro. C me deu uma boa compreensão da sintaxe e dicas com coisas como ponteiros, que fluem para C ++.
Acho que C ++ torna mais fácil encerrar todas essas pegadinhas (precisa de uma matriz que não estourará quando você usar o operador [] e um índice duvidoso? Claro, faça uma classe de matriz que faça a verificação de limites), mas você precisa saber o que eles são e são mordidos por eles antes que você entenda por que as coisas são feitas de certas maneiras.
Quando tudo estiver dito e feito, a forma como C ++ é geralmente ensinado é "C ++ é C com objetos, aqui está o material C e aqui está como funciona todo esse material OO", então é provável que você aprenda C básico antes de qualquer C ++ real se você siga a maioria dos textos de qualquer maneira.
fonte
Vou discordar da maioria aqui. Acho que você deve aprender C antes de aprender C ++. Definitivamente não é necessário, mas acho que torna o aprendizado de C ++ muito mais fácil. C é o cerne do C ++. Tudo o que você aprender sobre C é aplicável a C ++, mas C é muito menor e mais fácil de aprender.
Pegue K&R e leia isso. É curto e lhe dará uma noção suficiente da linguagem. Depois de ter o básico sobre ponteiros e chamadas de função, você pode passar para C ++ um pouco mais facilmente.
fonte
static
, modelos (e os erros de modelo ridiculamente intimidantes que os compiladores emitem) etc.No processo de aprendizagem de C ++, você aprenderá a maior parte de C também. Mas tenha em mente que muitos códigos C ++ não são válidos. C ++ foi projetado para ser compatível com o código C, então eu diria que você aprende C ++ primeiro. Brian escreveu uma ótima resposta sobre isso.
fonte
Aprender C força você a pensar mais sobre alguns problemas, como gerenciamento de memória explícito e implícito ou tamanhos de armazenamento de tipos de dados básicos no momento em que você escreve seu código.
Depois de chegar a um ponto em que se sinta confortável com os recursos e características incorretas do C , provavelmente você terá menos problemas para aprender e escrever em C ++.
É totalmente possível que o código C ++ que você viu não parecesse muito diferente do C padrão, mas isso pode muito bem ser porque não era orientado a objetos e não usava exceções, orientação a objetos, modelos ou outros recursos avançados.
fonte
Não.
Geralmente é mais útil aprender C ++ porque está mais próximo das linguagens mais modernas baseadas em OO, como Eiffel ou C #.
Se seu objetivo é aprender C ++, aprenda C ++ moderno e padrão em primeiro lugar. Deixe os mallocs de lado.
Mas Steve Rowe tem razão ...
fonte
Como as respostas a muitas outras perguntas na vida, depende. Depende de quais são seus interesses e objetivos de programação. Se você deseja programar aplicativos de desktop, talvez com uma GUI, então C ++ (e OOP) é provavelmente a melhor maneira de fazer. Se você estiver interessado em programação de hardware em algo diferente de um chipset x86, C geralmente é a melhor escolha, geralmente por sua velocidade. Se você deseja criar um novo media player ou escrever um aplicativo de negócios, eu escolheria C ++. Se você quiser fazer simulações científicas de colisões de galáxias ou dinâmica de fluidos, observe o poder de C.
fonte
restrict
especificador, C não tem nenhuma outra construção sintática / semântica relacionada ao desempenho do que C ++ também, por que exatamente você acha que o código C ++, com sua sintaxe mais rica e, por exemplo, metaprogramação deve produzir um código mais lento? Você conhece modelos de expressão?restrict
que, no entanto todos os principais compiladores C ++ fornecem uma extensão). E você realmente acha que, dado o mesmo código, haverá alguma diferença de desempenho entre C ++ e C, dado o mesmo compilador? [...]Acho que aprender C primeiro é uma boa ideia.
Há uma razão pela qual os cursos de ciências computacionais ainda usam C.
Em minha opinião, é para evitar todo o "congestionamento" do assunto que a obrigação de exigir carrega OOP.
Acho que a programação procedural é a maneira mais natural de primeiro aprender a programar. Acho que isso é verdade porque no final do dia é o que você tem: linhas de código executando uma após a outra.
Muitos textos hoje estão empurrando uma abordagem "objetos primeiro" e começam a falar sobre carros e mudanças de marcha antes de introduzir matrizes.
fonte
Tendo observado pessoas que aprenderam Java primeiro, lutam com os conceitos de ponteiros e gerenciamento de memória em C ++, eu diria que aprender C primeiro é uma boa ideia, a fim de compreender esses dois conceitos, isolados das complexidades de outros C ++. recursos.
fonte
Meus dois centavos:
Sugiro aprender C primeiro, porque:
fonte
Eu acho que c é uma linguagem de programação muito boa, é compacta e um tanto fácil de aprender. mas se você quiser apenas aprender c ++, comece com c ++. mas eu sugiro que você aprenda ambos. e se você quiser fazer isso; acho melhor começar com c. como disse antes: é pequeno e um tanto fácil de aprender. pode ser um bom avanço para uma linguagem de programação mais complexa como c ++. (já que c fornece alguns princípios básicos)
boa sorte.
fonte