Ten artykuł od 2012-07 wymaga zweryfikowania podanych informacji. |
Lukier składniowy (lukier syntaktyczny, cukier syntaktyczny) (ang. syntactic sugar) – w programowaniu dowolna cecha składni języka, którą można wyeliminować przez proste przekształcenia składniowe, istniejąca jedynie dla wygody programisty. Dzięki lukrowi składniowemu programy stają się czytelniejsze oraz uzyskują bardziej zwartą formę. Termin wymyślony przez Petera Landina[1].
W języku C++ powyższe przykłady mogą być traktowane jako lukier składniowy jedynie dla prostych typów danych. Jeśli zmienna c byłaby obiektem, operatory ++, =, + oraz += mogłyby zostać zdefiniowane lub przeciążone w taki sposób, że wykonanie wymienionych działań prowadziłoby do niejednakowych efektów. To samo dotyczy użytych w pierwszym przykładzie operatorów [ ], * i +.
x += y oznacza x = x + y, co z kolei oznacza x = x.+(y), gdzie + to metoda będąca przeciążonym operatorem.
Form1.MDIChildren[0].Panel1.Caption:='Tytuł';
Form1.MDIChildren[0].Panel1.Width:=500;
Form1.MDIChildren[0].Panel1.Height:=400;
można zapisać następująco:
with Form1.MDIChildren[0].Panel1 do
begin
Caption:='Tytuł';
Width:=500;
Height:=400;
end;
W wersji ECMAScript 6, gdzie zostały dodane funkcje strzałkowe, gdy zwracane jest pojedyncze wyrażenie można pominąć słowo kluczowe return i użyć krótszej składni:
const f = (x) => x + 2;
Jest odpowiednikiem dłuższego zapisu:
const f = (x) => {
return x + 2;
};
W programowaniu funkcyjnym często wykorzystywane są listy elementów, dlatego standardowe operacje sprawdzania (nie)pustości głowy (początku) listy oraz wyciągania tejże głowy z listy, zastępowane są cukrami syntaktycznymi.
Komentarze i opcjonalne białe znaki, zwiększające czytelność programu, to również lukier składniowy – w żaden sposób semantycznie nie wpływają na przebieg kompilacji i tworzony kod wynikowy programu.
Lukru (cukru) składniowego nie należy mylić z np. strukturyzacją programu, tj. umieszczaniem części kodu np. w funkcjach, tworzeniem obiektów posiadającym klasy wirtualne, gdyż zabiegi te mają odzwierciedlenie w kodzie maszynowym programu (np. jako wywołanie stosu dla funkcji, zapamiętanie adresu powrotu) – lukier składniowy jest tylko szybszym/wygodniejszym/czytelniejszym sposobem zapisu kodu i jest on zastępowany „czystym” językiem na poziomie interpretacji kodu – kompilacji poddany zostaje kod nie zawierający już lukru syntaktycznego.
Uczę się języka hebrajskiego. Tutaj go sobie utrwalam.
Zawartość tej strony pochodzi stąd.