Sintaktični sladkor: opredelitev, izvor in primeri

V računalništvu je sintaksni sladkor lingvistika v programskem jeziku. Zasnovan je tako, da je koda enostavnejša, berljivejša in izrazitejša. Ta sladkor naredi jezik "slajši" za človeško rabo. To pomeni, da lahko stvari izrazite jasno, kratko ali v drugačnem slogu, ki je nekaterim bolj všeč.

Sintaktični sladkor: kaj je?

Sintaktični sladkor, opredelitev

Veliko programski jeziki zagotavljajo posebni oddelek za gimnazije za posodobitev postavk. Abstraktno je referenca na določen objekt postopek dveh argumentov: polja in spodnjega indeksa, ki ga lahko izrazimo kot get_array(Array, vector(i, j)). Namesto tega številni jeziki ponujajo sintakso, kot je Array[i, j]. Podobno velja za posodabljanje elementa polja, npr, set_array(Array, vector(i, j), value), je postopek s tremi argumenti, vendar mnogi strokovnjaki zagotavljajo kodo, kot je Array[i, j] = vrednost.

Konstrukcijo v jeziku imenujemo "sintaktični sladkor", če jo je mogoče odstraniti iz programa, ne da bi to kakor koli vplivalo na funkcionalnost ali izraznost.

Različni procesorji, vključno s prevajalniki in statičnimi analizatorji, pred obdelavo pogosto razširijo posladkane konstrukcije na bolj temeljne naprave. Takšen postopek se imenuje "desugaring".

Izvor

Izraz "sintaktični sladkor" je uvedel Peter J. W. Hughes, ki je avtor izraza "sintaktični sladkor". Landin je leta 1964 opisal površinsko delitev gramatike preprostega programskega jezika ALGOL, ki je bil semantično opredeljen v smislu aplikativnih izrazov lambda-kalkula, pri čemer se je osredotočil na leksikalno zamenjavo λ z "kjer".

Novejši programski jeziki, kot so CLU, ML in Scheme, so izraz razširili na izpeljavo v jeziku, ki jo je mogoče opredeliti kot skladenjski sladkor v smislu jedra osnovnih konstrukcij. Priročne funkcije višje ravni je mogoče "razčleniti" in razgraditi v podmnožico. Pravzaprav je običajna matematična praksa, da se iz primitivov.

Matthias Fellisen je na podlagi Landinovega razlikovanja med osnovnimi jezikovnimi konstrukcijami in lastnostmi skladenjskega sladkorja leta 1991 predlagal kodifikacijo "izrazne moči", da bi se prilagodil splošno razširjenim prepričanjem v literaturi. Opredelil je kot "bolj smiseln", da bi nakazal, da je treba brez zadevne jezikovne konstrukcije program popolnoma preoblikovati.

Znani primeri skladenjskega sladkorja

Sintaktični sladkor, primeri

V COBOL-u je veliko vmesnih ključnih besed "sladkor", kar pomeni, da jih lahko po želji izpustimo. Na primer stavek MOVE A B. in premik A v B. opravljata popolnoma enako funkcijo, vendar je v drugem primeru dejanje, ki ga je treba izvesti, bolj jasno opredeljeno.

Razširjeni operatorji sestavljenih pripisov: npr. a += b je enakovredno a = a + b v jeziku C in podobnih jezikih, če a nima stranskih učinkov, npr. a je navadna spremenljivka, če.

V Perlu, razen če (pogoj) {...} je skladenjsko if (ni pogoj) {...}. Poleg tega lahko kateremu koli operatorju sledi pogoj, ki Izjava if pogoj enakovreden if (pogoj) {izjava}, vendar je prvi bolj naravno oblikovan v eni vrstici.

V jeziku C lahko kazalce na začetek pomnilniškega elementa zapišete brez posebnih sintakse: *(a + i). Čeprav ima ta jezik za ta postopek posebno sintakso: a[i]. Podobno, a->x, vnos je sintaktični sladkor za dostop do članov z uporabo operatorja dereferenciranja (*a). x.

Uporaba spletne strani

Izjava v jeziku C # zagotavlja, da so nekateri predmeti pravilno odstranjeni. Prevajalnik izjavo razširi v blok poskusi-končno.

Jezik C # omogoča, da so spremenljivke deklarirane kot var x = expr, ki omogoča, da prevajalnik izpiše tip x iz izraza expr, namesto da bi zahteval izrecno izjavo.

