É cedo demais para aprender um novo idioma? [fechadas]


11

Contexto pessoal: Eu tenho aprendido C ++ formalmente nos últimos 6 meses na universidade. Antes disso, eu me envolvi em JavaScript por um ano. Agora, estou pensando em aprender Python durante um mês fora da escola.

Ao dividir meu foco no início do processo de aprendizado, estou degradando a eficiência do meu aprendizado? Devo passar o mês de folga continuando em C ++? Ou nunca é cedo para aprender um novo idioma?


6
Se você entende de programação em geral, aprender novos idiomas deve ajudá-lo a se tornar um programador melhor. Se você é iniciante em programação e não entendeu coisas como controle de fluxo, tipos de dados, funções / métodos etc., esperaria aprender outras línguas.
The Muffin Man

Estou bastante confortável em C ++ com tudo o que você mencionou.
Antecipação

1
Vou colocar sua pergunta em perspectiva. Nos primeiros 6 meses de uma universidade, eu já havia sido apresentado a 5 linguagens de programação diferentes. Montagem (eu esqueço exatamente a plataforma Moto), C, C ++, Visual Basic 6 e Java. Mais tarde, aprendi Basic, C #, Visual Basic .NET, Assembly x86. Após a faculdade, aprendi pelo menos 5 linguagens de programação adicionais nos primeiros 2 anos.
precisa saber é o seguinte

2
Se você pode realizar várias tarefas ao mesmo tempo, priorizar e ter uma abordagem disciplinada ao aprendizado, vá em frente e aprenda um segundo idioma. Geralmente é melhor se concentrar e dominar o primeiro idioma. No entanto, também é importante aprender vários paradigmas de programação. Leia a seção de programação dos seguintes links para ver o que quero dizer: O que cada computador principal da ciência deve saber e competência Matrix do programador
Anthony

Respostas:


8

Minha experiência com o Python é limitada a algum código de jogo apenas um pouco mais complexo que o hello world, portanto, essa não será uma resposta muito profunda para o python especificamente, mas posso lhe dizer:

As diferenças entre os idiomas estão nos detalhes, como a sintaxe e determinados idiomas específicos serão diferentes (como as diferentes formas de tratamento dos erros, recursos de E / S e como os compiladores convertem sua entrada em algo executável), mas C ++ e Python oferecem o mesmo paradigmas, para que a solução de problemas possa ser feita da mesma maneira nos dois idiomas. Tanto o C ++ quanto o Python são imperativos e orientados a objetos; portanto, você provavelmente entenderá o python rapidamente se estiver familiarizado com o C ++ depois de dominar a nova sintaxe usando técnicas de solução de problemas que você aprendeu com o C ++. Se você quiser, também pode usar o Python para programação funcional, mas nunca toquei nessa parte, por isso não posso falar muito sobre isso.

É muito cedo? Eu realmente não posso contar da sua história em um definitivo sim ou não. Você já está confiante o suficiente para escrever aplicativos completos (GUI) com C ++? (ou seja, use bibliotecas, recursos de linguagem mais complexos, como genéricos e / ou modelos, etc.) Acho que aprender um novo paradigma de idioma é muito mais difícil do que aprender um novo idioma na mesma família de paradigmas. Quando você entra em um novo território de paradigma, precisará gastar muito mais tempo para ter uma boa idéia de como resolver problemas com esse paradigma. Entre as linguagens OO, existem diferenças quanto ao tratamento da herança e como os dados são transmitidos na memória quando você passa um parâmetro / argumento para uma função que afeta o desempenho. Mas, para começar, essas são geralmente de menor preocupação a princípio.

Meu palpite é que, se você está confiante o suficiente com C ++ para fazer algo mais do que o olá mundo de uma maneira elegante, você está pronto para o lançamento. O aprendizado superficial de muitos idiomas o ajudará a entender exemplos de código, independentemente do idioma usado, mas a criação de seu próprio código requer um pouco mais de compreensão de como os idiomas funcionam e como eles diferem entre si.

PS: Quando eu quiser aprender a usar um novo idioma superficialmente, geralmente tentarei o seguinte para entender a sintaxe do idioma e o funcionamento superficial:

  • Olá mundo (Texto na tela)
  • Olá, mundo, gravado em um arquivo (ensina o básico sobre E / S de arquivo para esse idioma e muitas vezes também outros tipos de E / S)
  • Fazendo alguns cálculos padrão com bases diferentes (10, hex, octal), número inteiro e ponto flutuante. (ensina sobre truncamento e notação de número)
  • Tente usar alguma biblioteca gráfica para mostrar olá mundo em um diálogo sofisticado. (ensina como usar bibliotecas e código externo)

