Programmēšana

DSL izveide Java, 1. daļa: Kas ir domēnam raksturīgā valoda?

Ja esat kādreiz uzrakstījis makefailu vai izveidojis Web lapu ar CSS, jūs jau esat saskāries ar DSL vai domēna valodu. DSL ir mazas, izteiksmīgas programmēšanas valodas, kas paredzētas īpašiem uzdevumiem. Šajā četrdaļīgajā sērijā Venkat Subramaniam iepazīstina ar DSL jēdzienu un galu galā parāda, kā tos veidot, izmantojot Java. Šajā pirmajā rakstā Venkat paskaidro, kas ir DSL, un nosaka atšķirību starp ārējo DSL un iekšējo. Pēc tam viņš norāda uz dažiem DSL, kurus jūs, iespējams, izmantojat gadiem ilgi, iespējams, pat nenojaušot.

Ja esat iesaistījies rakstīšanā vai pat tikai lietojis lietojumprogrammas, iespējams, ka esat jau saskāries ar domēnam raksturīgām valodām vai DSL, pat ja to vēl nezinājāt. Atslēgvārda ievades fails lietojumprogrammai, kas saņem ievades datus, ir DSL. Konfigurācijas fails ir DSL. Makefile ir DSL, ko izmanto, lai norādītu kārtulas un atkarības lietojumprogrammas izveidošanai. Ja esat uzrakstījis kādu no šiem, jau esat veicis pirmos soļus, lai izveidotu domēna valodas.

Vārds valoda frāzē var likties, ka DSL izmantos sintaksi noteiktu semantikas izteikšanai. Atšķirībā no vispārējas nozīmes valodas, piemēram, Java, DSL darbības joma un iespējas ir diezgan ierobežotas; kā norāda nosaukums, DSL ir ļoti koncentrējušies uz noteikta veida problēmu vai domēnu un uz šauru risinājumu kopas izteikšanu šīs ierobežotās darbības ietvaros. Un tas ir labi - DSL ir vienkārši un kodolīgi.

Labi, tas ir L; kā ar D un S?

Vārds domēns DSL attiecas uz "zināšanu, ietekmes vai darbības jomu vai sfēru". (Lai iegūtu papildinformāciju, skatiet Ērika Evansa domēnu vadītu dizainu.) Koncentrējoties uz domēnu, iegūstat: kontekstā - loģisks ietvars, kurā varat izstrādāt lietojumprogrammas modeļus.

Vārds specifiski DSL sniedz jums ierobežotu kontekstu. Tas palīdz saglabāt lietas atbilstošas, mērķtiecīgas, saīsinātas un izteiksmīgas.

Vienkāršība ir izšķiroša DSL panākumiem. Personai, kas pārzina valodas domēnu, tas ir viegli jāsaprot. Piemēram, ja veidojat DSL, kuru aktuāri izmantos, lai apdrošināšanas jomā paustu biznesa noteikumus, jūs nevēlaties, lai viņi daudz laika pavadītu sarežģītas un sarežģītas valodas apguvē. Jūs vēlaties, lai viņi koncentrētos uz to, lai paustu detaļas, kas saistītas ar apdrošināšanas riskiem, tādā veidā, lai viņi varētu viegli saprast, apspriest, attīstīties un uzturēt. DSL, kuru viņiem izveidojat, jāveido, pamatojoties uz viņu vārdu krājumu, terminiem, kurus viņi ikdienā lieto, lai sazinātos ar vienaudžiem. Jūs vēlaties, lai viņi izmanto jūsu sniegto sintaksi, taču viņiem šķiet, ka viņi tikai norāda dažus atsevišķus noteikumus. Viņiem vajadzētu to izdarīt, neradot iespaidu, ka viņi patiešām programmē vai pat lieto kaut kādu valodu.

Labas DSL izveide ir līdzīga barojošas maltītes pagatavošanai; tāpat kā jūs vēlaties, lai bērni ēd dārzeņus, nemanot un nedomājot par tiem, jūs vēlaties, lai klienti izmantotu jūsu DSL, neuztraucoties par tā sintaksi.

Lakonitāte ir vēl viena laba DSL rakstīšanas sastāvdaļa, kas nozīmē gan sintētiskas, gan izteiksmīgas sintakses izvēli. Saprātīgums saprāta robežās atvieglo koda lasīšanu un uzturēšanu. Izteiksme palīdz veicināt saziņu, sapratni un ātrumu. Piemēram, kādam, kurš saprot matricas reizināšanu, matrica A. reizināt (matrica B); ir mazāk izteiksmīgs un kodolīgs nekā matricaA * matricaB. Pirmais ir saistīts ar funkciju izsaukšanu un iekavu izmantošanu, kā arī iebiedējošu semikolu. Pēdējais jau ir izteiciens, kas būs diezgan pazīstams.

$config[zx-auto] not found$config[zx-overlay] not found