Mercury (programozási nyelv)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2016. augusztus 11-én felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .
Higany
Nyelvóra logikus , funkcionális
Megjelent 1995
Szerző Somogyi Zoltán
Fejlesztő Melbourne-i Egyetem
Fájlkiterjesztés _ .m
Kiadás 01/22 (2022. március 31. ) ( 2022-03-31 )
Típusrendszer szigorú , statikus , polimorf
Főbb megvalósítások Melbourne Mercury fordító
Befolyásolva Prolog , Haskell
Engedély GPL a fordítóhoz, LGPL a szabványos könyvtárhoz
Weboldal mercurylang.org

A Mercury  egy erősen tipizált funkcionális logikai programozási nyelv, amelyet a következő két probléma megoldására terveztek , amelyek a klasszikus Prolog logikai programozási nyelv használatakor merülnek fel :

  1. teljesítmény probléma. A logikai programozási nyelvek modern megvalósításai teljesítményükben gyengébbek, mint az imperatív típusú programozási nyelvek megvalósításai .
  2. hibakeresési probléma. A logikai programozási nyelvek implementációi kevesebb fordítási időbeli ellenőrzést hajtanak végre, mint az imperatív típusú programozási nyelvek. Ez arra kényszeríti a programozót, hogy önállóan és a hibakereső jelentős segítsége nélkül találjon hibákat.

A nyelvet a Melbourne-i Egyetemen fejlesztették ki . Az első verziót Fergus Henderson, Thomas Conway és Somogyi Zoltán adta ki 1995. április 8- án .

Jellemzők

A Mercury szintaxisát részben a Prolog örökölte, a típusrendszer hasonló a Haskellhez . Ez egy tisztán deklaratív nyelv, a fejlesztők teljesen eltávolították belőle az összes kötelező funkciót, ami lehetővé tette a fordítóba épített optimalizálási képességek fejlesztését . A Mercury nevet a sebesség istenének, Mercurynak a tiszteletére adták, és a nagysebességű programok elérésére való összpontosítást tükrözi. Azokat a műveleteket, amelyek általában elkerülik a tisztán deklaratív megközelítést, mint például az I/O , a Mercury lineáris típusokat használó deklaratív konstrukciókkal fejezi ki .

Megvalósítás

A Mercury nyelvi fordítója magán a nyelven van írva. Mielőtt a Mercury fordító tudta volna lefordítani magát, a Prolog nyelvet használták . A GPL licenc feltételei szerint terjesztik, és minden modern operációs rendszeren működik. Lehetőség van a kód lefordítására számos népszerű programozási nyelvre, például: C , Java , Erlang , IL .NET platformhoz .

2010 óta a Project Mercury 6 hónapos kiadási ciklussal rendelkezik, ahol a főverziószám a kiadás évének, a mellékverziószám pedig annak a hónapnak felel meg, amelyben a kiadással kapcsolatos munka elkezdődött. A korábbi verziók olyan számokkal rendelkeztek, mint 0,12, 0,13… és a stabil verziók megjelenése közötti idő nagyon hosszú volt (kb. 3 év).

A Mercury fordító a hivatalos oldalon forráskódban kerül terjesztésre, a Windows felhasználók a nem hivatalos winmercury disztribúciót is használhatják. Ez egy praktikus telepítő, amely lefordított és konfigurált formában telepíti a MinGW -t , a GCC fordítót és az összes szükséges Mercury-fájlt. Tartalmaz továbbá egy HTML súgófájlt praktikus tartalomjegyzékkel és indexszel, valamint egy beépülő modult a Vim szerkesztőhöz . A Mercury legújabb verziója a mai napig 20.01.2.

Példák

szia világ :

:- modul hello . :- interfész . : - import_module.io . :- pred main ( io : :di , io : :uo ) a det . :- megvalósítás . (! IO ) :- io . write_string ( "Hello, World!\n" , ! IO ).

A 10. Fibonacci-szám kiszámítása (a legkézenfekvőbb módon) [1] :

:- modul fib . :- interfész . : - import_module.io . :- pred main ( io : :di , io : :uo ) a det . :- megvalósítás . :- import_module int . :- func fib ( int ) = int . fib ( N ) = ( ha N =< 2 , akkor 1 különben fib ( N - 1 ) + fib ( N - 2 )). (! IO ) :- io . write_string ( "fib(10) = " , ! IO ), io . write_int ( fib ( 10 ), ! IO ), io . nl (! IO ). % Ehelyett használhatja az io.format("fib(10) =%d\n", [i(fib(10))], !IO).

Jegyzetek

  1. Ralph Becket Mercury oktatóanyaga alapján archiválva 2020. szeptember 21-én a Wayback Machine -nél

Linkek