Syntaktischer Zucker
Syntaktischer Zucker sind Syntaxerweiterungen in Programmiersprachen, die der Vereinfachung von Schreibweisen dienen.<ref>RWTH Aachen: syntactic sugar. Abgerufen am 9. Oktober 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Diese Erweiterungen sind alternative Schreibweisen, die aber nicht die Ausdrucksstärke und Funktionalität der Programmiersprache erweitern.<ref name="tu-berlin">Type-sound Syntactic Language Extension. (PDF) Abgerufen am 9. Oktober 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Syntaktischer Zucker lässt sich durch reine Textumformungen auf Grundelemente der Sprache zurückführen („desugar“, dt. entsüßen).<ref name="tu-berlin" />
Der Begriff syntactic sugar wurde in den 1960er Jahren vom britischen Informatiker Peter J. Landin<ref>Edsger W. Dijkstra weist in seinem Tripreport darauf hin, dass der Begriff auf Peter Landin zurückzuführen ist, und der Begriff wird bereits im Report 1965 des Departments of Computer Science der University of Illinois verwendet.</ref><ref name="tu-berlin" /> geprägt.
Beispiele
Syntaktischer Zucker in C
Ein Beispiel für syntaktischen Zucker ist die Behandlung von Feldern in der Programmiersprache C.<ref>Syntaktischer Zucker in C: Arrays. 28. November 2013, abgerufen am 9. Oktober 2018.</ref>
C unterscheidet streng genommen nicht zwischen Zeigern auf Objekte und Zeigern auf Felder von Objekten. Ist die Variable p vom Typ „Zeiger auf Byte“ (Typ char *), so kann man mit *(p+3) auf das dritte Byte im Speicher nach der Adresse p zugreifen. Dies kann man in C auch kurz schreiben als p[3].
Ein weiteres Beispiel für syntaktischen Zucker ist die Infixnotation. Bei der Infix-Schreibweise steht der Operator zwischen den Operanden, z. B. 3 + 5. Dies kann von einem Übersetzer direkt in die klassische Schreibweise eines Funktionsaufrufes add(3,5) übertragen werden.
Diamant-Operator in Java
Ein Beispiel für syntaktischen Zucker in Java ist der so genannte „Diamant-Operator“ <>. Dieser wurde mit der Version 7 eingeführt. Er leitet den generischen Typ des zu erstellenden Objekts anhand der Typangabe der Referenz zu.
Anstelle von
<syntaxhighlight lang="java"> List<HashMap<String, Point>> list = new ArrayList<HashMap<String, Point>>(); </syntaxhighlight>
reicht es nun aus zu schreiben
<syntaxhighlight lang="java"> List<HashMap<String, Point>> list = new ArrayList<>(); </syntaxhighlight>
um eine ArrayList der Ausprägung ArrayList<HashMap<String, Point>> zu erstellen.
do-Notation in Haskell
In der funktionalen Programmiersprache Haskell werden für viele Zwecke, insbesondere jedoch für die Ein- und Ausgabe, sogenannte Monaden verwendet. Um beispielsweise eine Zeile und einen Buchstaben von der Standardeingabe einzulesen, den Buchstaben vorne an die Zeile anzuhängen und das Ergebnis wieder auszugeben, müsste man schreiben
<syntaxhighlight lang="haskell"> getLine >>= \s -> getChar >>= \c -> putStrLn (c:s) </syntaxhighlight>
Besser umbrochen ergibt das:
<syntaxhighlight lang="haskell">
getLine >>=
\s -> getChar >>= \c -> putStrLn (c:s) </syntaxhighlight>
Da man solche Konstrukte sehr häufig benötigt, wurde die sogenannte do-Notation eingeführt. Folgender Code ist exakt äquivalent zum obigen Beispiel:
<syntaxhighlight lang="haskell"> do
s <- getLine c <- getChar putStrLn (c:s)
</syntaxhighlight>
Diese Form erinnert stark an ein imperatives Programm und erleichtert das Verständnis des Inhalts.
unless-Keyword in Ruby
In der Skriptsprache Ruby (Programmiersprache) kann anstatt eines negierten if auch das Keyword unless benutzt werden.<syntaxhighlight lang="ruby"> def format_mail
formatted_mail = $mail
formatted_mail = "#{formatted_mail} (#{$full_name})" unless $full_name.nil?
formatted_mail
end </syntaxhighlight>
Syntaktisches Salz
Das Gegenstück zum syntaktischen Zucker ist das syntaktische Salz – eine Spracheigenschaft, die das Schreiben schlechten oder schlecht lesbaren Codes erschwert, ohne dabei die Funktionalität zu erweitern.<ref>RWTH Aachen: syntactic salt. Abgerufen am 9. Oktober 2018 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Syntaktisches Salz dient folglich als Hürde um sicherzustellen, dass der Entwickler weiß, was vor sich geht, anstatt eine Programmaktion auszudrücken.
Ein Beispiel hier ist der new-Modifizierer in C#, um Member aus der Basisklasse bewusst auszublenden. Beim Weglassen gibt der Compiler eine Warnung aus.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig new Modifier (C# Reference).] In: microsoft.com. Microsoft, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 12. April 2022.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>
Einzelnachweise
<references />