Existe a possibilidade de alguém que tenha aprendido todos os principais aspectos do C ++ e conheça muito bem os fundamentos da linguagem, aprendendo outras linguagens (como Python, Perl, Java) de maneira mais rápida e fácil?
Existe a possibilidade de alguém que tenha aprendido todos os principais aspectos do C ++ e conheça muito bem os fundamentos da linguagem, aprendendo outras linguagens (como Python, Perl, Java) de maneira mais rápida e fácil?
Respostas:
É provável que o conhecimento profundo de qualquer linguagem de programação o ajude a escolher outras linguagens mais rapidamente. Isso ocorre parcialmente porque a programação é uma maneira de pensar mais do que está aprendendo sintaxe. A maioria das práticas de programação se aplica à maioria das outras linguagens de programação. É por isso que as pessoas dizem que você sempre aprende a segunda linguagem de programação mais rapidamente que a primeira.
C ++ é uma linguagem que permite um 'controle' muito maior do que outras linguagens. Isto pode ser bom e ruim. Por exemplo, uma arma de verdade é melhor do que uma pistola de ar quando você vai para a floresta (porque você pode realmente derrubar algo com ela), mas também é mais perigoso para você e para as pessoas ao seu redor. O C ++ possui conceitos como gerenciamento de memória, com os quais você não precisa se preocupar na maioria das outras linguagens. Ter uma compreensão firme desses conceitos, no entanto, está longe de ser inútil, mesmo quando se trabalha com linguagens de gerenciamento automático de memória. Você também pode executar operações bit a bit e descer muito mais para o 'metal' com uma linguagem como C ++. Mesmo um entendimento básico nessas áreas pode ajudá-lo muito como programador em qualquer idioma.
Eu pessoalmente aprendi Java primeiro por quase 3 anos antes de aprender C ++, e devo dizer que meio que me arrependo (curso uni ...). Isso tornou o aprendizado de C ++ (ainda estou aprendendo - longe de um conhecimento 'profundo': D) não tão simples quanto eu gostaria. Se eu tivesse feito o contrário, diria que teria sido muito mais fácil para mim. Especialmente quando você sabe PORQUE algo seja feito de uma maneira específica, e não apenas ter a certeza sobre a auto-magicness da língua. Se eu puder dar uma opinião, sugiro: C (para paradigmas de programação básicos e universais) -> C ++ (para entendimento básico de OOP junto com o gerenciamento de memória) -> Então você pode entrar em qualquer linguagem OOP 'real' com um boa base ou você pode continuar com tópicos mais avançados em C ++, tudo dependendo do que você
OReAND
Infelizmente não. Na verdade, esse é um grande problema ao ensinar C ++ nas aulas de programação, especialmente no nível iniciante: você pode aprender princípios de programação ou a linguagem C ++, mas a linguagem C ++ tem muitas armadilhas e pequenas armadilhas para aprender as duas coisas de maneira eficaz. o escopo de uma aula de um semestre!
Muitas coisas foram testadas em C ++ e, eventualmente, tornaram-se idiomáticas na linguagem por pura inércia, que praticamente todas as outras línguas analisaram e rejeitaram porque se revelou um grande erro. Os principais são os modelos do C ++ e o modelo de objeto do C ++ (objetos como tipos de valor nunca são uma coisa boa, porque interrompe a substituição de Liskov e o próprio OOP.)
Portanto, se você obtiver um conhecimento profundo de C ++ primeiro e quiser aprender outras linguagens de programação, haverá muitas coisas prejudiciais e contraproducentes que você precisará desaprender para ser eficaz em outras linguagens de programação.
Não. Conhecer bem o C ++ tornará mais fácil o aprendizado de outras linguagens semelhantes ao C ++. Mas isso seria chato. Por que você gostaria de conhecer dois idiomas iguais? Isso não compra nada para você. (Observe que isso não é específico para C ++. Aplica-se a qualquer idioma. Compare com idiomas naturais: aprender italiano não facilitará o aprendizado de outros idiomas. Facilitará o aprendizado de espanhol, francês ou português e o aprendizado de três idiomas. um deles facilitará o aprendizado do quarto, mas mesmo o aprendizado de todas as línguas românicas não ajudará nem um pouco a aprender finlandês, chinês, hindi, hebraico, árabe, pashtu, grego etc.)
Linguagens de programação implementam paradigmas. Peter van Roy colecionou um pôster dos 34 principais paradigmas de programação .
Os paradigmas, por sua vez, são compostos de conceitos. Esse cartaz lista cerca de 18 conceitos.
Todos os paradigmas (ou pelo menos os do pôster) são compostos a partir desses conceitos. Todas as linguagens implementam um ou mais paradigmas compostos por esses conceitos. Portanto, se você aprender esses conceitos, (em algum sentido) aprenderá todas as linguagens de programação ao mesmo tempo.
É claro que ainda existem muitas peculiaridades específicas do idioma (sintaxe entre elas). Além disso, esse pôster ignora completamente a digitação e, é claro, há uma diferença significativa entre um sistema do tipo System F <: ω , um sistema do tipo Scala ou um sistema dinâmico do tipo pato, sem falar em um sistema do tipo dependente à Idris, Agda, Coq, Guru ou ATS.
Eu diria que conhecer profundamente qualquer linguagem de programação ajudará a aprender outras pessoas, pelo menos outras línguas da mesma família. Por exemplo, o conhecimento de C ++ não ajudará muito com LISP ou Haskell, mas para linguagens procedurais orientadas a objetos, ajudará. Minha abordagem foi tentar aprender um idioma de cada uma das famílias diferentes (procedimental, funcional, orientada a objetos etc.) de idiomas, para que o conhecimento possa transitar para outros idiomas da família. Por outro lado, um profundo conhecimento da APL não ajudará em nada mais ...
Vou tomar uma interpretação diferente aqui.
C ++ é uma boa linguagem para aprender sobre estruturas de memória e dados, pois obriga você a pensar cuidadosamente sobre conceitos como propriedade de objetos e tempo de vida. E aprender sobre estruturas de memória e dados é uma das partes essenciais de qualquer currículo de engenharia de software.
Mas você precisa aprender sobre estruturas de dados. Se você apenas "aprender C ++", não ganhará muito, e isso pode atrasar o processo de aprendizado de outros idiomas no curto prazo.
Quando eu estava na faculdade, o Data Structures era um curso obrigatório para iniciantes, realizado após o CS1 (do qual pelo menos metade da turma havia saído). Foi difícil. O formato do curso foi basicamente "Aqui está uma estrutura de dados que você nunca viu antes [por exemplo, uma pilha esquerdista ]. Implemente-a em C ++ em uma semana e faça com que sua saída corresponda exatamente à nossa saída esperada, byte por byte, para que pode classificá-lo automaticamente. " Na próxima semana, você obteria uma nova estrutura de dados e uma nova atribuição. Provavelmente aprendi mais nesse curso do que em todos os outros cursos combinados.
Esse é o tipo de aprendizado que você precisa fazer para que o C ++ seja valioso.
Cada idioma que você aprende torna o próximo mais fácil de aprender, especialmente dentro do mesmo paradigma. Eles tomam emprestado um do outro pesadamente, e depois de um tempo você chega ao ponto em que um novo idioma se parece apenas com uma coleção de recursos de outros idiomas, com algumas reviravoltas únicas.
Não acho que o C ++ seja melhor ou pior do que qualquer outra linguagem a esse respeito. É um dos idiomas mais detalhados que conheço e dificulta algumas coisas fáceis na maioria dos outros idiomas, mas que não se traduz necessariamente em tornar o próximo idioma mais fácil de aprender . No entanto, geralmente torna o próximo idioma mais fácil de usar . Há uma diferença.
Não. Um conhecimento profundo de C , ou do subconjunto de C ++ que é "basicamente C", ajudará ao aprender outras linguagens, pelo menos ao imaginar o que suas implementações devem estar fazendo. Um profundo conhecimento de C ++ , por outro lado, será principalmente informações confusas ou irrelevantes ao aprender outras línguas; se você aprender a orientação a objetos do C ++ em mais do que um nível de superfície, por exemplo, ao passar para Perl / Python / Ruby, gastará mais tempo desaprendendo o que sabe do que usá-lo, já que os objetos nessas linguagens são implementados em uma maneira completamente diferentedo que em C ++. O mesmo se aplica em maior ou menor grau à maioria das outras linguagens e aos outros recursos de linguagem (por exemplo, modelos C ++ e polimorfismo Haskell são basicamente o mesmo recurso, com, novamente, implementações completamente diferentes). Portanto, o conhecimento profundo de C ++ será específico de C ++.