Executando verificação de segurança...
1

C, Java e C# são linguagens compiladas enquanto Javascript e Python são linguagens interpretadas. Para responder o que isso significa é preciso saber o que é compilação e interpretação nesse contexto.

O Compilador

A compilação se divide em 4 etapas principais.

Análise léxica, ou tokenização, em que cada símbolo é transformado num token. Nessa etapa só se verifica se os tokens são válidos. Um exemplo de token inválido é o nome de uma variável com um número no começo.

Análise sintática ou parsing, em que a sequência de tokens é transformada em uma árvore sintática abstrata (AST). É onde se decide, por exemplo, que a multiplicação precisa ser executada antes da soma.

Análise semântica, em que os tipos gerados anteriormente são checados. Imagine que você esteja tentando dividir com algo que não é um número, é nessa fase que o erro é gerado.
A etapa final é a geração de código binário, instruções de máquina, onde a árvore é transformada na sequência de instruções que serão executadas pelo processador e as chamadas de função são transformadas em endereços de memória.

A etapa final é específica para cada arquitetura de computador, portanto isso levou à criação de uma etapa intermediária de geração de código intermediário. O código é parecido com as intruções de máquina de várias arquiteturas, mas ainda tem várias informações usadas para ser possível converter esse código em instruções de máquina para cada aquitetura diferente.

Nas linguagens compiladas, como C, Java e C#, o compilador só aceita arquivos inteiros.

O Interpretador

Um interpretador também implementa algumas dessas etapas, ele só não precisa gerar as instruções de máquina. No entanto o intepretador, por diversos motivos, é criado para interpretar e executar, não a partir da AST, mas de um código intermediário gerado na etapa final.

Mas se essa for a diferença, então Java e C# são linguagens interpretadas, pois elas precisam de uma máquina virtual para serem executadas, o que é basicamente o que o interpretador faz.

Ainda assim não chamamos essas linguagens de interpretadas. Por quê?

Linguagens interpretadas como Python e Javascript têm um interpretador interativo, onde é possível escrever o código uma linha por vez e o interpretador executa as etapas assim que possível e executa o código no mesmo contexto. As linguagens compiladas não têm isso.

A conclusão

A conclusão é que separar linguagens interpretadas de compiladas é uma diferenciação histórica e prática, por delinear as capacidades da linguagem e do ambiente de execução. Uma linguagem compilada pode ser executada sem o código fonte e uma linguagem interpretada geralmente tem um interpretador interativo.

Carregando publicação patrocinada...
1

Dependendo do nível do iniciante ele definitivamente vai ter um treco com essa explicação 😅.
Estou brincando, mas obrigado pela colaboração, ficou um conteúdo realmente muito completo e acabei entendendo um pouco mais sobre compiladores com ela, valeu!

1