Odpowiedzi:
cukier w programowaniu zwykle odnosi się do tych słodkich dodatków, głównie skrótów, które sprawiają, że niektóre konstrukcje są łatwiejsze do wpisania i odczytania (te ostatnie są w praktyce najważniejsze podczas cyklu życia programu).
Wikipedia ma definicję cukru syntaktycznego, ale należy zauważyć, że nie każdy cukier jest w istocie syntaktyczny (nie wszystkie ostatnie słodkie dodatki były tylko zmianami w kompilatorze).
Oto kilka przykładów:
i++
i ++i
). Ich jedynym celem jest uniknięcie pisania dodatkowego oświadczenia. To czysty cukier.+=
, |=
, &=
, Itd. Są wykonane z tego samego rodzaju cukru.Java jest powszechnie postrzegana jako niewystarczająco zwięzła, zwłaszcza w porównaniu z nowoczesnymi językami. Dlatego te dodatki, które pomagają przyspieszyć czytanie kodu, są mile widziane.
Na koniec chciałbym tylko zauważyć, że chociaż brak cukru może sprawić, że twój program będzie tłusty, nadmiar cukru, prowadzący do wielu różnych sposobów pisania tych samych rzeczy, może sprawić, że twój język będzie mdły, a program mniej spójny i trudniejszy do utrzymania . Inny rodzaj cukru, cukier API, jest najczęściej plagą, która sprawia, że API jest trudniejsze do uchwycenia, zwłaszcza gdy jest zrobione z dodatków (na przykład przeciążenie).
To powiedziawszy, desugaring odnosi się do
Wydaje się, że „desugaring” ma bardzo specyficzne znaczenie w Javie 8. Wydaje się, że jest to termin obejmujący wszystkie elementy, wyrażający różne sposoby, w jakie wyrażenie lambda może być powiązane z rzeczywistym wywołaniem metody konkretnej.
Ten dokument „Tłumaczenie wyrażeń lambda” wydaje się zawierać prawdziwe szczegóły tego, co się dzieje, jeśli jesteś zainteresowany szczegółami.
Kluczowa fraza z dokumentu:
Pierwszym krokiem do przetłumaczenia lambd na kod bajtowy jest usunięcie cukru z treści lambda na metodę.
Generalnie „desugaring” w javac pozwala na reprezentowanie niektórych funkcji językowych za pomocą wcześniej istniejących. Pozwala to na przedstawienie ich w kodzie bajtowym bez dokonywania dużych zmian w formacie pliku klasy. Również z tego powodu zaplecze kompilatora jest bardziej stabilne niż front-end. Nie oznacza to, że każda nowa funkcja języka jest po prostu cukrem składniowym, jak na pewno nie ma to w przypadku lambd i odwołań do metod. W kompilatorze jest więcej przykładów „usuwania cukru”:
Możesz również zbadać, co się dzieje z przełącznikiem String, wpisz wymazanie, ...