Em que ponto posso dizer que aprendi uma língua?

67

Nos meus poucos anos de programação, eu brinquei com tudo, desde Ruby até C ++. Eu fiz tudo, desde aprender a sintaxe básica (Ruby) até completar vários projetos principais (para mim) que estenderam minhas habilidades com a linguagem. Dada essa variedade (e o fato de que realmente aprender uma língua nunca pára), quando posso dizer que conheço (ou aprendi) uma linguagem?

    
por SomeKittens 29.06.2012 / 16:05
fonte

9 respostas

70

Em que ponto você pode dizer que "aprendeu" uma língua como o inglês ou o francês? Acho que a maioria das pessoas aceitaria que você aprendeu um idioma quando puder usá-lo para se comunicar . Você não precisa conhecer cada palavra ou entender cada idioma, mas deve conhecer a maior parte do subconjunto (bastante pequeno) da linguagem que as pessoas usam na conversa diária. Tendo "aprendido" uma língua nessa medida, você pode continuar a aprender mais enquanto usa a linguagem diariamente e se expõe a mais e mais dela. Quando você morrer, ainda não saberá tudo o que há para saber sobre o idioma, mas ninguém dirá que você nunca "aprendeu" o idioma.

Então, acho que é com linguagens de computador. Você pode dizer que "conhece" uma linguagem como C ++ ou Ruby quando pode escrever programas úteis nela. Se você precisar quantificar o grau em que conhece o idioma, use os mesmos termos que você usaria para uma linguagem humana. Diga "Eu sei um pouco C ++" ou "Eu sei conversacional C ++" ou "Sou fluente em C ++" para significar que você sabe apenas o suficiente para fazer as coisas úteis, ou que você é um especialista, respectivamente.

    
por 29.06.2012 / 16:34
fonte
25

Depende de quem está perguntando

A pessoa que pergunta provavelmente tem uma certa ideia de qual nível de habilidade é esperado de alguém que diz que "aprendeu uma língua".

Basicamente, eu encontrei duas escalas arquetípicas, pelas quais as pessoas julgam a resposta à pergunta "você aprendeu X?"

Para a maioria dos nerds, é uma questão capciosa eliminar os posers Isso já é demonstrado pelas outras respostas à sua pergunta;). Se você disser que aprendeu, você falha em ver o escopo da tarefa, que é implicitamente "perfeição", e, muito pior: você falha em humildade.

Para a maioria dos chefes, você "aprendeu", se puder resolver seus problemas , um critério muitas vezes já encontrado se seu código for compilado. Responder a sua pergunta de forma humilde levará a tarefa de atribuir a um poser que também pode ser um parente.

Então, qual é o seu público?

    
por 29.06.2012 / 17:31
fonte
17

Eu acho que as pessoas estão se concentrando na finalidade da palavra "aprendido" sendo perfeito, significa que você está aprendendo. E como todos notaram, as linguagens de programação são entidades vivas , assim como as linguagens faladas. Por exemplo, alguém que tivesse domínio completo de C # 2 olharia para C # 3 com LINQ, Lambdas, var palavra-chave, inicializadores de objeto / coleção e métodos de extensão e descobriria que muito mudou em relação ao que ele aprendeu na versão anterior. O mesmo ocorre com C # 4 com await , async palavras-chave e outras novas construções de linguagem.

E estamos falando apenas de sintaxe aqui. Esquecemos que a maioria dos idiomas está emparelhada com um framework . O C # possui o framework .NET, o Java possui seu próprio framework, assim como o Ruby, C ++, PHP e PERL. Pense na estrutura de uma linguagem como o vocabulário e a própria linguagem é apenas sintaxe. Conhecer o idioma significa que você sabe como fazer uma frase no idioma. Conhecer o quadro significa que você pode se expressar bem no idioma. Finalmente, uma vez que você conhece a sintaxe e o vocabulário, você precisa aprender os idiomas para escrever código como um "falante nativo".

Eu diria que existem vários níveis de aprendizado.

  1. Hello World (você pode escrever os programas mais rudimentares.)
  2. Proficiente (você pode escrever programas básicos, mas precisa consultar a ajuda online regularmente)
  3. Fluente (você pode escrever programas avançados com alguma referência necessária).
  4. Falante nativo (você pode escrever programas avançados com o mínimo de ajuda on-line, seu código é indistinguível do código de outro falante nativo).
