Syntaktický cukor: definícia, pôvod a príklady

V počítačová veda, syntaktický cukor je a lingvistika v a programovací jazyk. Je navrhnutý tak, aby bol kód jednoduchší, čitateľnejší a výraznejší. Tento cukor robí jazyk "sladším" pre ľudské použitie. To znamená, že veci môžu byť vyjadrené jasne, stručne alebo alternatívnym štýlom, ktorý niektorí môžu uprednostniť.

Syntaktický cukor: čo to je?

Syntaktický cukor, definícia

Mnoho programovacie jazyky poskytujú špeciálne gramatické oddelenie pre aktualizáciu prvkov. Abstraktne je odkaz na daný objekt postupom dvoch argumentov: poľa a dolného indexu, ktoré možno vyjadriť ako get_array(Pole, vektor (i, j)). Namiesto toho mnoho jazykov poskytuje syntax, ako napríklad Pole [i, j]. Podobne aktualizácia prvku poľa, napríklad, set_array (Pole, vektor (i, j), hodnota), je postup s tromi argumentmi, ale mnoho odborníkov poskytuje kód, ako napríklad Pole[i, j] = hodnota.

Konštrukcia v jazyku sa nazýva "syntaktický cukor", ak ju možno z programu odstrániť bez akéhokoľvek vplyvu na funkčnosť a expresivitu.

Rôzne procesory, vrátane kompilátorov a statických analyzátorov, často pred spracovaním rozširujú sladené konštrukcie na zásadnejšie zariadenia. Tento proces sa nazýva "desagering".

Pôvod

Pojem "syntaktický cukor" vytvoril Peter J. Landin v roku 1964 popísal oddelenie povrchovej gramatiky jednoduchý ALGOL, programovací jazyk, ktorý bol sémanticky definovaný z hľadiska aplikačných výrazov Lambda kalkul zameraný na lexikálnu substitúciu λ s "kde".

Neskoršie programovacie jazyky ako napr CLU, MLA schéma rozšírili tento výraz o derivát v jazyku, ktorý možno definovať ako syntaktický cukor z hľadiska jadra základných konštruktov. Pohodlné funkcie vyššej úrovne je možné "rozčleniť" a rozložiť na podmnožinu. Toto je v skutočnosti obvyklá matematická prax budovania z primitívov.

Vychádzajúc z Landinovho rozlíšenia medzi základnými jazykovými konštrukciami a syntaktickými vlastnosťami cukru, v roku 1991 Mathias Fellaisen navrhol kodifikáciu "expresívnej sily", aby zodpovedala rozšíreným vieram v literatúru. Definoval to ako , "zmysluplnejšie", čo naznačuje, že bez príslušných jazykových konštruktov by mal byť program úplne reorganizovaný.

Slávne príklady syntaktického cukru

Syntaktický cukor, príklady

V jazyku COBOL je veľa medziľahlých kľúčových slov "sladkých", to znamená, že ich možno v prípade potreby vynechať. Napríklad veta presunúť A B. a presunúť A do B. vykonajte presne rovnakú funkciu, ale druhá robí akciu, ktorá sa má vykonať, jasnejšou.

Operátory rozšíreného priradenia zlúčenín: napríklad A + = b je ekvivalentné a = A+ b v C a podobných jazykoch Predpokladajme, že a nemá žiadne vedľajšie účinky, napríklad a je a pravidelný ak premenná.

V Perle, pokiaľ (podmienka) {...} je syntakticky ak (nie podmienka) {...}. Po každom Vyhlásení môže navyše nasledovať podmienka, že vyhlásenie, ak podmienka je ekvivalentný ak (podmienka) {vyhlásenie}, ale prvý je prirodzenejšie formátovaný v jednom riadku.

V jazyku C je možné písať ukazovatele na začiatok pamäťového prvku bez použitia špeciálnych syntaxí: * (a + i ) . Aj keď v tomto jazyku existuje špeciálna syntax pre tento proces: a [i]. Podobný, do a->x, záznam je syntaktický cukor pre prístup k členom pomocou operátora dereferencie (*na). x.

Používať

Vyhlásenie v C# zaisťuje, že niektoré objekty sú zlikvidované správne. Kompilátor rozšíri príkaz do bloku try-finally.

Jazyk C # vám umožňuje deklarovať premenné ako var x = expr, čo umožňuje kompilátoru výstup typu x z výrazu expr, namiesto výslovného vyhlásenia.

Zoznamy tiež obsahujú syntaktický cukor Python (napríklad, [x * X pre X v rozsahu (10)] pre zoznam štvorcov) a dekoratérov (@staticmethod).

