Eu tenho construído o Boot.dev como um projeto paralelo nos últimos dois anos e, recentemente, muitos novos alunos fizeram a mesma pergunta:
“Por que seu currículo de ciência da computação exige que eu aprenda mais de uma linguagem de programação?”
Parece que um bom número de alunos entra na plataforma com a opinião de que prefere “dominar totalmente um único idioma” do que “dividir seus esforços”. Embora eu planeje explicar isso melhor no próprio aplicativo daqui para frente, gostaria de escrever esta postagem no blog para fornecer uma explicação detalhada de por que você aprende vários idiomas ao longo de nosso programa de CS.
Para que você possa entender de onde venho, deixe-me explicar o que é Boot.dev e quais são seus objetivos como plataforma educacional.
Boot.dev é um currículo de ciência da computação com baterias incluídas no navegador. Temos algumas opiniões fortes sobre a melhor maneira de aprender a programar. Por exemplo:
Se você olhar o currículo completo de CS que planejamos em nosso roteiro público no Github , verá que é basicamente impossível. Existem certos conceitos que estão tão fortemente ligados a tecnologias específicas que não faz sentido tentar ensiná-los todos da mesma maneira. Vejamos alguns exemplos triviais.
Resumindo, temos 2 objetivos concorrentes:
Ao longo do meu curso tradicional de CS na universidade, usei mais de 12 linguagens de programação. Eu acho que é demais. Não quero ensinar línguas só por ensiná-las. É realmente um problema de otimização em que queremos introduzir o menor número possível de idiomas, enquanto ensinamos efetivamente todos os conceitos que queremos ensinar. Estou confiante de que o currículo completo do Boot.dev exigirá apenas o uso de cerca de 6 idiomas no total e que a maior parte do programa pode usar apenas JavaScript, Python e Go.
Há um benefício adicional em aprender algumas linguagens de programação diferentes sobre as quais ainda não falamos. Ao expor você a diferentes linguagens, você começará a ver alguns dos benefícios, desvantagens, semelhanças e diferenças entre as várias abordagens de programação .
Se você escrever apenas uma linguagem de programação, é fácil assumir que uma certa maneira de fazer as coisas é a “melhor maneira”, a “maneira certa” ou talvez até a “única maneira”.
Por exemplo, JavaScript e Go têm abordagens totalmente diferentes para o fluxo de erros:
// JavaScript try { doSomethingDangerous() } catch (err){ console.log(err) } // Go err := doSomethingDangerous() if err != nil { fmt.Println(err) }
Ao familiarizá-lo com vários idiomas, acredito firmemente que você terá uma compreensão mais profunda de cada tecnologia e quando poderá usar ferramentas diferentes.
Pessoalmente, acho que não. Eu realmente acho que se você se concentrasse em apenas uma única linguagem de programação desde o início de sua jornada de aprendizado até seu primeiro trabalho de codificação, você estaria em pior situação do que se tivesse passado algum tempo ampliando seus horizontes.
Algumas pessoas assumem que “aprender a codificar” é “aprender uma linguagem de programação”. Eles acham que se você aprender Python e depois quiser aprender JavaScript, estará começando do zero.
Isso não poderia estar mais longe da verdade.
Aprender sua segunda linguagem de programação levará 1/5 do tempo que levou para aprender a primeira, porque aproximadamente 80% dos conceitos que você aprendeu se aplicarão a ambas as linguagens. Depois de usar 3 ou 4 linguagens de codificação diferentes, você pode ver o código em quase qualquer idioma e entender o que ele diz. Você pode precisar pesquisar a sintaxe ocasionalmente, mas todo mundo faz isso de qualquer maneira .
Se você deu uma olhada no currículo, deve ter notado que escolhemos 3 idiomas para ensinar a maior parte do conteúdo:
Vamos tentar usar essas 3 linguagens o máximo que pudermos , apenas misturando outras tecnologias conforme exigido pelo assunto. Por exemplo, usar SQL quando falamos de bancos de dados relacionais.
Deixe-me explicar por que escolhemos esses três em particular.
Você realmente não pode fugir do JavaScript hoje em dia. É difícil aprender sobre programação de back-end (que é o que interessa à maioria de nossos alunos) sem primeiro entender por que existe um back-end. Um back-end existe apenas para alimentar um front-end, então faz sentido que precisássemos ensinar a você alguns fundamentos do front-end primeiro. Se você vai construir um front-end na web, é quase certo que ele usará JavaScript, então nossa mão é forçada neste.
Python sai do seu caminho, sintaticamente falando. Algoritmos e estruturas de dados são conceitos que os alunos geralmente acham mais difíceis de dominar, então fez sentido para nós escolher uma linguagem que permitisse que nossos alunos se concentrassem o máximo possível na lógica. O Python também se parece com o inglês em muitos aspectos, o que novamente torna mais fácil ver rapidamente o que um algoritmo em Python está fazendo. Além disso, temos conteúdo de IA e ML no final do currículo, portanto, é uma situação de dois pássaros na pedra em que podemos revisitar o Python nesse ponto sem que nossos alunos precisem aprender um idioma adicional.
Nosso grau de CS tem ênfase na programação de back -end e, pessoalmente, tive um tremendo sucesso com o Go como linguagem de back-end. Go tornará mais fácil ensinar coisas como simultaneidade, compiladores e sistemas distribuídos do que algumas das outras opções nas quais pensei. Acho que eventualmente teremos um curso de Rust que vai para um nível ainda mais baixo em termos de gerenciamento manual de memória, mas ainda não decidi sobre isso.
A melhor maneira de me contatar diretamente é juntando-se ao servidor Boot.dev Discord . Você também pode me @ no Twitter . Deixe-me saber o que você pensa da nossa abordagem!
Também publicado aqui https://blog.boot.dev/education/learn-multiple-programming-languages/