Como escolho um novo idioma rapidamente, pois conheço vários outros? [fechadas]

14

Um tipo de pergunta que continua surgindo sobre os programadores é como aprender um idioma específico, desde que você conheça vários outros (geralmente através de muita experiência ou educação).

Em alguns casos, no entanto, pode ser necessário agilizar rapidamente o trabalho, o desenvolvimento pessoal ou até mesmo verificar uma nova plataforma quente.

Na sua experiência, quais estratégias gerais você usou para aprender rapidamente um novo idioma? Existem aspectos específicos de um idioma em que você tenta se concentrar ao começar a frio? Que tipos de recursos você considera úteis nesse processo?

user8
fonte
6
Eu diria apenas faça isso. A documentação oficial e o Google são os únicos recursos necessários.
Fosco 21/05
@Rein Algumas das respostas se sobrepõem, mas o objetivo desta pergunta é criar uma resposta canônica para aprender um idioma (qualquer idioma) da maneira mais rápida e eficiente possível. A outra pergunta é uma mistura de recomendações de livros, respostas semelhantes às fornecidas aqui e conselhos gerais sobre aprendizado sem pressa (ler imediatamente antes de dormir, ler a especificação do idioma, levar semanas para se familiarizar em um nível básico com algumas diferenças). línguas).
Não tenho certeza de quão útil é a pergunta feita. Se conheço várias linguagens de programação, provavelmente aprendi a aprender uma nova linguagem e, provavelmente, de maneira eficiente. Se não, como vou me beneficiar dessa pergunta?
David Thornley
1
@ David Eu conheço meia dúzia de idiomas, mas geralmente os aprendi depois de ter aulas ou depois de vários meses de trabalho. Mas se eu tiver que aprender rapidamente um idioma para um novo emprego, isso não me ajudará. Não duvido que as pessoas que aprenderam várias línguas tenham aprendido rapidamente: é isso que espero que as respostas contenham.
@ Mark Trapp: Obrigado, isso esclarece as coisas para mim.
David Thornley 23/05

Respostas:

18

Eu descobri que a melhor maneira de aprender um novo idioma é fazendo, não apenas lendo. E assim, quando quero (ou preciso) aprender um novo idioma, geralmente leio alguns capítulos de um livro de referência sobre sintaxe, mas depois mergulho direto e crio algo, em vez de ler e ler livro após livro.

Descobri que, à medida que surgem problemas e perguntas, são encontradas respostas (geralmente na internet). Eu também acho que é por isso que o treinamento no trabalho é tão valioso, porque você produz um produto de trabalho na maioria das vezes, mesmo que seja uma versão preliminar - e então você está aprendendo.

Encorajo as pessoas a apenas pensarem no que lhes interessa e a mergulhar na escrita de código ou na criação de formulários etc.

Mais tarde, depois de criar projeto após projeto, um bom livro de referência ensinará os detalhes que, neste momento, você entenderá com mais facilidade.

Além disso, os projetos geralmente começam menores e aumentam em complexidade - do aplicativo simples "Hello World" a um projeto pequeno e pouco útil, e a um aplicativo completo. Em termos de quais aspectos da linguagem eu me concentro, isso depende do uso aplicado da linguagem - nunca aprendo todas as APIs ou estruturas para iniciar (como no .NET, por exemplo). Isso levaria muito tempo. Aprendo a sintaxe principal e, em seguida, ramifico a partir daí, pesquisando cada extensão, conforme necessário. Com uma linguagem menos modular, como CSS ou XSLT, simplesmente aprendo as construções mais populares primeiro e adiciono outras conforme necessário.

jqueryrocks
fonte
Quando você diz "apenas faça", há aspectos específicos do idioma em que você se concentra ao mergulhar para garantir que você o pegue da maneira mais eficiente possível? Ou você continua fazendo projetos de amostra aleatória até ouvir um clique?
Bem, os projetos geralmente começam menores e aumentam em complexidade - do aplicativo simples "Hello World" a um projeto pequeno e pouco útil, e a um aplicativo completo. Em termos de quais aspectos da linguagem eu me concentro, isso depende do uso aplicado da linguagem - nunca aprendo todas as APIs ou estruturas para iniciar (como no .NET, por exemplo). Isso levaria muito tempo. Aprendo a sintaxe principal e, em seguida, ramifico a partir daí, pesquisando cada extensão, conforme necessário. Com uma linguagem menos modular, como CSS ou XSLT, simplesmente aprendo as construções mais populares primeiro e adiciono outras conforme necessário.
Jqueryrocks # 21/11
2
você pode adicionar isso de volta à sua resposta? Essa é uma ótima informação.
5

