Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Функциональный логический язык программирования Mercury Autocode
Functional logic programming language
Mercury Autocode
Mercury – это функциональный язык логического программирования, разработанный для практического применения. Первая версия была создана в Университете Мельбурна, на факультете компьютерных наук, Фергусом Хендерсоном, Томасом Конвеем и Золтаном Сомоги под руководством Золтана Сомоги и выпущена 8 апреля 1995 года. Mercury является чисто декларативным языком логического программирования. Он имеет родство как с Prolog, так и с Haskell. В нем реализована строгая, статическая, полиморфная система типов, а также строгая система режимов и детерминизма. Официальная реализация, Melbourne Mercury Compiler, доступна для большинства Unix и Unix-подобных платформ, включая Linux, macOS и Windows.
Mercury is a functional logic programming language made for real world uses. The first version was developed at the University of Melbourne, Computer Science department, by Fergus Henderson, Thomas Conway, and Zoltan Somogyi, under Somogyi's supervision, and released on April 8, 1995. Mercury is a purely declarative logic programming language. It is related to both Prolog and Haskell. It features a strong, static, polymorphic type system, and a strong mode and determinism system. The official implementation, the Melbourne Mercury Compiler, is available for most Unix and Unix like platforms, including Linux, macOS, and for Windows.
Обзор
Меркурий основан на логическом языке программирования Prolog. Он имеет тот же синтаксис и те же основные концепции, такие как алгоритм селективного линейного детерминированного разрешения (SLD). Его можно рассматривать как чистое подмножество Prolog с сильной типизацией и модами. В связи с этим он часто сравнивается со своим предшественником по функциональности и эффективности выполнения. Язык разработан с применением принципов инженерии программного обеспечения. В отличие от оригинальных реализаций Prolog, он имеет отдельную фазу компиляции, а не непосредственную интерпретацию. Это позволяет выявлять гораздо более широкий спектр ошибок до запуска программы. Он обладает строгой статической системой типов и модов. Его авторы утверждают, что Mercury – самый быстрый логический язык в мире с большим отрывом, однако это может усложнить выражение некоторых конструкций программирования (например, переключателя по множеству вариантов с ветвью по умолчанию). Хотя Mercury допускает использование нечистых функций, они в основном служат для вызова кода на других языках. Весь нечистый код должен быть явно помечен. Операции, которые обычно являются нечистыми (например, ввод/вывод), в Mercury выражаются с использованием чистых конструкций и линейных типов, путем передачи фиктивного значения мира через весь соответствующий код. Примечательные программы, написанные на Mercury, включают компилятор Mercury и XML-форматер Prince. Компания ODASE также использует Mercury для разработки своей платформы разработки программного обеспечения, ориентированной на онтологии, ODASE.
Mercury is based on the logic programming language Prolog. It has the same syntax and the same basic concepts such as the selective linear definite clause resolution (SLD) algorithm. It can be viewed as a pure subset of Prolog with strong types and modes. As such, it is often compared to its predecessor in features and run time efficiency. The language is designed using software engineering principles. Unlike the original implementations of Prolog, it has a separate compilation phase, rather than being directly interpreted. This allows a much wider range of errors to be detected before running a program. It features a strict static type and mode system Its authors claim that Mercury is the fastest logic language in the world, by a wide margin. but it can make certain programming constructs (such as a switch over a number of options, with a default) harder to express. While Mercury does allow impure functionality, it serves mainly as a way to call foreign language code. All impure code must be explicitly marked. Operations which would typically be impure (such as input/output) are expressed using pure constructs in Mercury using linear types, by threading a dummy world value through all relevant code. Notable programs written in Mercury include the Mercury compiler and the Prince XML formatter. The Software company ODASE has also been using Mercury to develop its Ontology Centric software development platform, ODASE.