In C# (und Java) ist eine Zeichenkette kaum mehr als ein Char-Array mit einer gespeicherten Länge und ein paar Methoden angehängt. Ebenso sind Objekte (abgesehen von der Referenz vs. Wert) kaum mehr als verherrlichte Strukturen, denen Vererbung und Schnittstellen hinzugefügt wurden.
Auf einer Ebene fühlen sich diese Ergänzungen wie klare Funktionen und Verbesserungen an. Auf einer anderen Ebene fühlen sie sich wie eine marginale Verbesserung gegenüber dem Status des "syntaktischen Zuckers" an.
Um diesen Gedanken weiter zu vertiefen, bedenken Sie (vielleicht habe ich mich in einigen Details geirrt, aber der Punkt bleibt):
transistor
elementary logic gate
compound gate
| |
ALU flip-flop
| | |
| register RAM
| |
CPU
microcode
assembly
C
C++
| |
MSIL JavaScript
C# jQuery
Oft sieht eine einzelne Abstraktionsebene sehr nach syntaktischem Zucker aus, aber mehrere Trennungsebenen fühlen sich sehr weit voneinander entfernt an.
Woran erkennt man, dass etwas kein syntaktischer Zucker mehr ist, sondern ein gutgläubig Funktion?