Die Einschränkungen einiger Sprachen erleichtern die Implementierung von schnellerem Code (z. B. Fortran vs C und das Aliasing von Zeigern), was einen Kompromiss zwischen sofortiger Leistung und Möglichkeiten darstellt.
Die Sprache ist nicht für bestimmte Aufgaben "optimiert", aber die Implementierung, Compiler und Einschränkungen, die es dem Compiler erleichtern, den Code zu verstehen, machen es so. Im Kern geht es um spezifische Bibliotheken. Algorithmen, die je nach Problemlänge eingesetzt werden, um den Prozess mit Switches zu beschleunigen, machen ihn optimal.
Die Multiplikation verwendet zum Beispiel verschiedene Fälle (siehe GMP-Multiplikation .
Wenn die Sprache die übergeordneten mathematischen Operationen angibt, ist ihre Implementierung optimal (in diesem Fall effizient), dies ist jedoch nicht der Teil der Sprachspezifikation.
Bitte werfen Sie einen Blick auf die Matrixrangberechnung in Matlab, Mathematica und Maple (ich kann im Moment nicht alle Tests selbst durchführen, aber diese stimmen mit meinen Tests überein). Alle diese Sprachen (Umgebungen) implementieren dieselbe Operation auf höherer Ebene, aber die Implementierungsdetails unterscheiden sich, was verschiedene Zeiten ergibt.
Wenn sich eine domänenspezifische Aufgabe (hier auch domänenspezifische Sprache) an bestimmten Berechnungen orientiert, werden sie (im Laufe der Jahre) für die Zielgruppe verbessert und optimiert. Aber optimal zu sein, ist nicht immer der Fall. Zum Beispiel hat Perl eine lange Geschichte im Umgang mit Strings, aber die PCRE (hier einfach Perls reguläre Ausdrücke) sind nicht die schnellsten existierenden (und verbrauchen viel Speicher), sondern sind extrem ausdrucksstark und leistungsstark.
Die Einschränkungen der Sprache machen einen Unterschied im Kompilierungsprozess, das erwähnte Pointer-Aliasing verhindert die Möglichkeit der Code-Neuordnung und erzwingt das Neuladen von Variablen.