paint-brush
Por que você precisa aprender várias linguagens de programaçãopor@wagslane
3,410 leituras
3,410 leituras

Por que você precisa aprender várias linguagens de programação

por Lane Wagner5m2022/07/31
Read on Terminal Reader
Read this story w/o Javascript

Muito longo; Para ler

Boot.dev é um currículo de ciência da computação com bateria incluída no navegador. A maior parte do programa pode usar apenas JavaScript, Python e Go. O currículo completo para [Boot.dev] exigirá apenas o uso de cerca de 6 idiomas no total. Aprender vários idiomas remove sua visão de túnel e ajuda você a entender diferentes abordagens de programação. 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]

Company Mentioned

Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Por que você precisa aprender várias linguagens de programação
Lane Wagner HackerNoon profile picture

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.

Primeiro, algumas informações sobre o Boot.dev

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:


  • Ensinamos conceitos de ciência da computação e engenharia de software primeiro. Tecnologias específicas são apenas um mecanismo pelo qual ensinamos os conceitos.
  • Somos totalmente hands-on
  • Temos cursos orientados e projetos não orientados
  • Ensinamos tecnologias e linguagens modernas
  • Temos um currículo linear para que os alunos não precisem se preocupar com o que devem aprender a seguir
  • Nós gamificamos a experiência o máximo possível para manter os alunos motivados

Então, por que todo o currículo não pode ser ensinado em um único idioma?

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.


  • É difícil realmente ensinar bancos de dados sem SQL
  • É difícil ensinar programação funcional sem uma linguagem puramente funcional
  • É difícil ensinar OOP sem uma linguagem orientada a objetos
  • É difícil ensinar interfaces de hardware sem um montador
  • É difícil ensinar digitação sem uma linguagem fortemente tipada
  • É difícil ensinar web sem JavaScript
  • É difícil ensinar ML sem Python

Resumindo, temos 2 objetivos concorrentes:

  • Queremos ensinar todos os conceitos usando o mínimo de tecnologias possível
  • Queremos ensinar todos os conceitos usando tecnologias que ensinam melhor o conceito

Então, quantos idiomas você vai me ensinar?

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.

Aprender vários idiomas remove sua visão de túnel

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.

Serei um faz-tudo, mestre de ninguém?

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 .


Bem, você poderia pelo menos reduzir o número de linguagens de uso geral?

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.

Por que JavaScript?

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.

Por que Python?

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.

Porque ir?

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.

Perguntas? Comentários? Preocupações?

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/