PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : the Buzzword of the Month


Gast
2006-09-07, 17:21:30
syntaktischer Zucker

Kann mir mal einer erklären, was das heißen soll?

Monger
2006-09-07, 17:41:56
"Syntaktischen Zucker" nennt man all die Syntaxfeatures einer Sprache, die nicht zwingend notwendig sind, aber einem die Arbeit versüßen.

Oft genug wird es auch als Schimpfwort gebraucht, weil syntaktischer Zucker nur die Sprache schöner aussehen lässt, statt sie tatsächlich schöner zu machen.

Im Zusammenhang mit Java 5.0 ist der Begriff ganz oft gefallen.

Das hier:

for(Thing thing : collection){

}

ist zum Beispiel syntaktischer Zucker für

Iterator it = collection.iterator();
while(it.hasNext()){
Thing thing = collection.next();
}

Gast
2006-09-07, 17:49:59
Aha, dann ist ja alles, was über ne Turing-Maschine hinausgeht, syntaktischer Zucker?

Gnafoo
2006-09-07, 18:43:44
Ich denke mal da sind eher Abkürzungen auf syntaktischer Ebene (mit oft geringen Einsparungen) gemeint. Programmierkonzepte, wie Objektorientierung etc. sind damit nicht zu vergleichen. Noch ein Beispiel aus C#:


using(TestObj test = new TestObj())
{
// bla...
}


statt


TestObj test = new TestObj();
try
{
// bla...
}
finally
{
test.Dispose();
}

Gast
2006-09-07, 19:43:07
Aha, dann ist ja alles, was über ne Turing-Maschine hinausgeht, syntaktischer Zucker?

Im Prinzip schon.

Neomi
2006-09-07, 22:45:11
Ein gutes Beispiel für syntaktischen Zucker sind auch die meisten Operatoren, z.B. in C++:

"a < b": braucht man
"a <= b": braucht man nicht, da identisch zu "!(b < a)"
"a == b": braucht man nicht, da identisch zu "!((a < b) || (b < a))"
"a != b": braucht man nicht, da identisch zu "(a < b) || (b < a)"
"a >= b": braucht man nicht, da identisch zu "!(a < b)"
"a > b": braucht man nicht, da identisch zu "b < a"

"a.b": braucht man
"pa->b": braucht man nicht, da identisch zu "(*pa).b"

"!a": braucht man
"a || b": braucht man
"a && b": braucht man nicht, da identisch zu "!(!a || !b)"

Manche der Dinge, die ich als nötig eingestuft habe, kann man dadurch entbehrlich machen, daß man andere Dinge stattdessen voraussetzt. Auf || kann man z.B. verzichten, wenn man stattdessen && hat.

Syntaktischer Zucker ist alles, was ein Programm lesbarer oder schneller implementierbar macht, obwohl es auch ohne ginge.

Gast
2006-09-08, 00:09:41
Operator +=, -=, *= und /= sind syntaktischen Zucker.