Premièrement, les langages de script ne sont généralement pas compilés . C'est une grande partie de ce qui les définit généralement comme des langages de script. Au lieu de cela, ils sont souvent "interprétés". Ce que cela signifie essentiellement qu'il existe une autre langue (qui est compilé, le plus souvent) qui est en train de lire dans le texte, en temps réel, et effectuer des opérations, ligne par ligne.
La différence entre cela et les autres langages réside dans le fait que les langages de script ont tendance à être plus simples (communément appelés "niveau supérieur"). Cependant, ils ont aussi tendance à être un peu plus lents, car les compilateurs ont tendance à optimiser bon nombre des problèmes liés à "l'élément humain" du codage, et le binaire résultant a tendance à être plus petit et plus rapide à lire, pour la machine. En outre, il existe moins de temps système qu'un autre programme devant être exécuté pour lire le code en cours d'exécution, avec les programmes compilés.
Maintenant, vous pensez peut-être, "Eh bien, je comprends que c'est un peu plus facile, mais pourquoi diable abandonnerait-il toute cette performance pour un peu de facilité d'utilisation?"
Vous ne seriez pas seul dans cette hypothèse; toutefois, le niveau de facilité que vous avez tendance à obtenir avec les langages de script, en fonction de ce que vous en faites, peut valoir le sacrifice sacrifié en termes de performances.
Fondamentalement: dans les cas où la vitesse de développement est plus importante que la vitesse d'exécution du programme, utilisez un langage de script. Il y a beaucoup de situations de ce genre dans le développement de jeux. Surtout lorsqu'il s'agit de choses triviales telles que la gestion d'événements de haut niveau.
Edit: La raison pour laquelle lua a tendance à être plutôt populaire dans le développement de jeux est parce qu’il est sans doute l’un des langages de script les plus rapides (si ce n’est le plus rapide) disponibles au monde sur la Terre. Cependant, avec cette vitesse supplémentaire, il a sacrifié une partie de sa commodité. Cela dit, il est sans doute plus pratique que de travailler directement en C ou C ++.
Important: après de plus amples recherches, j'ai constaté qu'il y avait beaucoup plus de controverse sur la définition d'un langage de script (voir Dichotomie de Ousterhout ). La critique principale de la définition d'un langage en tant que "langage de script" est qu'il n'est pas significatif pour la syntaxe ni pour la sémantique du langage qu'il est interprété ou compilé.
Alors que les langages généralement considérés comme des "langages de script" sont généralement interprétés plutôt que compilés, leur définition en tant que "langages de script" dépend en réalité de la façon dont les gens les voient et comment leurs créateurs les ont définis.
D'une manière générale, une langue peut facilement être considérée comme un langage de script (si vous êtes d'accord avec la dichotomie de Ousterhout) si elle remplit les critères suivants (selon l'article lié ci-dessus):
- Ils sont dactylographiés dynamiquement
- Ils ont peu ou pas de dispositions pour les structures de données complexes
- Les programmes en eux (scripts) sont interprétés
De plus, il est souvent admis qu'un langage est un langage de script s'il est conçu pour interagir et fonctionner aux côtés d'un autre langage de programmation (généralement un langage qui n'est pas considéré comme un langage de script).