Mercury

Allikas: Teadmusbaas

Mercury(programmeerimise keel)

Mercury on funktsionaalne loogika programmeerimiskeel, mis on loodud reaalseks kasutamiseks. Esimene versioon töötati välja Melbourne'i ülikoolis arvutiteaduse osakonnas Fergus Hendersoni, Thomas Conway ja Zoltan Somogyi all Somogyi järelevalve all ning see avaldati 8. aprillil 1995.

Mercury on puhtalt deklaratiivne loogika programmeerimiskeel. See on seotud nii Prologi kui Haskelliga. [1] See sisaldab tugevat, staatilist, polümorfset tüüpi süsteemi ning tugeva režiimi ja determinismi süsteemi.

Melbourne Mercury Compiler ametlik rakendus on saadaval enamikele Unixi ja Unix-tüüpi platvormidele, sealhulgas Linuxile, macOS-ile ja Windowsile (ainult 32 bitti).

Ülevaade

Mercury põhineb loogikalises programmeerimiskeeles Prolog. Sellel on sama süntaks ja samad aluspõhimõtted nagu SLD lahendusalgoritm. Seda saab vaadelda Prologi puhas alamkogus, millel on tugevaid tüüpe ja režiime. Sellisena võrreldakse seda sageli oma eelkäijaga funktsioonide ja jooksva efektiivsuse poolest.

Keel on loodud tarkvaratehnika põhimõtete abil. Erinevalt Prologi esialgsetest rakendustest on sellel eraldi koostamise faas, mitte otseselt tõlgitud. See võimaldab enne programmi käivitamist tuvastada palju suurema hulga vigu. See sisaldab rangeid staatilisi tüübi ja režiimide süsteemi ja moodulite süsteemi.

Kompileerimisel saadud teabe (nt tüüp ja režiim) abil kasutab Mercury tavaliselt kirjutatud programme oluliselt kiiremini kui Prologis kirjutatud samaväärseid programme. Selle autorid väidavad, et Mercury on maailmas kõige kiiremini loogiline keel, laialdaselt.

Erinevalt Prologist on elavhõbe puhtalt deklaratiivne keel, kuna sellel ei ole äärmiselt loogilisi Prologi avaldusi nagu lõigatud ja hädavajalik sisend / väljund (I / O). See võimaldab täiustatud staatilise programmi analüüsi ja programmi optimeerimist, sealhulgas kompileerimise aja prügi kogumist , kuid see võib teha teatavaid programmeerimiskonstruktsioone (näiteks mitmete valikute lülitamine vaikimisi (dubious - discuss)), mida on keerulisem väljendada . (Kuigi Mercury võimaldab lubamatut funktsionaalsust, toimib see peamiselt võõrkeelsete koodide nimetamise viisina. Kogu ebatäpne kood peab olema selgesõnaliselt märgitud.) Operatsioone, mis tavaliselt on ebapuhtavad (näiteks sisend / väljund), väljendatakse kasutades puhtaid elavhõbe konstruktsioone, kasutades lineaarsete tüüpide abil, muutes kogu asjakohase koodi abil näiva maailma väärtuse.

Mercury'i kirjutatud märkimisväärsed programmid hõlmavad Mercury kompilaatorit ja Prince XML-vormingut. Tarkvaraettevõte Mission Critical IT on alates 2000. aastast kasutanud ka Mercury'i, et arendada ettevõtte rakendusi ja oma Ontoloogia-juhitud tarkvaraarenduse platvormi ODASE.

Back-end

Mercuryl on mitu Backendi, mis võimaldavad Mercuril koodi koostamist mitmetesse keeltesse, sealhulgas:

Tootmise tase

Madal tasemel C GNU kompilaatori kogumiseks (GCC), originaal Mercury back-end Kõrgel tasemel C Java C # Erlang

Ajalugu

Assembly language via the GCC back-end Aditi, a deductive database system also developed at the University of Melbourne. Mercury-0.12.2 is the last version to support Aditi.[citation needed] Common Intermediate Language (CIL) for the .NET Framework Mercury also features a foreign language interface, allowing code in other languages (depending on the chosen back-end) to be linked with Mercury code. The following foreign languages are possible:

Back-end Võõrkeel(keeled)
C (both levels) C
Java Java
Erlang Erlang
IL Common Intermediate Language (CIL) or C#

Siis saab teisi keeli omavahel ühendada, helistades neid nendest keeltest. Siiski tähendab see, et võõrkeelsete koodide jaoks võib vaja minna mitmesuguste taustaprogrammide jaoks mitu korda kirjutatavaks, vastasel juhul kaob backendside teisaldatavus.

Kõige sagedamini kasutatav tagakülg on esialgne madala C-tasandi tagapaneel.

Tõlge siit

Tõlkis Lauri Nugiseks TA15.