Přeskočit na obsah

Syntaktický cukr

Z Wikipedie, otevřené encyklopedie

Syntaktický 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

[editovat | editovat zdroj]

Řetězce v Haskellu

[editovat | editovat zdroj]

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

[editovat | editovat zdroj]

V programovacím jazyce C je možné přistupovat k i-té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

[editovat | editovat zdroj]

Pro přístup k prvkům struktury, na kterou ukazuje ukazatel a, je možné použít

(*a).prvek

protože je třeba nejdřív provést dereferenci ukazatele, který ukazuje na strukturu, a poté pomocí tečky vybrat prvek. Jazyk C však nabízí čitelnější zápis

a->prvek