Les contraintes de certains langages facilitent l'implémentation de code plus rapide (par exemple Fortran vs C et l'aliasing des pointeurs) qui est un compromis entre les performances et les possibilités prêtes à l'emploi).
Le langage n'est pas "optimisé" pour des tâches spécifiques, mais l'implémentation, les compilateurs et les contraintes qui facilitent la compréhension du code par le compilateur le font. La vraie affaire concerne des bibliothèques spécifiques, des algorithmes mis en œuvre pour accélérer le processus avec des commutateurs en fonction de la longueur du problème le rendent optimal.
Par exemple, la multiplication utilise divers cas (voir Multiplication GMP .
Lorsque le langage spécifie les opérations mathématiques de niveau supérieur, son implémentation est optimale (efficace dans ce cas), mais cela ne fait pas partie de la spécification du langage.
Veuillez jeter un œil au calcul du classement matriciel dans Matlab, Mathematica et Maple (je ne peux pas effectuer tous les tests moi-même pour le moment, mais ceux-ci sont cohérents avec mes tests). Tous ces langages (environnements) implémentent la même opération de niveau supérieur mais les détails d'implémentation diffèrent, ce qui donne des moments différents.
Lorsqu'une tâche spécifique à un domaine (ici aussi un langage spécifique à un domaine) est orientée vers des calculs particuliers, elle est améliorée et optimisée (au fil des ans) pour le public cible. Mais être optimal n'est pas toujours le cas. Par exemple, Perl a une longue histoire de gestion des chaînes, mais les PCRE (ici simplement les expressions régulières de Perl) ne sont pas les plus rapides existantes (et utilisent beaucoup de mémoire), mais sont extrêmement expressifs et puissants.
Les contraintes du langage font une différence dans le processus de compilation, l'aliasing de pointeur mentionné empêche la possibilité de réorganisation du code et impose le rechargement des variables.