Interested Article - Mercury (язык программирования)

Mercury — язык функционально - логического программирования со строгой типизацией , призванный решить следующие две проблемы, которые возникают при использовании классического языка логического программирования Prolog :

  1. проблема производительности. Современные реализации языков логического программирования по производительности уступают реализациям языков программирования императивного типа .
  2. проблема отладки. Реализации языков логического программирования осуществляют меньше проверок во время компиляции, чем реализации языков программирования императивного типа. Это вынуждает программиста находить ошибки самому и без какой-либо существенной помощи со стороны отладчика.

Язык разработан в Мельбурнском университете . Первую версию выпустили Fergus Henderson, Thomas Conway и 8 апреля 1995 года .

Особенности

Синтаксис Mercury частично унаследован от Пролога, система типов похожа на Haskell . Это чисто декларативный язык, разработчики полностью убрали из него все императивные возможности, что позволило улучшить встроенные в компилятор возможности оптимизации . Название Mercury дано в честь бога скорости Меркурия и отражает направленность на получение быстродействующих программ. Операции, при реализации которых обычно отказываются от чисто декларативного подхода, такие как ввод-вывод , выражаются в Mercury с помощью декларативных конструкций, используя .

Реализация

Компилятор языка Mercury написан на самом языке. До того как компилятор Mercury смог скомпилировать себя сам, был использован язык Prolog . Он распространяется на условиях лицензии GPL , работает на всех современных операционных системах. Имеется возможность транслировать код на многие популярные языки программирования, такие как: C , Java , IL для платформы .NET . Транслятор в байткод Erlang был удалён в версии 22.01 .

С 2010 Проект Mercury имеет 6-месячный цикл выпуска релизов, где старший номер версии соответствует году выпуска, младший — месяцу начала работы над релизом. Более ранние версии имели номера вроде 0.12, 0.13… и время между выпуском стабильных версий было очень велико (около 3 лет).

Компилятор Mercury распространяется на официальном сайте в исходных кодах, пользователи Windows также могут воспользоваться неофициальным дистрибутивом winmercury. Это удобный инсталлятор, устанавливающий MinGW , компилятор GCC и все необходимые файлы Mercury в скомпилированном и настроенном виде. Также содержит файл справки в формате HTML Help с удобным оглавлением и индексом, а также плагин для редактора Vim . Самая свежая на сегодняшний день сборка Mercury — 20.01.2.

Примеры

Hello World :

 :- module hello.
 :- interface.
 :- import_module io.
 :- pred main(io::di, io::uo) is det.

 :- implementation.
 main(!IO) :-
 	io.write_string("Hello, World!\n", !IO).

Вычисление 10-го числа Фибоначчи (наиболее очевидным способом) :

 :- module fib.
 :- interface.
 :- import_module io.
 :- pred main(io::di, io::uo) is det.
 
 :- implementation.
 :- import_module int.

 :-func fib(int) = int.
 fib(N) = (if N =< 2 then 1 else fib(N - 1) + fib(N - 2)).

 main(!IO) :-
        io.write_string("fib(10) = ", !IO),
        io.write_int(fib(10), !IO),
        io.nl(!IO).
        % Could instead use io.format("fib(10) =%d\n", [i(fib(10))], !IO).

Примечания

  1. . Дата обращения: 18 декабря 2023. 18 декабря 2023 года.
  2. На основе от 21 сентября 2020 на Wayback Machine

Ссылки

  • — Официальный сайт Mercury
  • — winmercury, User-friendly Mercury distribution for Windows
  • — Adventures in Mercury, блог посвященный языку


Источник —

Same as Mercury (язык программирования)