Zahărul sintactic: definiție, origine și exemple

În informatică, zahărul sintactic este lingvistica într-un limbaj de programare. Acesta este conceput pentru a face codul mai ușor, mai ușor de citit și mai expresiv. Acest zahăr face ca limba să fie mai "dulce" pentru uzul uman. Adică, lucrurile pot fi exprimate clar, pe scurt sau într-un stil alternativ pe care unii îl preferă.

Zahărul sintactic: ce este?

Zahăr sintactic, definiție

Multe limbajele de programare oferă secțiune gramaticală specială pentru actualizarea elementelor. În abstract, o referință la un anumit obiect este o procedură cu două argumente: un array și un indice inferior, care poate fi exprimată astfel get_array(Array, vector(i, j)). În schimb, multe limbaje oferă o sintaxă precum Array [i, j]. În mod similar, actualizarea unui element dintr-o matrice, de exemplu, set_array(Array, vector(i, j), valoare), este o procedură cu trei argumente, dar mulți profesioniști oferă un astfel de cod, cum ar fi Array[i, j] = valoare.

O construcție dintr-un limbaj se numește "zahăr sintactic" dacă poate fi eliminată din program fără a afecta în vreun fel funcționalitatea sau expresivitatea acestuia.

Diferite procesoare, inclusiv compilatoare și analizoare statice, extind adesea construcțiile îndulcite la dispozitive mai fundamentale înainte de procesare. Un astfel de proces se numește "desaging".

Origini

Termenul "zahăr sintactic" a fost inventat de Peter J. Hughes, care a inventat termenul "zahăr sintactic". Landin în 1964 pentru a descrie departamentul de gramatică de suprafață al ALGOL-ului simplu, un limbaj de programare care era definit semantic în termeni de expresii lambda-calculus aplicative, concentrându-se pe înlocuirea lexicală a lui λ cu "unde".

Limbaje de programare ulterioare, cum ar fi CLU, ML și Scheme, au extins termenul pentru a se referi la o derivare într-un limbaj care poate fi definit ca zahăr sintactic în termeni de construcții de bază. Funcțiile convenabile de nivel superior pot fi "dezagregate" și descompuse într-un subset. Aceasta este, de fapt, o practică matematică obișnuită de construire din primitive.

Pornind de la distincția lui Landin între construcțiile lingvistice de bază și proprietățile zahărului sintactic, Matthias Fellisen a propus, în 1991, o codificare a "puterii expresive" pentru a se conforma cu convingerile larg răspândite în literatura de specialitate. El a definit ca "mai multivalent" pentru a desemna faptul că, în lipsa construcțiilor lingvistice în cauză, programul ar trebui complet reorganizat.

Exemple cunoscute de zahăr sintactic

Zahăr sintactic, exemple

În COBOL, multe dintre cuvintele cheie intermediare sunt "dulci", adică pot fi omise dacă se dorește. De exemplu, propoziția MOVE A B. și MOVE A TO B. îndeplinesc exact aceeași funcție, dar cea de-a doua face mai explicită acțiunea care trebuie efectuată.

Operatori de atribuire compuși extinși: de exemplu, a += b este echivalent cu a = a + b în C și limbaje similare, presupunând că a nu are efecte secundare, de exemplu, a este o variabilă obișnuită dacă.

În Perl, unless (condiție) {...} este sintactic if (not condition) {...}. În plus, orice operator poate fi urmat de condiția ca declarație if condition echivalent cu if (condition) {statement}, dar prima este mai natural formatată pe un singur rând.

În C, indicatorii la începutul unui element de memorie pot fi scriși fără sintaxe speciale: *(a + i). Deși în acest limbaj există o sintaxă specială pentru acest proces: a[i]. În mod similar,, a->x, record este zahărul sintactic pentru accesarea membrilor folosind operatorul de dereferențiere (*a). x.

Utilizarea

Declarația din C # asigură că unele obiecte sunt eliminate corect. Compilatorul extinde declarația în blocul try-finally.

Limbajul C # vă permite să declarați variabilele ca fiind var x = expr, care permite compilatorului să emită tipul x din expresia expr, în loc să fie nevoie de o declarație explicită.

Listele conțin, de asemenea, zahăr sintactic Python (de ex, [x*x pentru x în intervalul (10)] pentru o listă de pătrate) și decoratori (@staticmethod).