V Haskell je reťazec označený úvodzovkami sémanticky ekvivalentný počtu znakov.

V balíku rvest sa označenie vyskytuje %>% , a označuje, že údaje (alebo výstup funkcie), ktoré mu predchádzajú, budú slúžiť ako prvý argument nasledujúceho nástroja. To poskytuje lineárnejší návrh toku a manipulácie s údajmi. Tidyverse je napísaný na umiestnenie hodnôt.

Kritika

syntaktické vlastnosti cukru

Niektorí programátori sa domnievajú, že tieto možnosti použitia syntaxe buď nie sú dôležité, alebo jednoducho nie sú vážne. Je pozoruhodné, že špeciálne jazykové formy spôsobujú, že jazyk je menej monotónny a jeho špecifikácia je zložitejšia a môže spôsobiť problémy, keď sa programy stanú veľkými. Toto znázornenie je obzvlášť rozšírené v komunite Lisp, pretože má veľmi jednoduchú, pravidelnú a povrchnú syntax, ktorú je možné ľahko zmeniť.

Odvodené pojmy

syntaktický cukor, čo to je

Syntaktická soľ. Metafora bola rozšírená zavedením tohto výrazu, ktorý označuje funkciu navrhnutú tak, aby sťažovala písanie zlého kódu. Najmä syntaktická soľ je obruč, ktorú musia programátori preskočiť, aby dokázali, že vedia, čo sa deje, a nie vyjadriť činnosť programu. Napríklad v Java a Pascal, priradenie hodnoty s pohyblivou rádovou čiarkou premennej deklarovanej ako int bez dodatočnej syntaxe, ktorá výslovne uvádza, tento zámer výsledkom bude chyba kompilácie, zatiaľ čo C a c++ automaticky skrátia všetky čísla s pohyblivou rádovou čiarkou priradené k int. Nejde však o syntax, ale o sémantiku.

V jazyku C# sa pri skrytí zdedeného člena triedy vydá varovanie kompilátora, pokiaľ sa Kľúčové slovo nepoužije na označenie zámerného skrytia. Je to nevyhnutné, aby sa predišlo možným chybám v dôsledku podobnosti prepínača syntaxových príkazov s prepínačom C alebo C++, C# vyžaduje prerušenie pre každý neprázdny štítok prípadu prepínača, aj keď neumožňuje implicitný pokles.

Syntaktická soľ môže porušiť jej účel, čím sa kód stane nečitateľným a tým sa zhorší jeho kvalita. V extrémnych prípadoch môže byť objem kratší ako réžia zavedená na splnenie jazykových požiadaviek.

Alternatívou k tomuto konceptu je generovanie varovaní kompilátora, keď je vysoká pravdepodobnosť, že sa kód javí ako výsledok chyby, čo je prax bežná v moderných Kompilátoroch C/C ++.

Syntaktický sacharín

šálka kávy so smotanou

Ďalším rozšírením je aj sirup. Rovnako ako sacharín to znamená bezpríčinnú syntax, ktorá neuľahčuje programovanie.

Môže sa zdať divné zavolať jazyk "sladký", ale ak pracujete v Rubyist, bude to odôvodnené. V tomto programe je viac syntaktického cukru ako v mnohých jazykoch, pretože sa zameriava skôr na ľudské porozumenie ako na počítačové porozumenie. Tvorca Ruby, Yukihiro Matsumoto, chcel, aby bol jazyk nielen efektívny, ale aj fascinujúci. Kompilátorom a tlmočníkom sa môže páčiť také vysoko štruktúrované a jednoznačné gramatické oddelenie, ale pre ľudí môže byť ťažké ho pochopiť. Tu sa objavuje syntaktický cukor — robí jazyk" sladším " tak pri písaní, ako aj pri čítaní.

Písanie kódu

syntaktický cukor python

Je potrebné pamätať na to, že "syntaktický cukor" nie je odborný pojem, ale konštrukcia navrhnutá tak, aby pomohla opísať spôsob vyjadrovania jazyka. Jednoducho povedané, tento výraz znamená optimalizovaný kód pre ľudí. Cieľom je zjednodušiť syntax tak, aby bola ľahko čitateľná, aj keď znižuje určitú technickú jasnosť. Samozrejme, písanie sladkého kódu neznamená, že môžete preskočiť dôležitú fázu porozumenia.

Rovnako ako v skutočnom živote je dôležité vedieť, koľko cukru sa používa celkové zdravie . Cukor robí kód jednoduchým a expresívnym, ale spôsobuje aj nejednoznačnosť. To je zvyčajne spôsobené tým, že nie každý vie a uplatňuje takýto koncept v programovaní.

Články na tému