Nesta aula, aprendi que podem existir dois tipos de linguagem: compiladas, interpretadas e as linguagens que tanto compilam quanto interpretam.
Em uma linguagem compilada, o tradutor busca traduzir o código fonte inteiro para o código de máquina, o que pode tornar o tempo de execução um pouco mais demorado porém é capaz de identificar erros para serem corrigidos antes de sua execução. Uma linguagem compilada também serve para programas robustos, grandes, e normalmente só podem ser executados em um tipo de máquina ou uma classe de máquinas específica. Exemplos de linguagem compilada são: C, C++, Go, Swift, Delphi e Rust.
Em uma linguagem interpretada, o tradutor traduz o código fonte para o código de máquina em tempo real, na hora da execução, o que pode tornar o tempo de execução mais ágil porém os erros só serão identificados na hora da execução. Uma linguagem interpretada também serve para programas que rodarão em múltiplos tipos de máquinas diferentes. Exemplos de linguagem interpretada são: Js, Phyton, Matlab, PHP, Ruby, Pearl e List.
Há também o caso das linguagens que tanto compilam quanto interpretam, juntando os dois mundos, como o caso do Java por exemplo, onde o código fonte primeiramente é compilado em um arquivo .class (byte code) e em seguida interpretado pela máquina a partir de um interpretador chamado JVM (Máquina Virtual Java). Isso é muito útil, pois permite que tipos de máquinas diferentes possam ler o mesmo programa, basta que essas máquinas tenham suporte ao Java, assim nós eliminamos a limitação das linguagens que apenas compilam, onde elas são apenas capazes de rodar em um tipo ou classe específica de máquinas. Outros exemplos desse tipo de linguagem são JavaScript e Phyton.