As observações finais no último parágrafo são excelentes. Embora eu não esteja totalmente satisfeito com os aplicativos em C ++, aprecio seu argumento sobre a ampliação do escopo do que estou familiarizado, mesmo que seja apenas superficial.
Antecipação

6

Bem, claro que é.

Sem dúvida, às vezes é muito cedo para aprender uma nova linguagem de programação.

O caso mais simples é se uma linguagem el-stinko surgir e antes que alguém aponte sua inadequação, aprendendo que você danifica seu cérebro. Um casal que vem à mente inclui BASIC, FORTH e APL.

Para um caso mais complicado, um dos grandes cientistas da computação descreveu esse problema, que afirmou muito brevemente: a prática se torna permanente, e há muitas disciplinas que devem ser aprendidas antes de se aprender idiomas de computador, para que o idioma não distorça o entendimento mais fundamental. . Nas suas palavras:

As ferramentas que usamos têm uma influência profunda e desonesta em nossos hábitos de pensamento e, portanto, em nossas habilidades de pensamento.

O oponente de apenas mergulhar na programação é chamado Edsger Dijkstra e ele teve uma carreira muito distinta. Ele recebeu o Prêmio ACM Turing com a seguinte citação:

Por contribuições fundamentais à programação como um desafio intelectual elevado; por insistência eloquente e demonstração prática de que os programas devem ser compostos corretamente, não apenas depurados para correção; para esclarecer a percepção dos problemas nas bases do design do programa.

O artigo em que ele descreve o aprendizado prematuro de linguagens de programação é:

"Sobre a crueldade de ensinar realmente a ciência da computação" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Além disso, por favor, não me chame, sou apenas o mensageiro.


"Comecei com o BASIC e fiquei com cicatrizes por toda a vida" - isso não desmente o seu argumento? Se você tivesse sido apresentado a outras linguagens de programação desde o início, o BASIC não teria um impacto tão forte?
tdammers

Acho que precisava de um emoticon. Se ajudar, eu apaguei essa frase.
Página

3

É cedo demais para aprender um novo idioma?

Eu diria que sim. Se você ainda está pensando no próprio conceito de que o computador pode realmente fazer o que você manda, então aprender um segundo idioma provavelmente o confundirá.

Mas se você ultrapassou o ponto em que percebe que o computador faz exatamente o que você manda, não importa o quão estúpido seja, então as chances são de que você tenha uma compreensão suficientemente razoável do seu primeiro idioma, olhando para um segundo (e terceiro). !) O idioma não quebra seu foco.


2

Você não pode fazer as duas coisas ?? Eu faria um projeto em C ++ e aprenderia bits do Python (só porque é incrível), você poderia resolver problemas no ProjectEuler.net usando Python

Em geral, acho uma má idéia aprender um idioma, deixá-lo e começar a aprender um novo. Deve-se ser flexível trabalhando com diferentes paradigmas nos estágios iniciais. Mas é exatamente isso que eu penso.


ProjectEuler.net parece incrível! Obrigado pela recomendação.
Antecipação

2

Para um programador praticante, diria sem reservas que aprender um novo idioma quase nunca é uma má idéia. Para um estudante universitário, eu recomendaria um pouco de cautela, dependendo de quais aulas estão chegando. O motivo é que, em um exame escolar, você frequentemente recita detalhes do idioma sem o benefício de um ambiente de compilação / execução que apontará facilmente seus erros.

Especialmente quando você tem apenas alguns meses de experiência, é muito fácil misturar os detalhes em sua mente. Se você se preocupa com suas notas e está fazendo uma aula com exames como esse, eu seria cuidadoso. No mundo real, isso não é uma preocupação.

edit : eu disse originalmente a sintaxe, mas os detalhes não sintáticos são tão importantes para os professores, e existem muito mais.


Se, como aluno, você não consegue se lembrar das diferenças entre sintaxe entre os idiomas, você tem um problema. Você nem sempre terá um compilador para verificar sua sintaxe; existem algumas situações muito reais nesse campo, nas quais é necessário recuperar a sintaxe no local.
Ramhound 22/08/12

Não estou dizendo que é impossível lembrar, apenas que isso torna muito mais difícil para um iniciante. Grandes diferenças sintáticas são bastante fáceis, mas os professores podem ser irritantemente exigentes quanto a detalhes como append()vs. push_back()de uma lista, algo que até mesmo programadores experientes precisam procurar se não usam um determinado recurso em um determinado idioma há algum tempo. Ser capaz de recuperar a sintaxe no local, sem dúvida, ajuda, mas para a grande maioria dos trabalhos, isso nunca é necessário .
Karl Bielefeldt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.