Приветствую Вас ГостьСуббота, 19.06.2021, 05:49

Язык программирования Mercury


Что такое Mercury?


Mercury – это новый функционально-логический язык программирования со строгой типизацией, системой режимов аргументов и детерминизмом предикатов. Синтаксис частично унаследован от Пролога, система типов похожа на Haskell.

Не пугайтесь, на самом деле, Mercury является эволюционным продолжением логического подхода, принятого в языке Пролог, но при этом лишенным многих недостатков классического Пролога.

Исторически сложилось, что гегемоном в логическом программировании является язык Пролог с классическим, так называемым, эдинбургским синтаксисом. 

Несмотря на то, что логический подход очень удобен для решения большого класса задач, особенно связанных с искусственным интеллектом, а так же позволяет гораздо легче описать решение сложных задач, широкого распространения Пролог не получил. В настоящее время логическое программирование находится в упадке. Логический подход практически не используется в обычном, коммерческом программировании.  Это связано с тем, что классический Пролог является интерпретируемым безтиповым языком, что наряду с низкой производительностью дает трудности с отладкой программ. 

Так же, для ограничения перебора разработчикам Пролога пришлось включать в него некоторые недекларативные возможности, например, отсечения и циклы по неуспеху. В итоге при написании оптимизированной программы утрачивается вся красота декларативного подхода, и возникают серьезные трудности с пониманием кода и отладкой. Фактически Пролог не является чисто декларативным языком, он имеет императивные особенности, то есть многие части кода зависят от порядка следования целей в предикате.

Для внедрения логического подхода в практическое программирование надо решить несколько проблем. Разработчикам уже давно стало ясно, что без внесения изменений в классический устаревший синтаксис не обойтись, иначе Пролог так и останется игрушкой для университетских преподавателей и средством создания всего лишь прототипов программ. 

Во-первых, нужно было что-то делать с типизацией, поэтому все современные логические языки содержат систему типов. Во-вторых, было бы очень неплохо перейти от интерпретации к компиляции программ, и наконец, надо решить главную проблему логического подхода – низкую производительность.

Разработчики Mercury сделали свой язык чисто декларативным, полностью убрав из него все императивные возможности. Ввели развитую систему типов, режимы аргументов, категории детерминизма предикатов и условные операторы. Оказалось, что такой подход имеет право на существование и, несмотря на некоторые трудности с организацией ввода-вывода, дает высокопроизводительный код. Причем оптимизация программы в этом случае производится автоматически самим компилятором, а не программистом, избавляя его от необходимости продумывания последовательности выполнения алгоритма. 

Кстати, название Mercury, данное в честь бога скорости Меркурия, отражает направленность на получение быстро работающих программ. Фактически Mercury по многим тестам в разы опережает по производительности современные реализации Пролога.

Плюс, в Mercury разработчикам удалось объединить в одной парадигме логический и функциональный подход программирования. А так же бонусом является способность компилятора находить многие логические ошибки, за счет чего код программы становится более надежным.

Компилятор Mercury открыт и бесплатен (распространяется по лицензии GPL), работает на всех современных операционных системах. Особенностью языка является то, что он способен транслировать код во многие популярные языки программирования: C, Java, Erlang, IL для платформы .NET.

Наш опрос
Почему интересуетесь Mercury
Всего ответов: 432
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Июнь 2021  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz