Interested Article - Mercury (язык программирования)
- 2020-08-29
- 1
Mercury — язык функционально - логического программирования со строгой типизацией , призванный решить следующие две проблемы, которые возникают при использовании классического языка логического программирования Prolog :
- проблема производительности. Современные реализации языков логического программирования по производительности уступают реализациям языков программирования императивного типа .
- проблема отладки. Реализации языков логического программирования осуществляют меньше проверок во время компиляции, чем реализации языков программирования императивного типа. Это вынуждает программиста находить ошибки самому и без какой-либо существенной помощи со стороны отладчика.
Язык разработан в Мельбурнском университете . Первую версию выпустили 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.
Примеры
:- 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).
Примечания
- . Дата обращения: 18 декабря 2023. 18 декабря 2023 года.
- На основе от 21 сентября 2020 на Wayback Machine
Ссылки
- — Официальный сайт Mercury
- — winmercury, User-friendly Mercury distribution for Windows
- — Adventures in Mercury, блог посвященный языку
- 2020-08-29
- 1