I vincoli di alcune lingue rendono più semplice l'implementazione di un codice più veloce (ad esempio Fortran vs C e aliasing puntatori) che è un compromesso tra prestazioni e possibilità predefinite).
Il linguaggio non è "ottimizzato" per compiti specifici, ma lo rendono l'implementazione, i compilatori e i vincoli che rendono più semplice la comprensione del codice da parte del compilatore. Il vero affare riguarda librerie specifiche, gli algoritmi implementati per accelerare il processo con switch a seconda della lunghezza del problema lo rendono ottimale.
Ad esempio, la moltiplicazione utilizza vari casi (vedi moltiplicazione GMP .
Quando il linguaggio specifica le operazioni matematiche di livello superiore, la sua implementazione è ottimale (efficiente in questo caso), ma non fa parte delle specifiche del linguaggio.
Dai un'occhiata al calcolo del rango di matrice in Matlab, Mathematica e Maple (al momento non posso eseguire tutti i test da solo, ma questi sono coerenti con i miei test). Tutti questi linguaggi (ambienti) implementano la stessa operazione di livello superiore ma i dettagli di implementazione differiscono, il che fornisce varie volte.
Quando alcune attività specifiche del dominio (qui anche la lingua specifica del dominio) sono orientate a calcoli particolari, vengono migliorate e ottimizzate (nel corso degli anni) per il pubblico di destinazione. Ma essere ottimali non è sempre il caso. Ad esempio, Perl ha una lunga storia di gestione delle stringhe, ma i PCRE (qui semplicemente le espressioni regolari di Perl) non sono quelli più veloci esistenti (e usano molta memoria), ma sono estremamente espressivi e potenti.
I vincoli del linguaggio fanno la differenza nel processo di compilazione, l'aliasing puntatore menzionato impedisce la possibilità di riordinare il codice e impone il ricaricamento delle variabili.