Hintergrund
Auf der Wikipedia-Seite zu Syntactic Sugar heißt es:
In der Informatik ist syntaktischer Zucker eine Syntax in einer Programmiersprache, die die Lesbarkeit und Ausdrucksfähigkeit der Dinge verbessern soll. Es macht die Sprache für den Menschen "süßer": Dinge können klarer, prägnanter oder in einem alternativen Stil ausgedrückt werden, den manche bevorzugen.
Ich verstehe nicht wirklich, was der Unterschied zwischen Syntactic Sugar und Syntax ist.
Ich weiß den Punkt zu schätzen, dass die zuckerhaltige Version klarer und prägnanter sein kann und vielleicht ein wenig Dampf aus der Kesselplatte macht. Aber ich bin der Meinung, dass die gesamte Syntax im Wesentlichen darauf abzielt, eine Abstraktion darüber zu bilden, worauf der Code kompiliert wird.
Aus derselben Wikipedia-Seite:
Sprachprozessoren, einschließlich Compiler, statische Analysatoren und dergleichen, erweitern häufig gezuckerte Konstrukte vor der Verarbeitung in grundlegendere Konstrukte, ein Prozess, der manchmal als "Desugaring" bezeichnet wird.
Wenn ich "oft" in dieser Aussage als "immer" bezeichne: Wenn der Unterschied wäre, ob der Compiler die Syntax "desugariert", bevor er zu einer nächsten Stufe übergeht, wie könnte ein Codierer, der die Innereien nicht kennt, dies tun? des Compilers wissen (oder kümmern), was Sugar'd Syntax ist oder nicht?
Eine sehr verwandte Frage auf dieser Seite "Rigorose Definition von syntaktischem Zucker?" hat eine Antwort, die beginnt:
Ich glaube nicht, dass Sie eine Definition für syntaktischen Zucker haben können, da der Ausdruck BS lautet und wahrscheinlich von Leuten verwendet wird, die über "echte Programmierer" sprechen, die "echte Tools" auf "echten Betriebssystemen" verwenden.
Was könnte für mich bedeuten, dass es vielleicht keinen großen Unterschied zum Kodierer gibt, der die Sprache verwendet? Vielleicht ist der Unterschied nur für den Compiler-Schreiber erkennbar? Obwohl es Fälle geben kann, in denen es hilfreich ist, wenn der Programmierer die Sprache verwendet, um zu wissen, was sich unter der Haube des Syntaktischen Zuckers verbirgt. (Aber vielleicht neigt in der Realität ein Diskurs zu diesem Thema dazu, den Begriff als Flammenköder zu verwenden?)
Das Herzstück der Frage
Also ... die kurze Version der Frage:
- Gibt es einen echten Unterschied zwischen Syntax und Syntactic Sugar?
- Wem ist es wichtig?
Extra Denkanstoß
Bonus zum Thema Widerspruch:
Auf der Wikipedia-Seite wird ein Beispiel gegeben:
Zum Beispiel ist in der C-Sprache die
a[i]
Notation syntaktischer Zucker für*(a + i)
Während eine andere Antwort auf die oben verlinkte Frage über das gleiche Beispiel spricht:
Nun überlegen Sie
a[i] == *(a + i)
. Denken Sie an ein C-Programm, das Arrays in irgendeiner Weise inhaltlich verwendet.
Und fasst zusammen, dass:
Die
[]
Notation erleichtert diese Abstraktion. Es ist kein syntaktischer Zucker.
Die gegenteilige Schlussfolgerung für das gleiche Beispiel!