Mercury (ohjelmointikieli)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 11. elokuuta 2016 tarkistetusta versiosta . tarkastukset vaativat 4 muokkausta .
Merkurius
Kieliluokka looginen , toimiva
Esiintyi 1995
Tekijä Zoltan Somogyi
Kehittäjä Melbournen yliopisto
Tiedostotunniste _ .m
Vapauta 22.1. (31.3.2022 ) ( 31.3.2022 )
Tyyppijärjestelmä tiukka , staattinen , polymorfinen
Tärkeimmät toteutukset Melbourne Mercury -kääntäjä
Vaikutettu Prolog , Haskell
Lisenssi GPL kääntäjälle, LGPL vakiokirjastolle
Verkkosivusto mercurylang.org

Mercury  on vahvasti kirjoitettu toiminnallinen logiikkaohjelmointikieli , joka on suunniteltu ratkaisemaan seuraavat kaksi ongelmaa, jotka syntyvät käytettäessä klassista Prolog -logiikkaohjelmointikieltä :

  1. suorituskyky ongelma. Loogisten ohjelmointikielten nykyaikaiset toteutukset ovat suorituskyvyltään huonompia kuin imperatiivisten ohjelmointikielten toteutukset .
  2. virheenkorjausongelma. Loogisten ohjelmointikielten toteutukset suorittavat vähemmän käännösaikatarkastuksia kuin imperatiivisten ohjelmointikielten toteutukset. Tämä pakottaa ohjelmoijan löytämään virheet itse ja ilman mitään merkittävää debuggerin apua.

Kieli kehitettiin Melbournen yliopistossa . Ensimmäisen version julkaisivat Fergus Henderson, Thomas Conway ja Zoltan Somogyi 8. huhtikuuta 1995 .

Ominaisuudet

Mercuryn syntaksi on osittain peritty Prologilta, tyyppijärjestelmä on samanlainen kuin Haskell . Tämä on puhtaasti deklaratiivinen kieli, kehittäjät poistivat siitä kokonaan kaikki välttämättömät ominaisuudet, mikä mahdollisti kääntäjän sisäänrakennettujen optimointiominaisuuksien parantamisen . Nimi Mercury on annettu nopeuden jumalan Mercuryn kunniaksi ja heijastaa keskittymistä nopeiden ohjelmien saamiseen. Operaatiot, jotka normaalisti välttäisivät puhtaasti deklaratiivisen lähestymistavan, kuten I/O , ilmaistaan ​​Mercuryssa deklaratiivisilla konstruktioilla, jotka käyttävät lineaarisia tyyppejä .

Toteutus

Mercuryn kielen kääntäjä on kirjoitettu itse kielellä. Ennen kuin Mercury-kääntäjä pystyi kääntämään itsensä, käytettiin Prolog -kieltä . Sitä jaetaan GPL-lisenssin ehdoilla ja se toimii kaikissa nykyaikaisissa käyttöjärjestelmissä. On mahdollista kääntää koodia monille suosituille ohjelmointikielille, kuten: C , Java , Erlang , IL .NET - alustalle .

Vuodesta 2010 lähtien Project Mercurylla on ollut 6 kuukauden julkaisujakso, jossa pääversionumero vastaa julkaisuvuotta, alaversionumero vastaa kuukautta, jolloin julkaisutyö aloitettiin. Aiemmissa versioissa numerot olivat kuten 0.12, 0.13… ja vakaiden versioiden julkaisujen välinen aika oli hyvin pitkä (noin 3 vuotta).

Mercury-kääntäjä jaetaan virallisella sivustolla lähdekoodina, Windows -käyttäjät voivat myös käyttää epävirallista winmercury-jakelua. Tämä on kätevä asennusohjelma, joka asentaa MinGW :n , GCC-kääntäjän ja kaikki tarvittavat Mercury-tiedostot käännetyssä ja konfiguroidussa muodossa. Se sisältää myös HTML-ohjetiedoston , jossa on kätevä sisällysluettelo ja hakemisto, sekä Vim -editorin laajennuksen . Mercuryn viimeisin versio tähän mennessä on 20.01.2.

Esimerkkejä

hei maailma :

:- moduuli hei . :- käyttöliittymä . : - import_module.io . :- pred main ( io : :di , io : :uo ) on det . :- toteutus . pää (! IO ) :- io . write_string ( "Hei, maailma!\n" , ! IO ).

10. Fibonacci-luvun laskeminen (ilmeimmällä tavalla) [1] :

: - moduulifib . :- käyttöliittymä . : - import_module.io . :- pred main ( io : :di , io : :uo ) on det . :- toteutus . :- import_module int . :- func fib ( int ) = int . fib ( N ) = ( jos N = < 2 , niin 1 muu fib ( N - 1 ) + fib ( N - 2 )). pää (! IO ) :- io . kirjoitusmerkkijono ( "fib(10) = " , ! IO ), io . write_int ( fib ( 10 ), ! IO ), io . nl (! IO ). % Voisi sen sijaan käyttää muotoa io.format("fib(10) =%d\n", [i(fib(10))], !IO).

Muistiinpanot

  1. Perustuu Ralph Becketin Mercury-opetusohjelmaan , arkistoitu 21. syyskuuta 2020 Wayback Machinessa

Linkit