Isso funciona para mim:

  1. Leia sobre isso.
  2. Use-o.
  3. GOTO 1.

Para ler sobre isso , tento escolher "a" referência para o idioma. Por exemplo, "A linguagem de programação C". Ele precisa ser condensado, direto ao ponto, e construir seu conhecimento de forma incremental. Então eu li de capa a capa. Sou um leitor rápido e não me refiro a esta primeira leitura. Depois, voltarei e me referirei a pontos específicos enquanto estou tentando usar o idioma. Provavelmente gastarei mais tempo com exemplos de código dentro do livro.

A primeira coisa que você precisa é a sintaxe. Sem saber se é BEGIN ou {ou bloquear recuo, ou como você declara variáveis, você não pode escrever nada. O autor geralmente apresentará as partes mais importantes primeiro ou terá um tutorial que aborda o uso básico do idioma. É difícil fornecer diretrizes mais gerais, porque alguns idiomas são muito diferentes dos outros. A próxima coisa é ter uma idéia geral da linguagem, qual é a filosofia geral, como você aborda a solução de problemas dentro do contexto da linguagem.

Outra coisa a ter em mente é o conceito de "use ou perca". Se você não usa um idioma há algum tempo, levará algum tempo para voltar à velocidade (embora esse tempo fique mais curto com a experiência). Depois de obter a sintaxe do idioma, você precisará aprender sobre bibliotecas, etc.

Portanto, é um processo iterativo. Aprofundando a cada iteração. Nunca termina. Mesmo depois de usar um idioma por 20 anos, ainda há algo a aprender.

Guy Sirton
fonte
Você pode elaborar mais sobre o que você quer dizer com "leia sobre isso"? Em que você se concentra especificamente quando começa a ler sobre um novo idioma que deseja aprender?
@ Mark - veja minhas edições ... É isso que você está procurando?
Guy Sirton 21/05
5

Pegue um projeto do mundo real

Na minha opinião, é mais fácil aprender algo quando você realmente precisa aprender. Para mim, foi com javascript, onde arrisquei aceitar um grande projeto com prazo de dois meses. Era eu lá todos os dias e todas as noites tentando obter resultados para esse projeto freelancer, e por 1 mês e meio o projeto estava concluído.

Também aprendi acidentalmente algum SQL lá, depois terminei de aprendê-lo na faculdade e, adivinhem, também tive um tempo mais fácil.

Se você não quer arriscar ...

A chave real para o ponto anterior é resolver problemas do mundo real ... mas trabalho melhor sob estresse (gosto de estresse, acho divertido e posso ser danificado, então ...). Caso contrário, siga um projeto de código aberto que lhe interesse e use o idioma que você deseja aprender e tente contribuir. Se o seu código for ruim, você poderá receber algum feedback, dependendo da comunidade.

As chances são de que você fará progressos apenas estudando o código.

Obtenha toda a referência que puder

Isso inclui vários livros, documentação oficial e todas as referências que você pode obter. As chances são de que, dessa maneira, você saberá fazer a mesma coisa de maneiras diferentes.

Outras comunidades - como fóruns, listas de discussão e aqui - também contam como referência.

dukeofgaming
fonte
Eu acrescentaria "pegue um problema difícil do mundo real". Escolha algo que exija que você mergulhe profundamente no primeiro dia. Meu primeiro dia com o C #, eu estava descobrindo como carregar dlls dinamicamente, usar a reflexão para obter as classes e, a partir disso, uma lista de métodos. Aprendi muito hoje, nunca tendo usado nenhuma tecnologia .net antes.
Bryan Oakley
2

Existem várias maneiras de aprender um novo idioma, mas nem todas são igualmente eficientes. Eu achei essas três diretrizes que funcionam melhor para mim:

Faça um mapa do que você não conhece

Descubra, com antecedência, o que você precisará aprender. Encontre uma visão geral ou uma fonte geral de documentação que descreva o idioma em termos abstratos. A partir disso, você geralmente pode obter uma visão geral bastante completa sobre o que é o idioma. Use essa visão geral para destacar áreas que você não conhece, mas são consideradas essenciais para o idioma. A recursão da cauda é um conceito que você precisa aprender para realmente impressionar o idioma? Talvez você precise conhecer melhor seu regex, pois o idioma é especializado em manipulação de strings. Ou talvez você realmente precise usar sua álgebra, já que muitos dos conceitos na linguagem mapeiam diretamente a partir de conceitos algébricos.

Obtenha bons recursos para ajudá-lo a aprender o que não sabe

Você pode querer obter uma boa referência sobre fórmulas algébricas, ou talvez queira comprar " Javascript, as partes boas ". Para algumas curvas de aprendizado, este trabalho já foi parcialmente realizado. Se você está tentando aprender C # com base em Java (e vice-versa), há uma série de posts e sites de blog que mapeiam as diferenças e contêm referências / recursos para ajudá-lo a aprender.

Certifique-se de que os recursos não sejam apenas referências - inclua testes ou exercícios para ajudá-lo a avaliar se você aprendeu um conceito corretamente. Ler sobre recursão de cauda é uma coisa, mostrar como é implementada no seu idioma de escolha é outra.

Construa algo real

É quase impossível fazer qualquer tipo de aprendizado real sem um objetivo tangível em mente. Isto é especialmente verdade nas artes aplicadas - que é o que é o uso da linguagem de programação. Certifique-se de ter um objetivo real para o qual buscar - construir algo geralmente é a melhor escolha.

blueberryfields
fonte
1

Identifique o (s) Paradigma (s) de Programação

Eu costumo identificar quais são os principais paradigmas da linguagem. Penso nos problemas de maneira diferente, dependendo do paradigma.

Identifique os idiomas

Todos os idiomas têm expressões idiomáticas. Os idiomas variam em tamanho e escopo, desde a estrutura do código, até fragmentos de código específicos. Você deve sempre tentar usar os idiomas de um idioma.

Escreva código

Eu costumo escrever algum código funcional. Qualquer coisa, desde uma Peneira Primária até aplicativos da Web para brincar. Os problemas que escolho são geralmente específicos para o que pretendo usar o idioma.

dietbuddha
fonte
1

Apenas mergulhe !!

Considerando que você já sabe como programar e conhecer vários idiomas, exceto se esse idioma introduzir uma mudança de paradigma muito profunda, eu diria (simultaneamente):

  • encontre um projeto para você,
  • e no lado programa alguns quebra-cabeças

Aprender, praticar, aplicar (até ficar satisfeito)

Os clássicos 99 Prolog Puzzles (aqui, os 99 Puzzles em Scala ) ou o Project Euler geralmente são bons lugares para procurar pequenos quebra-cabeças para reimplementar. Ou espreite o StackOverflow e reescreva algumas boas respostas no idioma de destino, tentando não reescrever linha por linha, mas algo que capte a essência do seu novo idioma.

Aprenda com os intrigantes, leia blogs e ensaios ao lado para entender melhor o idioma e ter uma idéia das ferramentas e das guerras sagradas da sua nova comunidade, e escreva seu projeto de teste para aplicar seus novos conhecimentos e habilidades encontrados. veja em quais obstáculos você encontra.

Falando em Comunidade ...

Compartilhe e se exponha. (Não muito, no entanto.)

Talvez você também queira visitar um grupo de usuários local, encontrar amigos com quem codificar (para receber algumas críticas construtivas e não se prender a uma mentalidade específica) e se inscrever no canal assustador do IRC ou na lista de discussão em que eles soltam palavras estranhas sobre a AST árvores e escreva artigos filosóficos sobre como as mônadas não são mônadas e como uma vez que você conheceu uma garota estranha, não pode voltar .

haylem
fonte
0

Sei que isso parece ridículo, mas comece a codificar algo, mesmo que seja bobo, e use muito Google para coisas que seguem esse padrão:

como faço [algo de um idioma] em [outro idioma]

Se as palavras forem comuns, use literais entre aspas.

É uma pergunta bastante comum que praticamente as únicas vezes em que não encontro mais uma resposta é quando encontro uma página que explica por que ela não pode ser feita.

Conta
fonte
0

Como sugestão específica para usar apenas o idioma:

Fix Bugs

  1. Encontre um projeto de código aberto interessante no idioma de destino, de preferência um com um rastreador de erros público, desenvolvimento moderadamente ativo e um conjunto de testes decente.
  2. Escolha um bug para corrigir, de preferência um que o incomode quando você realmente usa o programa.
  3. Descubra por que o programa exibe o comportamento do buggy.
  4. Escreva testes e códigos para corrigir o problema.
  5. Envie um patch a montante.
  6. Revise seu patch até que os desenvolvedores do upstream estejam felizes.
  7. Volte para as etapas 1 ou 2.

Esse processo tende a ser mais gratificante do que escrever outro programa de brinquedos, mas muito mais fácil do que iniciar seu próprio projeto completo do zero. Você é exposto a alguns dos idiomas da linguagem em seu contexto natural e (com alguma sorte) à ideia de alguém sobre como é um bom código.

Por outro lado, também pode ser extremamente frustrante, principalmente se você escolher um bug desagradável ou se os desenvolvedores rejeitarem seu patch sem explicar adequadamente o porquê.

Eswald
fonte