Ja und nein.
Die Syntax hat verschiedene Aspekte.
- Lesbarkeit
- Ausdruckskraft
- Analysefähigkeit
Die Lesbarkeit wurde bereits erwähnt.
Expressivität ist ein interessanter Fall. Ich werde Funktionsübergabe als Beispiel verwenden, weil es eine Art Wendepunkt von semantischem / syntaktischem Schmerz ist.
Nehmen wir zum Beispiel C ++. Ich kann eine Funktion erster Ordnung folgendermaßen erstellen:
class funcClass
{
int operator()(int);
}
funcClass fun;
void run_func(funcClass fun)
{
fun();
}
Diese besondere Redewendung wird häufig in Stepanovs Elements of Programming verwendet .
Auf der anderen Seite kann ich es in Common Lisp mit so etwas wie imitieren diese :
(defun myfunc() )
(defun run_func(fun)
(fun))
Oder in Perl -
sub myfunc
{
}
sub run_func
{
my $func = shift;
$func->(); #syntax may be a little off.
}
Oder in Python -
def myfunc():
pass
def run_func(f):
f()
Diese haben im Wesentlichen den gleichen semantischen Inhalt, obwohl das C ++ - Beispiel einige Typmetadaten enthält. Welche Sprache drückt die Idee aus, eine Funktion höherer Ordnung am besten zu übergeben? Common Lisp macht kaum eine syntaktische Variation. In C ++ muss eine Klasse erstellt werden, um die Funktion auszuführen. Perl ist ziemlich unkompliziert, wenn es darum geht, ein gewisses Maß an Differenzierung vorzunehmen. Python auch.
Welcher Ansatz passt am besten zur Problemdomäne? Welcher Ansatz kann die Gedanken in Ihrem Kopf am besten mit der geringsten Impedanzinkongruenz ausdrücken?
Parsability ist - in meinen Augen - eine große Sache. Insbesondere beziehe ich mich auf die Fähigkeit der IDE, die Sprache zu analysieren und zu zerlegen, ohne Fehler zu machen. Neuformatierung ist nützlich. Durch Token getrennte Sprachen lassen sich in der Regel gut analysieren - Ruby / C / Pascal usw.
Bedenken Sie jedoch, dass große Systeme aller Art mit jeder ernsthaften Sprache erstellt wurden, um Probleme der realen Welt zu lösen. Obwohl Syntax ein Hindernis darstellt, um einige Dinge auszudrücken, handelt es sich um ein Umgehungsproblem. Turing Äquivalenz und das alles.