Szintaktikai cukor: meghatározás, eredet és példák

Ban ben Számítástechnika, szintaktikai cukor egy nyelvészet a programozási nyelv. Úgy tervezték, hogy a kód könnyebb, olvashatóbb és kifejezőbb legyen. Ez a cukor emberi felhasználásra "édesebbé" teszi a nyelvet. Vagyis a dolgok egyértelműen, tömören vagy alternatív stílusban fejezhetők ki, amelyet egyesek előnyben részesíthetnek.

Szintaktikai cukor: mi ez?

Szintaktikai cukor, meghatározás

Sok a programozási nyelvek biztosítják speciális nyelvtani osztály az elemek frissítéséhez. Absztrakt módon egy adott objektumra való hivatkozás két argumentumból álló eljárás: egy tömb és egy index, amely a következőképpen fejezhető ki get_array (tömb, vektor (i, j)). Ehelyett sok nyelv nyújt szintaxist, például Tömb [i, j]. Hasonlóképpen, például egy tömb elem frissítése, set_array (tömb, vektor (i, j), érték), három argumentumú eljárás, de sok szakember olyan kódot ad meg, mint például Array [i, j] = érték.

A nyelvben lévő konstrukciót "szintaktikai cukornak" nevezzük, ha a funkcionalitásra és az expresszivitásra gyakorolt hatás nélkül eltávolítható a programból.

Különböző processzorok, beleértve a fordítóprogramokat és a statikus analizátorokat, gyakran kiterjesztik az édesített konstrukciókat az alapvető eszközökre a feldolgozás előtt. Ezt a folyamatot "desagering" - nek nevezik.

Származás

A "szintaktikai cukor" kifejezést Peter J alkotta meg. Landin 1964-ben a felszíni nyelvtani osztály leírására egyszerű ALGOL, egy programozási nyelv, amelyet szemantikailag definiáltak a lambda kalkulus lexikális helyettesítésére összpontosított a "hol".

A későbbi programozási nyelvek, mint pl CLU, MLÉS a Scheme kibővítették a kifejezést egy származék jelölésére egy olyan nyelven, amely szintaktikai cukorként definiálható az alapkonstrukciók magja szempontjából. A kényelmes magasabb szintű függvények" bonthatók " és részhalmazra bonthatók. Ez valójában a primitívekből történő építés szokásos matematikai gyakorlata.

1991-ben Mathias Fellaisen az alapvető nyelvi konstrukciók és a szintaktikai cukor tulajdonságok közötti különbségtételre támaszkodva javasolta az "expresszív erő" kodifikációját, hogy megfeleljen az irodalomban elterjedt hiedelmeknek. Meghatározta ez mint "értelmesebb" annak jelzésére, hogy a szóban forgó nyelvi konstrukciók nélkül a programot teljesen át kell szervezni.

A szintaktikai cukor híres példái

Szintaktikai cukor, példák

A COBOL nyelvben a köztes kulcsszavak közül sok "édes", Vagyis kívánt esetben elhagyhatók. Például a mondat mozog a B. A-ból B-be. pontosan ugyanazt a funkciót látják el, de a második világosabbá teszi a végrehajtandó műveletet.

Kiterjesztett összetett hozzárendelési operátorok: például az a += b egyenértékű az a = A+ b-vel C-ben és hasonló nyelvekben, tegyük fel, hogy a-nak nincs mellékhatása, például a egy szabályos if változó.

Perlben, hacsak (feltétel) {...} szintaktikailag if (nem feltétel) {...}. Ezenkívül minden állítást olyan feltétel követhet, amely nyilatkozat, Ha feltétel egyenértékű if (feltétel) {utasítás}, de az első természetesen egy sorban van formázva.

A C nyelven a memóriaelem elejére mutató mutatók speciális szintaxisok használata nélkül írhatók: *(a + i). Bár van egy speciális szintaxis erre a folyamatra ezen a nyelven: a[i]. Hasonlóképpen, , az a->x, a rekord szintaktikai cukor a tagok eléréséhez a dereference operátor segítségével (*a). x.

Használata

A C# utasítás biztosítja, hogy egyes objektumok helyesen legyenek elhelyezve. A fordító kiterjeszti a nyilatkozatot egy try-végül blokk.

A C # nyelv lehetővé teszi a változók deklarálását var x = expr, amely lehetővé teszi a fordító számára a típus kimenetét x a kifejezésből expr, ahelyett, hogy kifejezett nyilatkozatot igényelne.

A listák Python szintaktikai cukrot is tartalmaznak (például, [x * x az X tartományban (10)] egy listát a négyzetek) és lakberendezők (@staticmethod).

Haskellben az idézőjelekkel jelölt karakterlánc szemantikailag egyenértékű a karakterek számával.

