Preciso entender os internos de uma linguagem de programação?


11

Eu sou iniciante em Python e gosto muito até agora. Uma pergunta que me vem à mente com frequência é se eu preciso entender e, portanto, aprender os Internos de uma linguagem de programação (como no meu caso, Python). Como você deve saber, o próprio Python está escrito em C.

Portanto, minha pergunta é: Qual a profundidade necessária para mergulhar em uma linguagem de programação para ser proficiente ou fluente nessa linguagem. Eu comparo essa pergunta com linguagens "naturais". Não conheço todos os detalhes da gramática na língua materna, mas sou capaz de me expressar sem problemas nessa língua. É quando digo que sou fluente em um idioma. Isso também se aplica a linguagens de programação?


4
Os internos se tornam importantes quando você precisa se preocupar com o desempenho.
Gort the Robot

7
Eu sei um pouco sobre os componentes internos do CPython e PyPy, mas 80% do tempo eles não são úteis (ou até prejudiciais, como perturbadores) para a minha programação em Python. Estou feliz por saber disso nos outros 20%, e não é apenas para desempenho, também para entender mensagens de erro estúpidas e evitar comportamentos não portáteis.


2
Não e não. Definitivamente não é uma duplicata de nenhum deles.

1
Depende do que você quer dizer com "internos", mas sei que não é incomum para programadores profissionais de C # e Java ter pelo menos algum entendimento da CLI ou da JVM.
user16764

Respostas:


8

Você não precisa saber nada sobre as partes internas de uma linguagem de programação para escrever programas nessa linguagem. No entanto, quanto melhor você entender o idioma, melhores serão seus programas.

  1. O conhecimento de estruturas e algoritmos de dados ajudará você a escolher as estruturas de dados mais apropriadas para sua tarefa específica. Algumas linguagens possuem essas estruturas de dados internamente.

  2. Compreender a "cultura" do idioma ajuda a escrever programas que seguem as "melhores práticas", facilitando sua compreensão, manutenção e desempenho.

  3. Escrever um compilador para esse idioma (ou um compilador para outro idioma nesse idioma) pode lhe dar uma compreensão profunda do idioma e melhorar seus programas além de ser meramente mediano.

  4. Ser proficiente em outros idiomas (especialmente os de um paradigma diferente) faz de você um programador melhor no seu idioma principal, porque você pode trazer essas habilidades e ferramentas para o seu idioma principal.

Como corolário, você não precisa saber nada sobre o seu computador para escrever programas nele. Mas saber como o computador funciona ajuda você a escrever programas para ele.


7

Não conheço todos os detalhes da gramática na língua materna, mas sou capaz de me expressar sem problemas nessa língua. É quando digo que sou fluente em um idioma. Isso também se aplica a linguagens de programação?

Simplificando, sim. Desde que você possa se expressar (e entender os outros) bem, será considerado fluente no idioma.

Dito isto, simplesmente ser fluente não é suficiente para alguns empregos. Certos tipos de autores, trabalhos que exigem habilidades de falar em público exemplares e alguns acadêmicos que se concentram no idioma precisam conhecê-lo "melhor do que fluente". Da mesma forma, algumas especialidades de programador exigem conhecimento dos aspectos internos da linguagem, mas para a maioria das pessoas que conhece a linguagem de programação equivalente a como pedir seu número ou pedir um cheeseburger é suficiente.


0

Eu definiria "proficiente" com um idioma como:

  • Entenda a maioria da sintaxe e o conhecimento suficiente para pesquisar quaisquer novos recursos encontrados no código de outras pessoas.
  • Conhecimento prático de qualquer biblioteca e / ou estrutura padrão e a capacidade de encontrar, ler e entender a documentação oficial sobre qualquer coisa nova que você precise usar.
  • Compreensão e capacidade de usar expressões idiomáticas comuns e convenções de nomenclatura para o idioma.

Observe que o modo como o idioma funciona não está nesta lista, mas há muita "capacidade de aprender". Ter pelo menos uma compreensão superficial dos internos pode ser útil, mas não é necessário ser proficiente. No entanto, saber o suficiente sobre eles para entender todas as referências na documentação que está lendo é uma ótima idéia.

Por exemplo: eu sei que o VB.NET e o C # são compilados no IL (Intermediate Language) do .NET, que é compilado para a estrutura de destino. Não sei muito sobre IL, mas sei o suficiente para reconhecê-la quando a vejo e entendo de um modo geral como ela lida com certas coisas. Eu me considero proficiente em C #, mas não no VB.NET, mesmo que os "internos" sejam os mesmos, e meu entendimento deles não seja profundo.

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.