tło
Strona Wikipedii na temat cukru syntaktycznego zawiera :
W informatyce cukier syntaktyczny jest składnią w języku programowania, który ma na celu ułatwienie czytania lub wyrażania. Dzięki temu język jest „słodszy” dla ludzi: rzeczy można wyrazić jaśniej, bardziej zwięźle lub w alternatywnym stylu, który niektórzy mogą preferować.
Naprawdę nie rozumiem, jaka jest różnica między Syntactic Sugar a Syntax.
Doceniam fakt, że wersja słodka może być jaśniejsza, bardziej zwięzła, być może sprowadzona z jakiegoś bojlera. Ale wydaje mi się, że na pewnym poziomie cała składnia zasadniczo robi to, aby stworzyć abstrakcję tego, do czego kod zostaje skompilowany.
Z tej samej strony w Wikipedii:
Procesory językowe, w tym kompilatory, analizatory statyczne i tym podobne, często przetwarzają konstrukcje cukrowe w bardziej podstawowe konstrukcje przed przetwarzaniem, proces czasami nazywany „desugowaniem”.
Jako ćwiczenie myślowe, jeśli „często” w tym stwierdzeniu oznacza „zawsze”: Jeśli różnica polega tylko na tym, czy kompilator „odsyła” składnię przed przejściem do następnego etapu, w jaki sposób programista, który nie zna wewnętrznych kompilatora wie (lub obchodzi), co to jest Sugar'd Składnia, czy nie?
Bardzo powiązane pytanie na tej stronie „Rygorystyczna definicja cukru syntaktycznego?” ma odpowiedź, która rozpoczyna się:
IMHO Nie wydaje mi się, aby można było zdefiniować cukier syntaktyczny, ponieważ wyrażenie to jest BS i prawdopodobnie będzie używane przez osoby, które mówią o „prawdziwych programistach” używających „prawdziwych narzędzi” w „prawdziwych systemach operacyjnych”
Co może mi wskazywać, że być może programista używający języka nie ma dużej różnicy? Być może różnica jest zauważalna tylko dla autora kompilatora? Chociaż mogą zdarzyć się sytuacje, w których programista korzystający z języka może wiedzieć, co kryje się pod maską cukru syntaktycznego? (Ale może w rzeczywistości w jakimkolwiek dyskursie na ten temat używa się tego terminu jako przynęty na płomienie?)
Sedno pytania
Więc ... krótka wersja pytania:
- Czy istnieje prawdziwa różnica między składnią a cukrem syntaktycznym?
- Dla kogo to ma znaczenie?
Dodatkowe jedzenie do przemyślenia
Premia za sprzeczność tematu:
Na stronie Wikipedii podano przykład:
Na przykład w języku C
a[i]
notacja oznacza cukier składniowy*(a + i)
Podczas gdy inna odpowiedź na powyższe powiązane pytanie mówi o tym samym przykładzie:
Teraz zastanów się
a[i] == *(a + i)
. Pomyśl o dowolnym programie C, który używa tablic w jakikolwiek istotny sposób.
I podsumowuje, że:
[]
Notacja ułatwia tę abstrakcję. To nie jest cukier składniowy.
Przeciwny wniosek dla tego samego przykładu!