1
resposta

Linguagem compilada vs Análise estática

O JS não é uma linguagem compilada, mas que erros uma linguagem compilada aponta antes de rodar o programa que o "VSCode" ou "Eslinter" não mostram? Um dos erros é o tipo eu acho, mas tem outros?

1 resposta

Olá, Luidi! Como vai?

As linguagens compiladas, como C++ ou Java, realizam uma série de verificações antes de executar o código, durante o processo de compilação. Vou listar alguns tipos de erros que podem ser detectados por uma linguagem compilada e que, às vezes, não são capturados por ferramentas de análise estática:

  1. Erros de Tipagem: Como você mencionou, linguagens compiladas verificam se os tipos de dados estão sendo usados corretamente. Por exemplo, tentar atribuir uma string a uma variável que espera um número resultaria em um erro de compilação.

  2. Erros de Sintaxe: Embora o ESLint e o VSCode possam detectar muitos erros de sintaxe, o compilador pode ser mais rigoroso em verificar a conformidade do código com a gramática da linguagem.

  3. Erros de Linkagem: Durante a compilação, o linker verifica se todas as referências a funções e variáveis externas são resolvidas corretamente. Isso não é algo que o ESLint ou o VSCode tipicamente fariam.

  4. Alocação de Memória: Em linguagens como C++, o compilador pode detectar problemas potenciais relacionados à alocação de memória, como tentativas de acessar memória que não foi alocada.

  5. Erros de Otimização: Compiladores podem identificar e otimizar partes do código que são ineficientes, algo que uma ferramenta de análise estática não faz.

No entanto, vale lembrar que ferramentas como o ESLint são extremamente úteis para garantir a qualidade do código JavaScript, ajudando a identificar problemas de estilo, possíveis bugs e más práticas de programação. Além disso, o uso de TypeScript, que é um superconjunto do JavaScript, pode trazer muitos dos benefícios das linguagens compiladas, como a verificação de tipos.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado