<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Syntaktischer_Zucker</id>
	<title>Syntaktischer Zucker - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Syntaktischer_Zucker"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Syntaktischer_Zucker&amp;action=history"/>
	<updated>2026-06-23T06:38:20Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Syntaktischer_Zucker&amp;diff=540852&amp;oldid=prev</id>
		<title>imported&gt;Frank Schulenburg: Stil</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Syntaktischer_Zucker&amp;diff=540852&amp;oldid=prev"/>
		<updated>2026-03-24T00:24:59Z</updated>

		<summary type="html">&lt;p&gt;Stil&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Syntaktischer Zucker&amp;#039;&amp;#039;&amp;#039; sind [[Syntax]]erweiterungen in [[Programmiersprache]]n, die der Vereinfachung von Schreibweisen dienen.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://ftp.informatik.rwth-aachen.de/jargon300/syntacticsugar.html |titel=RWTH Aachen: syntactic sugar |datum= |sprache=en |abruf=2018-10-09}}&amp;lt;/ref&amp;gt; Diese Erweiterungen sind alternative Schreibweisen, die aber nicht die Ausdrucksstärke und Funktionalität der Programmiersprache erweitern.&amp;lt;ref name=&amp;quot;tu-berlin&amp;quot;&amp;gt;{{Internetquelle |url=https://depositonce.tu-berlin.de/bitstream/11303/5033/1/lorenzen_florian.pdf#page=13 |titel=Type-sound Syntactic Language Extension |datum= |format=PDF |sprache=en |abruf=2018-10-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Syntaktischer Zucker lässt sich durch reine Textumformungen auf Grundelemente der Sprache zurückführen („desugar“, dt. entsüßen).&amp;lt;ref name=&amp;quot;tu-berlin&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Begriff &amp;#039;&amp;#039;syntactic sugar&amp;#039;&amp;#039; wurde in den 1960er Jahren vom britischen Informatiker [[Peter J. Landin]]&amp;lt;ref&amp;gt;[[Edsger W. Dijkstra]] weist in seinem [https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD676.html &amp;#039;&amp;#039;Tripreport&amp;#039;&amp;#039;] darauf hin, dass der Begriff auf Peter Landin zurückzuführen ist, und der Begriff wird bereits im [https://books.google.de/books?id=U6-OR80IAYcC&amp;amp;q=%22syntactic+sugar%22 Report 1965 des Departments of Computer Science der University of Illinois] verwendet.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;tu-berlin&amp;quot; /&amp;gt; geprägt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Syntaktischer Zucker in C ===&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für syntaktischen Zucker ist die Behandlung von [[Feld (Datentyp)|Feldern]] in der [[C (Programmiersprache)|Programmiersprache C]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://blog.feabhas.com/2013/11/shock-horror-i-learned-something-about-arrays-in-c/ |titel=Syntaktischer Zucker in C: Arrays |datum=2013-11-28 |abruf=2018-10-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
C unterscheidet streng genommen nicht zwischen [[Zeiger (Informatik)|Zeigern]] auf Objekte und Zeigern auf Felder von Objekten. Ist die Variable &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; vom Typ „Zeiger auf [[Byte]]“ (Typ &amp;lt;code&amp;gt;char *&amp;lt;/code&amp;gt;), so kann man mit &amp;lt;code&amp;gt;*(p+3)&amp;lt;/code&amp;gt; auf das dritte Byte im Speicher nach der Adresse &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; zugreifen. Dies kann man in C auch kurz schreiben als &amp;lt;code&amp;gt;p[3]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Beispiel für syntaktischen Zucker ist die [[Infixnotation]]. Bei der Infix-Schreibweise steht der Operator zwischen den Operanden, z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;3 + 5&amp;lt;/code&amp;gt;. Dies kann von einem Übersetzer direkt in die klassische Schreibweise eines Funktionsaufrufes &amp;lt;code&amp;gt;add(3,5)&amp;lt;/code&amp;gt; übertragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Diamant-Operator in Java ===&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für syntaktischen Zucker in [[Java (Programmiersprache)|Java]] ist der so genannte „Diamant-Operator“ &amp;lt;&amp;gt;. Dieser wurde mit der Version 7 eingeführt.&lt;br /&gt;
Er leitet den generischen Typ des zu erstellenden Objekts anhand der Typangabe der Referenz zu.&lt;br /&gt;
&lt;br /&gt;
Anstelle von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
List&amp;lt;HashMap&amp;lt;String, Point&amp;gt;&amp;gt; list = new ArrayList&amp;lt;HashMap&amp;lt;String, Point&amp;gt;&amp;gt;();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
reicht es nun aus zu schreiben&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
List&amp;lt;HashMap&amp;lt;String, Point&amp;gt;&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
um eine &amp;lt;code&amp;gt;ArrayList&amp;lt;/code&amp;gt; der Ausprägung &amp;lt;code&amp;gt;ArrayList&amp;lt;HashMap&amp;lt;String, Point&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; zu erstellen.&lt;br /&gt;
&lt;br /&gt;
=== &amp;#039;&amp;#039;do&amp;#039;&amp;#039;-Notation in Haskell ===&lt;br /&gt;
&lt;br /&gt;
In der funktionalen Programmiersprache [[Haskell (Programmiersprache)|Haskell]] werden für viele Zwecke, insbesondere jedoch für die Ein- und Ausgabe, sogenannte [[Monade (Informatik)|Monaden]] verwendet. Um beispielsweise eine Zeile und einen Buchstaben von der [[Standard-Datenströme|Standardeingabe]] einzulesen, den Buchstaben vorne an die Zeile anzuhängen und das Ergebnis wieder auszugeben, müsste man schreiben&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
getLine &amp;gt;&amp;gt;= \s -&amp;gt; getChar &amp;gt;&amp;gt;= \c -&amp;gt; putStrLn (c:s)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Besser umbrochen ergibt das:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
      getLine &amp;gt;&amp;gt;=&lt;br /&gt;
\s -&amp;gt; getChar &amp;gt;&amp;gt;=&lt;br /&gt;
\c -&amp;gt; putStrLn (c:s)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da man solche Konstrukte sehr häufig benötigt, wurde die sogenannte &amp;#039;&amp;#039;do&amp;#039;&amp;#039;-Notation eingeführt. Folgender Code ist exakt äquivalent zum obigen Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
do&lt;br /&gt;
    s &amp;lt;- getLine&lt;br /&gt;
    c &amp;lt;- getChar&lt;br /&gt;
    putStrLn (c:s)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Form erinnert stark an ein imperatives Programm und erleichtert das Verständnis des Inhalts.&lt;br /&gt;
&lt;br /&gt;
=== &amp;#039;&amp;#039;unless-&amp;#039;&amp;#039;Keyword in Ruby ===&lt;br /&gt;
In der Skriptsprache [[Ruby (Programmiersprache)]] kann anstatt eines negierten &amp;#039;&amp;#039;if&amp;#039;&amp;#039; auch das Keyword &amp;#039;&amp;#039;unless&amp;#039;&amp;#039; benutzt werden.&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
def format_mail&lt;br /&gt;
  formatted_mail = $mail&lt;br /&gt;
  formatted_mail = &amp;quot;#{formatted_mail} (#{$full_name})&amp;quot; unless $full_name.nil?&lt;br /&gt;
&lt;br /&gt;
  formatted_mail&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Syntaktisches Salz ==&lt;br /&gt;
Das Gegenstück zum syntaktischen Zucker ist das &amp;#039;&amp;#039;&amp;#039;syntaktische Salz&amp;#039;&amp;#039;&amp;#039;&amp;amp;nbsp;– eine Spracheigenschaft, die das Schreiben schlechten oder schlecht lesbaren Codes erschwert, ohne dabei die Funktionalität zu erweitern.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://ftp.informatik.rwth-aachen.de/jargon300/syntacticsalt.html |titel=RWTH Aachen: syntactic salt |datum= |sprache=en |abruf=2018-10-09}}&amp;lt;/ref&amp;gt; Syntaktisches Salz dient folglich als Hürde um sicherzustellen, dass der Entwickler weiß, was vor sich geht, anstatt eine Programmaktion auszudrücken.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel hier ist der &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt;-Modifizierer in [[C-Sharp|C#]], um Member aus der Basisklasse bewusst auszublenden. Beim Weglassen gibt der Compiler eine Warnung aus.&amp;lt;ref&amp;gt;{{cite web|url=https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/new-modifier|title=new Modifier (C# Reference)|publisher=Microsoft|work=microsoft.com|access-date=2022-04-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Frank Schulenburg</name></author>
	</entry>
</feed>