por 29.06.2012 / 17:16
fonte
7

Você raramente pode dizer que aprendeu um idioma. Isso significa que você acabou de aprender sobre isso, o que é ... tolice.

Dizer que você sabe que uma linguagem é boa quando você pode escrever um código que não esteja violando idiomas no idioma (talvez depois de uma semana evitando o conhecimento) sem se referir a uma referência de sintaxe.

    
por 29.06.2012 / 16:32
fonte
3

Este é mais um fator baseado em opinião. Em todos os termos técnicos, "Aprendizado" significaria ter um conhecimento completo de, como em você seria esperado para saber tudo do idioma.

No entanto, no mundo da programação, acredito que seja mais sobre se você pode programar fluentemente na linguagem para concluir um objetivo / tarefa. Isso também significa, provavelmente, se você está confortável com o idioma. Claro que você poderia ir lá e conseguir um diploma depois de anos e anos de faculdade, mas isso é só para ser notado? Você define quando pode dizer que aprendeu uma língua.

    
por 29.06.2012 / 16:17
fonte
2

Quando você começa a perceber suas falhas. Uma vez que você começa a aprender uma língua, você normalmente ainda está ocupado aprendendo a fazer coisas ou está muito envolvido nela para perceber onde ela falha (claro, isso é a menos que você comece a aprender de um ponto de vista negativo apenas para ver quão pior é comparado ao seu idioma favorito até agora). Eu diria que você não conhece verdadeiramente uma língua até que esteja ciente das áreas onde ela falha.

    
por 01.07.2012 / 01:40
fonte
2

Minha resposta pessoal para isso é quando

  1. Eu sei o básico para escrever um programa simples em nível de produção.
  2. Passei pelo menos 3 horas seguidas resolvendo um problema que parecia simples, mas  não foi.

A partir daí, eu não chamaria isso de aprendizado, mas de maestria.

    
por 29.06.2012 / 17:12
fonte
1

No ponto em que seu aplicativo ou componente pode ler mensagens, ou seja, a lei de Zawinski , que afirma:

“Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” Coined by Jamie Zawinski (who called it the “Law of Software Envelopment”) to express his belief that all truly useful programs experience pressure to evolve into toolkits and application platforms (the mailer thing, he says, is just a side effect of that).

Isso foi atualizado quando o RSS se tornou popular para "... pode ler feeds RSS" e provavelmente poderia ser atualizado hoje para "... pode ler feeds do Twitter". ; -)

    
por 01.07.2012 / 15:05
fonte
0

Acho que você aprendeu um idioma quando não o vê. Você não vê os ciclos e acessos de dados, mas o fluxo de trabalho do algoritmo.

Você não pratica truques com passagem de parâmetros e processamento de matrizes, macros mágicas. Você não pensa no seu código como um material de autopromoção para mostrar aos seus amigos e professores, mas para expressar sua compreensão de um problema e sua vontade para o computador da maneira mais legível.

Você tem hábitos que o ajudam a evitar muitos erros apenas seguindo-os, como: use {} blocos de código e () em expressões mesmo se tiver certeza absoluta de que "será apenas uma linha" ou "não sou enganar e saber a ordem de precedência do operador ".

Você para de contar quantas classes, padrões e APIs de framework você conhece. Isto é o que intellisense, as referências e tutoriais, e o Google é para. Mas quando você olha para um problema, você imediatamente sabe quais partes ele pode dividir e com quais ferramentas e algoritmos você os resolverá.

O que você faz funciona , é elegante e pequeno . Você gosta de codificar e encontrar facilmente seus bugs. Sim, os mestres também fazem bugs porque são humanos - mas eles os encontram rapidamente porque a estrutura de código os leva ao lugar certo.

E finalmente perceba: você aprendeu a pensar, analisar e resolver problemas; em comparação com eles, a linguagem atual é secundária, apenas a caixa atual de regras e ferramentas.

    
por 13.07.2012 / 23:37
fonte