Seznami vsebujejo tudi sintaktični sladkor Pythona (npr, [x*x za x v območju (10)] za seznam kvadratov) in dekoratorjev (@staticmethod).

V Haskellu je niz, označen z narekovaji, semantično enakovreden številu znakov.

V paketu rvest je oznaka %>% in pove, da bodo podatki (ali izhod funkcije), ki so pred njim, služili kot prvi argument naslednjega orodja. To omogoča bolj linearen pretok in oblikovanje manipulacije s podatki. Tidyverse je napisan tako, da postavi vrednosti.

Kritika

lastnost skladenjskega sladkorja

Nekateri programerji menijo, da so te funkcije sintakse nepomembne ali preprosto niso resne. Zaradi posebnih jezikovnih oblik je jezik manj monoton, njegova specifikacija pa bolj zapletena, kar lahko povzroči težave, ko programi postanejo večji. Ta predstavitev je še posebej razširjena v skupnosti Lispa, saj ima zelo preprosto, običajno in površno sintakso, ki jo je mogoče zlahka spremeniti.

Izpeljani izrazi

kaj je skladenjski sladkor

Sintaksa sol. Metafora je bila razširjena z uvedbo tega izraza, ki označuje funkcijo, katere namen je otežiti pisanje slabe kode. Zlasti sintaktična sol je obroč, ki ga morajo programerji preskočiti, da dokažejo, da vedo, kaj se dogaja, namesto da bi izražala delovanje programa. Na primer, v Javi in Pascalu pripisovanje vrednosti s plavajočo vejico spremenljivki, deklarirani kot int, brez dodatne sintakse, ki bi izrecno navajala, da je namen povzroči napako pri sestavljanju, medtem ko C in C ++ samodejno skrajšata vsa števila s plavajočo vejico, dodeljena int. Vendar to ni skladnja, temveč semantika.

V jeziku C # skrivanje podedovanega člana razreda povzroči opozorilo prevajalnika, razen če je uporabljena ključna beseda, ki označuje, da je skrivanje namerno. S tem se izognemo morebitnim napakam zaradi podobnosti sintakse izjave switch s sintakso C ali C ++, C # zahteva prekinitev za vsako neprazno preklopno oznako primera, tudi če ne dovoljuje implicitne opustitve.

sintaktična sol lahko izniči namen kode, saj jo naredi neberljivo in s tem poslabša njeno kakovost. V skrajnem primeru je lahko glavno besedilo krajše od uvodnega dela, da se izpolnijo zahteve jezika.

Alternativa temu konceptu je ustvarjanje opozoril prevajalnika, kadar obstaja velika verjetnost, da je koda posledica napake, kar je praksa, ki je pogosta v sodobnih prevajalnikih C/C ++.

Sintaktični saharin

skodelica kave s smetano

Druga razširitev je tudi sirup. Podobno kot saharin pomeni tudi nerazumno sintakso, ki ne olajšuje programiranja.

Morda se zdi čudno, da jezik imenujemo "sladek", a če delate v Rubyistu, je to upravičeno. Ta program ima več sintaktičnega sladkorja kot številni drugi jeziki, ker poudarja človeško in ne računalniško razumevanje. Yukihiro Matsumoto, ustvarjalec Rubyja, je želel, da jezik ne bi bil le učinkovit, temveč tudi zabaven. Ta visoko strukturiran in nedvoumen slovnični oddelek je morda všeč sestavljavcem in tolmačem, vendar ga ljudje težko razumejo. Tu nastopi skladenjski sladkor, ki naredi jezik "slajši" tako pri pisanju kot pri branju.

Pisanje kode

sintaktični sladkor python

Pomembno se je zavedati, da "skladenjski sladkor" ni tehnični izraz, temveč konstrukt, ki je namenjen opisu načina izražanja jezika. Preprosto povedano, izraz pomeni optimizirano kodo za ljudi. Cilj je poenostaviti sintakso, da jo je enostavno brati, tudi če to zmanjšuje tehnično jasnost. Seveda pisanje sladke kode ne pomeni, da, da lahko manjka pomemben korak pri razumevanju.

Tako kot v resničnem življenju je tudi pri uporabi sladkorja pomembno vedeti, koliko sladkorja se porabi splošno stanje zdravje. Sladkor poenostavi kodo in jo naredi izrazito, vendar povzroči tudi dvoumnost. To je običajno posledica dejstva, da tega koncepta ne poznajo vsi in ga ne uporabljajo pri programiranju.

Članki na tem področju