Mercury
De Viquip??dia
Per a altres significats, vegeu ??Mercury (desambiguaci??)??. |
Mercury ??s un llenguatge de programaci?? l??gic-funcional dirigit a aplicacions del m??n real. Est?? desenvolupat a la Universitat de Melbourne sota la supervisi?? de Zoltan Somogyi. La primera versi?? va ??sser desenvolupada per Fergus Henderson, Thomas Conway i Zoltan Somogyi i va ser editada l'Abril de 1995.
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, doncs no t?? les instruccions extra-l??giques de Prolog tal com "cut" (que evita el "backtracking") i la entrada/sortida imperativa. Aix?? permet una millor optimitzaci?? dels programes per?? fa que la codificaci?? d'algorismes seq??encials sigui m??s complicada. Degut 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 formateig Prince XML.
[edita] Rera-fons
Mercury t?? diversos rera-fons (ang.:back-ends), que permeten compilar codi Mercury en els seg??ents llenguatges:
- Llenguatge C de baix nivell per a GNU Compiler Collection (GCC) (el rera-fons original de Mercury)
- Llenguatge C d'alt nivell
- Common Intermediate Language (IL) per a .NET (CLR)
- Java bytecode per a JVM.
- Assembler via el rera-fons 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:
Rera-fons | Llenguatge(s) forans |
---|---|
C (both levels) | C |
IL | IL, C# or Managed C++ |
Java | Java |
Per a d'altres llenguatges cal encadenar-los des dels mencionats. Tantmateix aix?? vol dir que el codi for?? pot caldre reescriure'l per als diferents rera-fons, altrament la portabilitat entre rera-fons es perdria.
[edita] Example: Hola m??n
Hola m??n en Mercury:
:- module hello. :- interface. :- import_module io. :- pred main(io::di, io::uo) is det. :- implementation. main(!IO) :- io.write_string("Hola, M??n!\n", !IO).
(adaptat del tutorial de Ralph Becket Tutorial de Mercury) (angl??s).
[edita] Enlla??os externs
- P??gina Oficial de Mercury (angl??s)
- LiteratePrograms (angl??s) wiki d'exemples de programaci?? liter??ria amb algorismes en diversos llenguatges.
Llenguatges de programaci?? |
---|
Ada | ALGOL | Assemblador | Awk | Basic| BCPL | C | C++ | C# | Cobol | D | Delphi | Eiffel | Forth | Fortran | Haskell | Java | Lisp | Logo | MAGIC | Mercury | Miranda | Modula-2 | Oberon | Ocaml | Pascal | PHP | Perl | Prolog | Python | Rexx | Ruby | Scala | Smalltalk | Altres llenguatges... |