Compilar, que dizer juntar tudo em uma coisa só. Para compilar alguns passos são necessários, como: Análise léxica e semântica, pré-processamento... Feito isso, não é necessário fazer mais todo esse processo, a não ser que o código seja alterado. Para executar em outra plataforma, é necessário traduzir em cada uma. Compiladores transformam todo o código-fonte em código de máquina.
São elas: Delphi, Rust, C, C++, Swift.
O interpretadores traduzem e executam o código fonte, não necessitam gerar outro arquivo. Ou seja, traduzem em tempo real linha por linha. Assim, é mais fácil detectar erros, mas perde em performance. Porém, podem ser executados em qualquer máquina que tenha o interpretador.
São elas: PHP, JS, Python, Lua, Ruby.
JIT é um termo para designar uma linguagem que faz uso de um compilador e um interpretador. Uma linguagem JIT transforma o código fonte em um intermediário que, então, é executado pelo interpretador. JAVA pega um código fonte, transforma em bytecode e usa o JVM como interpretador. Assim, ele tem a otimização e confiabilidade do compilador e a flexibilidade do interpretador.
JIT: .NET (VB.NET e C#) e JAVA
Pelo que entendi, não existe uma "linguagem compilada" ou "linguagem interpretada" de fato, todas transitam entre os dois processos. E não tem uma melhor do que a outra, apenas atendem as necessidades do projeto.
Espero ter entendido. É um assunto novo para mim e bem interessante.