Mercury: Llenguatge de programació

Mercury és un llenguatge de programació lògic-funcional dirigit a aplicacions del món real.

Mercury: Característiques, Rerefons, Example: Hola món Per a altres significats, vegeu «Mercury (desambiguació)».

Està desenvolupat a la Universitat de Melbourne sota la supervisió de Zoltan Somogyi. La primera versió va ser desenvolupada per Fergus Henderson, Thomas Conway i Zoltan Somogyi i va ser editada l'abril del 1995.

Infotaula de llenguatge de programacióMercury
Tipusllenguatge de programació, llenguatge de programació funcional, llenguatge de programació orientat a objectes, llenguatge de programació purament funcional i llenguatge de programació multiparadigma Modifica el valor a Wikidata
Data de creació8 abril 1995 Modifica el valor a Wikidata
DesenvolupadorUniversitat de Melbourne Modifica el valor a Wikidata
Paradigma de programacióprogramació lògica, programació orientada a objectes, programació funcional, programació multiparadigma i purely functional programming (en) Tradueix Modifica el valor a Wikidata
Darrera versió estable22.01.8 () Modifica el valor a Wikidata
Influenciat perProlog, Haskell i Hope Modifica el valor a Wikidata
Extensió dels fitxersm Modifica el valor a Wikidata
Codi fontCodi font Modifica el valor a Wikidata
LlicènciaGNU General Public License Modifica el valor a Wikidata
Etiqueta d'Stack ExchangeEtiqueta Modifica el valor a Wikidata
Pàgina webmercurylang.org Modifica el valor a Wikidata

Característiques

Mercury té diverses característiques adreçades a una millor enginyeria de software. És compilat i no interpretat. Presenta un sofisticat i estricte sistema de tipus i modes. Els seus autors proclamen que aquestes característiques, combinades amb la natura abstracta de la programació lògica i la divisió en mòduls, faciliten l'escriptura ràpida de programes fiables.

Mercury és més pur i més declaratiu que Prolog, car no té les instruccions extra-lògiques de Prolog tal com cut (que evita el backtracking) i l'entrada/sortida imperativa. Això permet una millor optimització dels programes, però fa que la codificació d'algorismes seqüencials sigui més complicada. Gràcies a les optimitzacions, els programes escrits en Mercury són significativament més ràpids que els equivalents escrits en Prolog.

Mercury està disponible per a la majoria de plataformes Unix, Mac OS X, i MS-Windows.

Programes notables escrits en Mercury inclouen el compilador Mercury, la base de dades deductiva Aditi i el programa de formatació Prince XML.

Rerefons

Mercury té diversos rerefons de compilació (ang:back-ends), que permeten compilar codi Mercury als següents llenguatges i màquines virtuals:

  • Llenguatge C de baix nivell per a GNU Compiler Collection (GCC) (el rerefons original de Mercury).
  • Llenguatge C d'alt nivell.
  • Common Intermediate Language (IL) per a.NET (CLR).
  • Java bytecode per a JVM.
  • Assembler via el rerefons GCC.

(els tres darrers encara de qualitat incompleta)

Mercury també s'ha emprat en Aditi, una base de dades deductiva desenvolupada a la Universitat de Melbourne.

Mercury té una interfase de llenguatges forans, que permet enllaçar amb codi escrit en altres llenguatges de programació. Són els següents:

Rerefons Llenguatge(s) forans
C (both levels) C
IL IL, C# or Managed C++
Java Java

Per a altres llenguatges cal encadenar-los des dels mencionats. Tanmateix això vol dir que el codi forà pot caldre reescriure'l per als diferents rerefons, altrament la portabilitat entre rerefons es perdria.

Example: Hola món

Hola món en Mercury:

:- module hello.  :- interface. :- import_module io. :- pred main (io::di, io::uo) is det. % signatura de 'main'  :- implementation.  main(!IO):- % el prefix '!' indica variable d'estat que es desdobla en estat entrant i estat sortint  io.write_string("Hola, Món!\n", !IO). 

Adaptat de la guia (tutorial) de Ralph Becket.

La sintaxi de clàusules deriva del llenguatge Prolog

  • el separador de seqüència és la coma indicant conjunció d'objectius
  • el separador d'alternatives és el punt-i-coma indicant disjunció d'objectius
:- module hailstone.  :- interface.  :- import_module int, list.  :- func hailstone(int) = list(int). :- pred hailstone(int::in, list(int)::out) is det.  :- implementation.  hailstone(N) = S:- hailstone(N, S).  hailstone(N, [N|S]):-  (N = 1 -> S = [] ; N mod 2 = 0 -> hailstone(N/2, S) ; hailstone(3 * N + 1, S)).  :- end_module hailstone. 

Referències

Enllaços externs

Tags:

Mercury CaracterístiquesMercury RerefonsMercury Example: Hola mónMercury ReferènciesMercury Enllaços externsMercuryLlenguatge de programacióUniversitat de Melbourne

🔥 Trending searches on Wiki Català:

Bernat pescaireThe People Under the StairsManuel de Pedrolo i MolinaRevolució FrancesaLliga de Campions de la UEFAFausto CoppiSant Romà de SauLionel Andrés MessiCillian MurphyPere el CerimoniósEva Baltasar i SardàEiza González ReynaCopa del Món de Futbol de 2014Llista d'alcaldes de ReusTour de França de 1923LogaritmeZigotArt anticJudit FarrésGonzalo Boye TusetTorre EiffelParlament de CatalunyaJesús de NatzaretCatolicisme2016Cèl·lulesPéssahItàliaLlopGreixMaria Àngels Feliu BassolsSegona República EspanyolaAli LarterAitana Bonmatí i ConcaJoan Petit (cançó)Star WarsArthur WellesleySíndrome de JoubertBeri-beriSubcontinent indiKirsten DunstTour de França de 1928Arthur Conan DoyleGessamí Caramés i NúñezProcessó dels MisterisRipollMètode científicLa Ludwig BandDinastia SongEmma Stone11 d'agostLleó VI el FilòsofEstructura cristal·linaLa Divina ComèdiaWindows 10Linx nòrdicVicent Andrés EstellésZimbàbueSiurana (Priorat)Ku Klux KlanOpenOffice.org19 de maigBorg (Star Trek)Música de la dècada del 2010TàntalTour de França 2004José Millán-Astray y TerrerosDaniel AlvesTimothée ChalametSaint LuciaRelativitat generalOccitàTurcHelenaÀsia CentralAmazicsBad Gyal🡆 More