Omistettu kieli (Englanti, täsmäkieli tai DSL ) on ohjelmointikieli , jonka ominaisuudet on suunniteltu täyttämään rajoitukset tietyn soveltamisala . Se vastustaa käsitteellisesti klassisia (tai yleisiä) ohjelmointikieliä, kuten Java tai C , joilla on taipumus käsitellä joukkoa verkkotunnuksia. Ei kuitenkaan ole yksimielisyyttä, joka määrittäisi tarkalleen, mikä on oma kieli. Omistetun kielen luonteen tarkan määritelmän puuttuminen vaikeuttaa käsitteen alkuperän selkeän historian luomista.
Tietojenkäsittelytieteessä erityiskielet käsittelevät erilaisia tietokonealoja (tietokonelentäjät, tieteellinen laskenta, tietokannat) tai käsittelevät useita muita aloja, joissa tietojenkäsittelytiede on mukana ( lääketiede , ilmailu ). Omistetun kielen käyttö ei ole ominaista tietokoneille, on kieliä, jotka on omistettu lääketieteen, ruoanlaiton jne. .
Omistettujen kielten rakenne eroaa pohjimmiltaan klassisen kielen rakenteesta. Kehitysprosessi voi olla hyvin monimutkainen. Sen suunnittelu edellyttää kaksoisosaamista kentällä ja IT-kehityksessä. Olipa kyseessä erillinen sisäinen tai ulkoinen kieli, tämän tyyppisen kielen käyttöönotto edellyttää suunnittelumallin käyttöä . On suunnittelumalleja, jotka kuvaavat toteutusta Spinelliksen kuvaamalla tavalla ja kuvaavat sen sijaan kielenkehityksen vaiheita. Vaikka nämä kaksi lähestymistapaa perustuvatkin eri ideoihin, ne täydentävät toisiaan.
Omistettujen kielten käytöllä on etuja ja haittoja verrattuna yleisten kielten käyttöön. Omistettujen kielten käytön perustelut voivat perustua teknologisiin tai taloudellisiin näkökohtiin. Toisaalta edut ja haitat eivät ole samat riippumatta siitä, onko kyseessä sisäinen vai ulkoinen oma kieli.
On omistettuja kieliä muilla kuin tietojenkäsittelytieteillä. Tunnetuimpia ovat erityisesti:
Voimme myös löytää sanakirjoja, jotka on omistettu lääketieteen, ruoanlaiton, filosofian jne. Kielelle . .
Verkkotunnukselle omistettu kieli ( englanniksi : domain-specific language tai DSL) tarjoaa tälle sovellusalueelle suunnatun merkinnän. Se perustuu kyseisen verkkotunnuksen käsitteisiin ja toimivuuteen. Sellaisenaan oma kieli on tehokas tapa kuvata ja luoda ohjelmia tietyllä alueella.
Gilles Mullerin mukaan oma kieli on ohjelmointikieli, joka on erityinen tiettyjen ongelmien perheelle, jota kutsutaan "domainiksi". Sen avulla ohjelmoija voi varmistaa, että hän rakentaa sopivan kielen ja että tämä kieli täyttää kohdealueen erityisvaatimukset.
Lisämääritelmän antavat Deursen, Klint ja Visser. Omistettu kieli on ohjelmointikieli tai suoritettava määrityskieli, joka tarjoaa sopivien notaatioiden ja abstraktien avulla ilmaisuvoiman, joka on keskittynyt tiettyyn alueeseen ja yleensä rajoitettu siihen.
Omistettuja kieliä on kahta tyyppiä: sisäiset omistetut kielet, joita kutsutaan myös sulautetuiksi kieliksi, tai sulautetut kielet ( englanniksi : toimialakohtainen upotettu kieli tai DSEL) ja ulkoiset erilliset kielet.
Ensimmäiset on tarkoitettu käytettäväksi ohjelman lähdekoodissa, ilmaistuna muualla toisella kielellä, jota kutsutaan isäntäkieleksi. Kielet, jotka soveltuvat hyvin upotetun kielen vastaanottoon, ovat esimerkiksi: Lisp, Haskell, Tcl ...
Jälkimmäisiä ei ole tarkoitettu lisälausekkeiksi toisella kielellä. Lähdekoodit ohjelmista, jotka ne sallivat toteuttaa, ovat itsenäisiä ja riippumattomia muista ohjelmointikielistä.
Wattin mukaan omistetulla kielellä on oltava tietyt kriteerit:
Omistettu kieli voi kehittyä sovellusalueen kehityksen mukaan. Sattuu myös, että oma kieli kehittyy yleiseksi ohjelmointikieleksi.
Omistettujen kielten käyttöalueet ovat hyvin vaihtelevat. Nämä kielet on kuitenkin luotu suorittamaan tietty tehtävä. Alla olevat esimerkit käytöstä ovat vain hyvin pieni osa omistettujen kielten käyttöalueista.
Esimerkki verkkosivujen luomisesta HTML: llä ja PHP: llä:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <!-- entre les balises <?php ?>, du code PHP inclus dans du code HTML --> <title><?php echo 'Hello World'; ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <!-- entre les balises <?php ?>, du code PHP inclus dans du code HTML --> <p><?php echo 'Hello World'; ?></p> </body> </html>Esimerkki SQL-kyselystä PHP: ssä.
<?php // Requete SQL à l'intérieur d'une variable PHP $query = "SELECT id, name FROM products ORDER BY name ;"; // PostgreSQL $result = pg_query($conn, $query); // MySQL $result = mysql_query($query); ?>Omistetuilla kielillä ei ole todellista historiaa, koska tarkasta määritelmästä ei ole todellista yksimielisyyttä.
Ensimmäisten ohjelmointikielien ( Cobol , Lisp , Fortran ) katsotaan itse olevan omistettuja kieliä, vaikka niitä ei ole nimetty sellaisiksi. Nämä ensimmäiset ohjelmointikielet oli itse asiassa omistettu sovellusalueelle. Soveltamismahdollisuuksien kehittyessä kielillä on taipumus yleistyä. Samanaikaisesti tuntui edelleen tarvetta erikoistuneille kielille erityistarpeiden ratkaisemiseksi. Löytyi useita ratkaisuja:
Termi "omistettu kieli" olisi ilmestynyt ensimmäistä kertaa vuonna Syyskuu 1984, julkaisussa JM Neighbors. Sitten löydämme ajatuksen omistetusta kielestä eri nimillä, erityisesti "petit langue" ( pieni kieli ) tai jopa "mikrokieli" vuonna 1986. Vuonna 1996 omistetun kielen käsitteellistäminen toteutettiin. Kirjoittajat keskustelevat erityisesti näkemyksestä omaksua lähestymistapa "toimialue todellisena maailmana" ( toimialue todellisena maailmana ) tai "toimialue järjestelmän kokonaisuutena" ( toimialue järjestelmän kokonaisuutena ) välillä omistetun mallintamiseksi. Kieli.
Omistettujen kielten toteutus on pohjimmiltaan erilainen kuin perinteisten ohjelmointikielien. Kehitysprosessi voi olla hyvin monimutkainen. Se vaatii asiantuntemusta kyseisellä alalla, mutta myös tietoa ohjelmointikielen suunnittelusta.
Käytännössä omistetun kielen kehittäminen ei ole yksinkertainen peräkkäinen prosessi, vaan iteratiivinen prosessi. Jotta kieli olisi mahdollisimman lähellä kohdealuetta, rakentaminen vaatii joko kaksinkertaisen taiton (sovellusalueen ja kieliohjelmoinnin) tai läheisen yhteistyön ohjelmoijaryhmän ja hoidettavan asiantuntijan välillä verkkotunnus.
Diomidis Spinellis (en) ja Anthony M Sloane tarjoavat omistettuja kielisuunnittelumalleja.
Omistetun kielen karakterisointimenetelmä määrittää, että se on kuvattava kahden syntaksin mukaisesti:
Se on rakennettava käyttämällä näitä kahta osaa, alkaen abstraktin syntaksin puusta ja täydentämällä yhtä tai useampaa betonin syntaksin haaraa.
Spinellis-mallit liittyvät pääasiassa omistettujen kielten käyttöönottoon, toisin kuin Sloane-mallit, jotka luokittelevat omistetun kielen kehityksen ja rakentamisen vaiheet. Spinellis tarjoaa kahdeksan muotoilumallia omistetuille kielille, jotka on jaettu kolmeen tyyppiin:
Rakennemallit ( upotetut kielet ( takapuoli ) ) Nämä mallit ovat kiinnostuneita omistetun kielen ja muiden kielten välisestä vuorovaikutuksesta. Se tarjoaa ohjelmointikielen omistettuna kielen isäntänä. Käyttäytymismallit ( putki ) Näiden mallien tarkoituksena on ratkaista omistettujen kielten kokoonpanon ongelmat. Järjestelmää voidaan kuvata käyttämällä omistettujen kielten perhettä kerroksittain, putki on tarkemmin elementti, jossa tämän omistettujen kielten perheen ohjeiden toteutus ja toteutus on jaettu. Luovat mallit Dedikoidut kielet ovat siis todellisia ohjelmointikieliä, joille on ominaista oma syntaksinsa ja semantiikkansa. Näiden kielten syntaksin, suunnittelun ja toteutuksen kuvaus vastaa Spinellisin kuutta luovaa mallia: Leksikaalinen käsittely ( leksikaalinen käsittely ) Tämä luovan leksikaalisen käsittelyn malli tarjoaa tehokkaan tavan suunnitella ja toteuttaa omistettujen kielten syntaksia. Kielen laajennus ( kielen laajennus ) Tätä mallia käytetään lisäämään uusia toimintoja olemassa olevaan omistettuun kieleen. Usein olemassa oleva kieli voi tehokkaasti palvella uutta tarvetta lisäämällä ytimeen joitain uusia toimintoja, jotka tekevät siitä peruskielen; Erikoiskieli ( kielellinen erikoistuminen ) Tämä malli eliminoi tai muuttaa peruskielen (tai yleiskielen) ominaisuuksia muodostaakseen omistetun kielen; Lähde-lähde-muunnos ( lähde-lähde-muunnos ) Omistettu kieliohjelma käännetään vastaavaksi ohjelmaksi yleisellä kielellä, jolloin kaikki tähän kieleen liittyvät työkalut voidaan käyttää uudelleen muuttamatta niitä. Tietorakenteiden esitys ( tietojen esittelyrakenne ) Monimutkaisia rakenteita on joskus vaikea ilmaista, omistetun kielen suunnittelu on mielenkiintoinen ratkaisu edustamaan monimutkaisia tietoja ja rakenteita; Etujärjestelmä ( järjestelmän etupää ) Tämä malli hallitsee omistetun kielijärjestelmän konfigurointia ja mukauttamista rajoittuen siihen, mikä on tarpeen tietyn sovelluksen luomiseksi. Sloanen mallitOmistetun kielen suunnittelu on vaikea tehtävä, on olemassa monia lähestymistapoja, jotka liittyvät lähinnä toimialueen rajoituksiin. Useita luokituksia on ehdotettu kunkin käsityksen motivaatioiden ja rajojen, kuten kielen kehityksen vaiheiden mukaan luokiteltujen Sloane-mallien, ymmärtämiseksi paremmin. Sloanen kehityksen eri vaiheet ovat seuraavat:
Eri kielten erityispiirteiden lisäksi omistetun kielen käytöllä on yleisiä kieliä verrattuna etuja ja haittoja.
Lisätietoja taloudellisista vaikutuksista on kohdassa Taloudelliset kysymykset .
Sisäisten omistettujen kielten edut
Ulkoisten omistettujen kielten etu
Verkkotunnukselle omistettujen kielten käyttöön liittyy useita taloudellisia kysymyksiä, kuten oppimiskustannukset ja ylläpitokustannukset.
Yksi taloudellisista kysymyksistä koskee kielten oppimiseen käytettyä aikaa. Itse asiassa yleisen kielen oppimiskustannukset voidaan helpommin vähentää kerrottamalla käsiteltävät käyttöalat. Omistetun kielen tapauksessa vaimennuskenttä on pienempi käyttöalasta riippuen. On tarpeen pystyä mittaamaan sen käytön tuottama tuottavuuden lisäys ja määrittämään, missä määrin tämä voitto kompensoi oppimisajan.
Toisaalta keskustellaan myös omistettujen kielten käytöstä opetuksessa. On mahdollista tarjota omistetun kielen oppiminen, jota opiskelijat voivat käyttää oppimaan muita yleisiä kieliä. On myös mahdollista tarjota useiden yleisten kielten oppiminen, jotta voidaan sitten käyttää omistettuja kieliä käyttöalueen mukaan.
Omistetun kielen käyttö tarkoittaa sen käyttöönottoa. Taloudellisia vaikutuksia mitattaessa on otettava huomioon myös kielen kehittämisen alkukustannukset. Paul Hudak (en) ehdottaa lähestymistapaa näiden alkukustannusten rajoittamiseksi. Tämä lähestymistapa perustuu sulautettuihin (sisäisiin) omistettuihin kieliin. Periaatteena on hyödyntää yleisen kielen kehitysympäristön infrastruktuuria ja työkaluja.
Yksi taloudellisista haasteista on tuotettujen ohjelmien ylläpidettävyys sekä mahdollisuus kielenkehitykseen. Omistetun kielen ylläpitokustannukset ovat itse asiassa alhaisemmat kuin yleisen kielen.
(en) Organisaatioalueen mallinnus: tekninen raportti STARS-VC-A025 / 001/00, Synquiry Technologies,1996, 509 Sivumäärä ( lue verkossa )