Em primeiro lugar, as linguagens de script geralmente não são compiladas . Essa é uma grande parte do que geralmente os define como linguagens de script. Em geral, eles são "interpretados". O que isso significa essencialmente é que há outro idioma (que é compilado, mais frequentemente do que não) que está lendo o texto, em tempo real, e realizando operações, linha por linha.
A diferença entre este e outros idiomas é que os idiomas de script tendem a ser mais simples (geralmente chamados de "nível superior"). No entanto, eles também tendem a ser um pouco mais lentos, pois os compiladores tendem a otimizar muitos dos problemas que acompanham o "elemento humano" da codificação, e o binário resultante tende a ser menor e mais rápido de ler, para a máquina. Além disso, há menos sobrecarga de outro programa que precisa ser executado para ler o código que está sendo executado, com programas compilados.
Agora, você pode estar pensando: "Bem, eu entendo que é um pouco mais fácil, mas por que alguém desistiria de todo esse desempenho por um pouco mais de facilidade de uso?"
Você não ficaria sozinho nessa suposição; no entanto, o nível de facilidade que você tende a obter com as linguagens de script, dependendo do que está fazendo com elas, pode valer a pena o sacrifício no desempenho.
Basicamente: Nos casos em que a velocidade de desenvolvimento é mais importante que a velocidade do programa em execução, use uma linguagem de script. Existem muitas situações como essa no desenvolvimento de jogos. Especialmente ao lidar com coisas triviais, como manipulação de eventos de alto nível.
Edit: O motivo pelo qual lua tende a ser bastante popular no desenvolvimento de jogos é porque é indiscutivelmente uma das linguagens de script mais rápidas (se não as mais rápidas) disponíveis publicamente no mundo. No entanto, com essa velocidade extra, ele sacrificou parte de sua conveniência. Dito isto, ainda é sem dúvida mais conveniente do que trabalhar com C ou C ++ direto.
Edição importante: Após mais pesquisas, descobri que há muito mais controvérsia sobre a definição de uma linguagem de script (consulte a dicotomia de Ousterhout ). A principal crítica da definição de uma linguagem como uma "linguagem de script" é que ela não é significativa para a sintaxe nem a semântica da linguagem em que é interpretada ou compilada.
Embora as linguagens geralmente consideradas "linguagens de script" sejam geralmente interpretadas tradicionalmente, em vez de compiladas, o longo e curto de sua definição como "linguagens de script" depende realmente de uma combinação de como as pessoas as veem e como seus criadores as definiram.
De um modo geral, um idioma pode ser facilmente considerado um idioma de script (supondo que você concorde com a dicotomia de Ousterhout) se atender aos seguintes critérios (de acordo com o artigo vinculado acima):
- Eles são digitados dinamicamente
- Eles têm pouca ou nenhuma provisão para estruturas de dados complexas
- Os programas neles (scripts) são interpretados
Além disso, geralmente é aceito que uma linguagem é uma linguagem de script se for projetada para interagir e funcionar com outra linguagem de programação (geralmente uma que não é considerada uma linguagem de script).