Syntaktický cukr
Author
Albert FloresSyntaktický cukr je v informatice označení pro takovou část syntaxe programovacího jazyka, jejíž jediným účelem je usnadnit programátorovi zápis nějakých základních obratů. Nejedná se tedy o klíčovou součást jazyka; nemá vliv na to, jaké programy v něm lze napsat nebo jak budou rychlé, nemá vliv ani na architektonický návrh programu. Obvykle se jedná o možnost zapsat určité drobnosti alternativním, pro člověka příjemnějším způsobem, než je způsob pro daný jazyk základní, odpovídající jeho vnitřnímu návrhu a dobře zpracovatelný překladačem nebo interpretem.
Příklady
Řetězce v Haskellu
Programovací jazyk Haskell přirozeně pracuje s textovými řetězci zkrátka jako se seznamy znaků, řetězec „ahoj“ je tedy možné napsat jako
['a', 'h', 'o', 'j']
a nic nebrání tomu, aby jazyk fungoval pouze s tímto zápisem řetězců. Jako syntaktický cukr ovšem programátorovi Haskell nabízí ještě alternativní možnost zadání řetězce uzavřením znaku do uvozovek, tedy
"ahoj"
Ve skutečnosti je i dříve uvedený zápis také syntaktickým cukrem, protože seznamy se ve své základní podobě v Haskellu zapisující pomocí rekurzivních dvojic a zcela cukru prostý zápis řetězce „ahoj“ má tedy podobu:
(:) 'a' ((:) 'h' ((:) 'o' ((:) 'j' [])))
Sice je možné zapisovat všechny řetězce v Haskellu v tomto formátu, bylo by to nicméně pro člověka obtížně zpracovatelné a tedy také náchylné k chybám. Proto se jedná o příklad toho, kdy se jiný než ocukrovaný zápis v podstatě nepoužívá.
Pole v jazyce C
V programovacím jazyce C je možné přistupovat k itému prvku pole a pomocí zápisu:
*(a+i)
Tedy pomocí syntaxe běžně užívané při práci s ukazateli. Kromě toho se ovšem uživateli nabízí jako syntaktický cukr také ekvivalentní a v praxi oblíbenější zápis
a[i]
Přístup k atributům struktury v jazyce C
K atributům struktury a, ke které máme ukazatel, bychom přistupovali tímto zápisem
(*a).atribut
protože nejdříve uděláme dereferenci ukazatele, který ukazuje na strukturu a, a poté pomocí tečky přístoupíme k atributu. Jazyk C však nabízí čistější zápis
a->atribut