În Haskell, un șir notat cu ghilimele este echivalent semantic cu un număr de caractere.

În pachetul rvest, se găsește denumirea %>%, și spune că datele (sau rezultatul funcției) care îl precedă vor servi drept prim argument al instrumentului următor. Acest lucru oferă un flux mai liniar și un design mai liniar de manipulare a datelor. Tidyverse este scris pentru a plasa valori.

Critica

proprietatea zahărului sintactic

Unii programatori consideră că aceste caracteristici de sintaxă sunt fie neimportante, fie pur și simplu nu sunt serioase. În special, formele lingvistice speciale fac limbajul mai puțin monoton și specificația sa mai complexă, și pot cauza probleme pe măsură ce programele devin mai mari. Această reprezentare este deosebit de răspândită în comunitatea Lisp, deoarece are o sintaxă foarte simplă, regulată și superficială, care poate fi schimbată cu ușurință.

Termeni derivați

zahăr sintactic ce este acesta

Sare sintactică. Metafora a fost extinsă prin introducerea termenului, care se referă la o funcție menită să îngreuneze scrierea de coduri proaste. În special, sarea sintactică este un cerc prin care programatorii trebuie să treacă pentru a dovedi că știu ce se întâmplă, mai degrabă decât să exprime acțiunea programului. De exemplu, în Java și Pascal, atribuirea unei valori în virgulă mobilă la o variabilă declarată ca int, fără o sintaxă suplimentară care să precizeze explicit, această intenție va cauza o eroare la compilare, în timp ce C și C ++ trunchiază automat toate numerele în virgulă mobilă atribuite la int. Cu toate acestea, nu este vorba de sintaxă, ci de semantică.

În C # ascunderea unui membru al unei clase moștenite generează un avertisment de compilare, cu excepția cazului în care se folosește un cuvânt cheie pentru a indica faptul că ascunderea este intenționată. Acest lucru este pentru a evita posibilele erori datorate asemănării dintre comutatorul de declarații sintactice și cel din C sau C ++, C # necesită o întrerupere pentru fiecare comutator de etichete de caz nevid, chiar dacă nu permite o scădere implicită.

Sarea de sintaxă își poate anula scopul, făcând codul ilizibil și degradând astfel calitatea acestuia. În cazuri extreme, partea principală poate fi mai scurtă decât partea suplimentară introdusă pentru a satisface cerințele lingvistice.

O alternativă la aceasta este generarea de avertismente de compilator, atunci când există o probabilitate mare ca codul să fie rezultatul unei erori, o practică comună în compilatoarele moderne C / C ++.

Sacarină sintactică

ceașcă de cafea cu frișcă

O altă extensie este, de asemenea, sirop. De asemenea, la fel ca și zaharina, înseamnă o sintaxă nerezonabilă care nu ușurează deloc programarea.

Poate părea ciudat să numești limbajul "dulce", dar dacă lucrezi în Rubyist, este justificat. Acest program are mai mult zahăr sintactic decât multe alte limbaje, deoarece pune accentul pe înțelegerea umană în detrimentul înțelegerii de către calculator. Creatorul lui Ruby, Yukihiro Matsumoto, a vrut să facă limbajul nu doar eficient, ci și distractiv. Compilatoarelor și interpreților le poate plăcea acest departament gramatical foarte structurat și lipsit de ambiguitate, dar oamenii pot avea dificultăți în a-l înțelege. Aici intervine zahărul sintactic - acesta face ca limbajul să fie mai "dulce" atât la scris cât și la citit.

Scrierea codului

zahăr sintactic python

Rețineți că "zahărul sintactic" nu este un termen tehnic, ci o construcție concepută pentru a ajuta la descrierea modului în care este exprimat limbajul. Pur și simplu, termenul implică un cod optimizat pentru oameni. Scopul este de a simplifica sintaxa, astfel încât să fie ușor de citit, chiar dacă acest lucru reduce o anumită claritate tehnică. Desigur, scrierea de cod dulce nu înseamnă că, că poți.. pentru a sări peste pasul important de a înțelege.

Ca și în viața reală, să știi cât zahăr să folosești este important pentru sănătate generală sănătate. Sugar face codul simplu și expresiv, dar provoacă și ambiguitate. Acest lucru se datorează de obicei faptului că nu toată lumea cunoaște și aplică acest concept în programare.

Articole pe această temă