Ohjelmointi

DSL-tiedostojen luominen Java-sovelluksessa, osa 1: Mikä on toimialakohtainen kieli?

Jos olet joskus kirjoittanut makefileen tai suunnitellut Web-sivun CSS: llä, olet jo havainnut DSL: n tai toimialakohtaisen kielen. DSL: t ovat pieniä, ilmeikkäitä ohjelmointikieliä, jotka on räätälöity tiettyihin tehtäviin. Tässä neliosaisessa sarjassa Venkat Subramaniam esittelee DSL: ien käsitteen ja näyttää lopulta, kuinka ne voidaan rakentaa Java-sovelluksella. Tässä ensimmäisessä artikkelissa Venkat selittää, mikä on DSL, ja määrittää eron ulkoisen DSL: n ja sisäisen välillä. Sitten hän huomauttaa joitain DSL: itä, joita olet todennäköisesti käyttänyt vuosia, ehkä edes tajuamatta sitä.

Jos olet ollut mukana kirjoittamassa tai edes vain käyttänyt sovelluksia, on todennäköistä, että olet jo kohdannut verkkotunnuskohtaisia ​​kieliä tai DSL: itä, vaikka et ymmärtäisi sitä tuolloin. Avainsanan syötetiedosto sovellukseen, joka vastaanottaa syötetietoja, on DSL. Kokoonpanotiedosto on DSL. Makefile on DSL, jolla määritetään säännöt ja riippuvuudet sovelluksen rakentamiseksi. Jos olet kirjoittanut jonkin näistä, olet jo ottanut ensimmäiset vaiheet verkkotunnuskohtaisten kielten luomiseen.

Sana Kieli lauseessa voi johtaa siihen, että DSL käyttää syntaksia tiettyjen semantiikan ilmaisemiseen. Toisin kuin yleiskäyttöinen kieli, kuten Java, DSL: n soveltamisala ja kyvyt ovat melko rajalliset; kuten nimestä voi päätellä, DSL: t keskittyvät innokkaasti tietyntyyppiseen ongelmaan tai verkkotunnukseen ja kapean ratkaisujoukon ilmaisemiseen tämän rajoitetun laajuuden yhteydessä. Ja se on hyvä asia - DSL: t ovat yksinkertaisia ​​ja ytimekkäitä.

Okei, se on L; entä D ja S?

Sana verkkotunnus DSL viittaa "tietoon, vaikutusalueeseen tai toimintaan liittyvälle alueelle tai alueelle". (Lisätietoja on Eric Evansin toimialueohjatussa suunnittelussa.) Toimialueelle keskittyminen antaa sinulle yhteydessä - looginen kehys, jonka sisällä voit kehittää malleja sovellukselle.

Sana erityinen DSL antaa sinulle rajatun kontekstin. Se auttaa pitämään asiat merkityksellisinä, keskittyneinä, suppeaina ja ilmeikkäinä.

Yksinkertaisuus on kriittinen tekijä DSL: n menestykselle. Henkilön, joka tuntee kielen toimialueen, on ymmärrettävä se helposti. Esimerkiksi, jos luot DSL: n, jota vakuutusmatemaattorit käyttävät ilmaisemaan liiketoimintasääntöjä vakuutusalalla, et halua heidän käyttävän paljon aikaa vaikean ja monimutkaisen kielen oppimiseen. Haluat heidän keskittyvän vakuutusriskeihin liittyvien yksityiskohtien ilmaisemiseen tavalla, jonka he voivat helposti ymmärtää, keskustella, kehittyä ja ylläpitää. Heille luomasi DSL on rakennettava heidän sanastoonsa, termeihin, joita he käyttävät päivittäin kommunikoidakseen ikäisensä kanssa. Haluat heidän käyttävän antamaasi syntaksia, mutta heidän pitäisi tuntua, että he vain määrittelevät joitain erillisiä sääntöjä. Ja heidän pitäisi pystyä tekemään niin saamatta vaikutelmaa, että he todella ohjelmoivat tai edes käyttävät jonkinlaista kieltä.

Hyvän DSL: n luominen on kuin ravitsevan aterian keittäminen; Aivan kuten haluat, että lapset syövät vihanneksia ymmärtämättä niitä ja murehtimatta niistä, haluat asiakkaiden käyttävän DSL: ääsi huolimatta sen syntaksista.

Tiiviys on toinen osa hyvän DSL: n kirjoittamista, mikä tarkoittaa sekä lyhyen että ilmeellisen syntaksin valitsemista. Syvyys järjen sisällä helpottaa koodisi lukemista ja ylläpitämistä. Ilmeikkyys auttaa edistämään viestintää, ymmärrystä ja nopeutta. Esimerkiksi jollekulle, joka ymmärtää matriisin kertomisen, matriisi A. moninkertaisesti (matriisi B); on vähemmän ilmeikäs ja ytimekäs kuin matriisiA * matriisiB. Ensimmäiseen liittyy toimintojen kutsuminen ja sulkeiden käyttö, ja siihen sisältyy pelottava puolipiste. Jälkimmäinen on jo ilmaus, joka tulee olemaan melko tuttu.

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