Az rvest csomagban a kijelölés történik %>% , és azt jelzi, hogy az azt megelőző adatok (vagy függvénykimenet) a következő eszköz első argumentumaként szolgálnak. Ez lineárisabb áramlást és Adatkezelési tervezést biztosít. A Tidyverse az értékek elhelyezésére van írva.

Kritika

szintaktikai cukor tulajdonságok

Egyes programozók úgy vélik, hogy a szintaxis használatának ezen lehetőségei vagy nem fontosak, vagy egyszerűen nem komolyak. Figyelemre méltó, hogy a speciális nyelvi formák miatt a nyelv kevésbé monoton, specifikációja pedig összetettebb, és problémákat okozhat a programok nagy méretűvé válásával. Ez a reprezentáció különösen elterjedt a Lisp közösségben, mivel nagyon egyszerű, szabályos és felületes szintaxisa van, amely könnyen megváltoztatható.

Származtatott kifejezések

szintaktikai cukor mi ez

Szintaktikai só. A metaforát kibővítették ennek a kifejezésnek a bevezetésével, amely egy olyan funkciót jelöl, amelynek célja a rossz kód megírásának megnehezítése. Különösen a szintaktikai só egy karika, amelyet a programozóknak át kell ugraniuk annak bizonyítására, hogy tudják, mi történik, nem pedig a program cselekvésének kifejezésére. Például Java-ban és Pascalban lebegőpontos értéket rendelünk egy int-ként deklarált változóhoz, további szintaxis explicit megadása nélkül, ez a szándék fordítási hibát eredményez, míg a C és a C++ automatikusan csonkolja az int-hez rendelt összes lebegőpontos számot. Ez azonban nem szintaxis, hanem szemantika.

A C# - ban egy örökölt osztálytag elrejtésekor fordító figyelmeztetést adnak ki, kivéve, ha kulcsszót használnak annak jelzésére, hogy a rejtőzés szándékos. Erre azért van szükség, hogy elkerüljük az esetleges hibákat, amelyek a szintaxis utasításkapcsoló hasonlóságából adódnak a C vagy a C++ nyelvével, a C# minden nem üres kapcsolótok címkéjéhez szünetet igényel, még akkor is, ha ez nem teszi lehetővé az implicit csökkenést.

A szintaktikai só megsértheti célját, olvashatatlanná téve a kódot, ezáltal rontva annak minőségét. Szélsőséges esetekben a tömeg rövidebb lehet, mint a nyelvi követelmények teljesítése érdekében bevezetett rezsi.

Ennek a koncepciónak az alternatívája a fordítói figyelmeztetések generálása, amikor nagy a valószínűsége annak, hogy a kód hiba eredményeként jelenik meg, ami a modern C/C fordítókban gyakori gyakorlat ++.

Szintaktikai Szacharin

egy csésze kávé tejszínnel

Egy másik kiterjesztés a szirup is. Csakúgy, mint a szacharin, ez ok nélküli szintaxist jelent, amely nem könnyíti meg a programozást.

Furcsának tűnhet, hogy a nyelvet "édesnek" nevezzük, de ha Rubyistban dolgozol, akkor indokolt lesz. Több szintaktikai cukor van ebben a programban, mint sok nyelven, mert az emberi megértésre összpontosít, nem pedig a számítógépes megértésre. A Ruby alkotója, Yukihiro Matsumoto, a nyelvet nemcsak hatékony, hanem lenyűgöző is akarta tenni. A fordítóknak és a tolmácsoknak tetszhet egy ilyen erősen strukturált, egyértelmű nyelvtani osztály, de az emberek számára nehéz lehet megérteni. Itt jelenik meg a szintaktikai cukor — ez teszi a nyelvet" édesebbé " mind írásban, mind olvasásban.

Kód írása

szintaktikai cukor python

Emlékeztetni kell arra, hogy a "szintaktikai cukor" nem technikai kifejezés, hanem egy olyan konstrukció, amelynek célja a nyelv kifejezésének leírása. Egyszerűen fogalmazva, ez a kifejezés optimalizált kódot jelent az emberek számára. A cél a szintaxis egyszerűsítése, hogy könnyen olvasható legyen, még akkor is, ha ez csökkenti a technikai egyértelműséget. Természetesen az édes kód írása nem azt jelenti, hogy tudsz ugrás a megértés fontos szakaszára.

Mint a való életben, fontos tudni, hogy mennyi cukrot használnak általános egészség . A cukor egyszerűvé és kifejezővé teszi a kódot, de kétértelműséget is okoz. Ez általában annak a ténynek köszönhető, hogy nem mindenki ismeri és alkalmazza ezt a koncepciót a programozásban.

Cikkek a témában