Приветствую Вас ГостьСуббота, 27.04.2024, 18:50

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


Добро пожаловать на форум. - Страница 2 - Форум

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: Кросавчег  
Форум » Общий раздел » Обсуждение » Добро пожаловать на форум.
Добро пожаловать на форум.
AleksssДата: Пятница, 18.06.2010, 01:07 | Сообщение # 16
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
Ну как минимум интересно Вам. Просто еще рано что-либо говорить. Вот если показать реальные примеры преимущества языка над его прямыми конкурентами да еще и так, что бы преимущества были востребованы в практической плоскости, то этим языком заинтересуются многие.
Проблема в том, что эта область непопулярна. Наша преподаватель ссылалась на то, что логическое программирование - все для ИИ и очень секретно. Не знаю, может быть это и правда. Но все равно, ее фанатизм и лозунги, что Пролог круче С++ меня несколько убили. Тут я слышу, что Меркури круче Пролога. Может это и так. Но нужны факты. Примеры. Даже когда говорят, что Java лишена многих недостатков С++ приводят примеры (отсутствие указателей, сборщик мусора). А пока я слышу только слова. Ну сейчас я конечно сяду за него по-плотнее и может что-то пойму, но ведь многие даже не захотят садится. Мне кажется, нужна демонстрация.
 
КросавчегДата: Пятница, 18.06.2010, 09:49 | Сообщение # 17
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
На офсайте есть очень интересная табличка сравнения по производительности Mercury и Прологов. Вот в этом разделе (http://www.mercury.cs.mu.oz.au/information/benchmarks.html). Например, по сравнению со SWI-Prolog разница на порядок, с самыми быстрыми Прологами в разы. На форуме progz.ru видел сравнение по скорости с Visual Prolog - тоже в разы (там правда потом холивар поднялся).

Зачем нужно логическое программирование хорошо показано в лекциях Сошникова. Жалко, что пока по Mercury нет таких учебников, как Братко для Пролога.

А с практической плоскостью пока проблемы, согласен. Очень сложно сдвинуть программистов, которые хотят зарабатывать деньги, чтобы они начали применять новый язык. Вакансии, где требуют Mercury, вы не найдете точно. Разве что примените где-нибудь в проектах "для себя" или "для души". Но такой код никто не захочет поддерживать кроме вас, чем заранее обрекаете проект на развитие только одним человеком. Да и такие проекты вряд ли кто покажет.

 
AleksssДата: Пятница, 18.06.2010, 12:41 | Сообщение # 18
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
Ну вот в этом то вся и беда. Значит язык создан исключительно для расширения сознания. А это не есть хорошо, так как по себе знаю, на развитие умений, которые нужны в работе уходит много времени и если ты не фанат(ик) программирования, то постоянно расширять сознание у тебя просто может не хватить сил.
Но видится один выход. Найти такое место, где логическое программирование больше всего подходит и сделать по этому месту проект. Не обязательно чисто на логическом, но что-бы оно там присутствовало и его применение было существенно. И вот такой проект покажет, может язык жить или нет. Если у него есть преимущества, то проект будет пользоваться спросом у конечных пользователей (вот уж им то все равно, на чем программа написана, главное что бы работала и лучше, чем у других). А как только будет пользоваться спросом - сразу найдутся желающие занять новую нишу. Я себе это вижу пока так.
 
КросавчегДата: Пятница, 18.06.2010, 22:04 | Сообщение # 19
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
На самом деле язык был как раз создан для того, чтобы вести на нем большие проекты группой программистов. Только чтобы достичь этой задачи хорошего языка и компилятора мало - нужна раскрутка, реклама, PR, обучение в ВУЗах и еще много чего.

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

Я сам долго метался, выбирал язык для "расширения сознания". Просто на каком-то этапе до чертиков надоело императивное программирование. Понял, что перерос. Душа просит чего-то нового, интересного. Хочется писать что-то посложнее "учета чего-то".

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

 
AleksssДата: Суббота, 19.06.2010, 00:53 | Сообщение # 20
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
Ну вот Вам повезло - у Вас есть какая-то основа знаний, которые позволяют Вам конкурировать на рынке труда. А я вот, как будущий программист, пока не знаю, куда себя приткнуть. Мониторю вакансии для работы, вроде как бы все понятно, но везде - "опыт работы не менее двух лет". А вот куда идти без опыта - тут сложнее. Знать бы хотя-бы, на чем руку набить, что так сказать положить в основу именно практики, тогда можно смело стать на ноги, а потом уже развивать боковые ветви по интересам.
 
КросавчегДата: Суббота, 19.06.2010, 11:18 | Сообщение # 21
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
На самом деле это не такая уж проблема. Устроиться возможно, что программировать для начала - не так уж важно. Везде можно получить базовый опыт. Главное, чтобы были мозги и желание.

Если искать работу, то да, придется потратить какое-то время. И не надо пугаться "опыта не менее двух лет". С их стороны тоже проблема - брать некого. Не факт, что найдут или найдут за нужную цену. Многие даже сами хотят взять студента, чтобы его потом обучить.

 
AleksssДата: Воскресенье, 20.06.2010, 15:08 | Сообщение # 22
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Offline
Начал читать Ваш перевод. Сразу возник вопрос по предложению:

Quote
Коротким объяснением будет – каждый предикат, выполняющий ввод-вывод (I/O) обязан иметь входной аргумент типа io описывающий состояние мира в момент вызова предиката и аргумент типа io для описания состояния мира после его вызова.

И что тут значит слово "мир"?

 
КросавчегДата: Воскресенье, 20.06.2010, 19:24 | Сообщение # 23
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
Точнее будет наверное "внешний мир". Это переменная, которая характеризует конкретный момент времени во внешнем мире (то, что видит пользователь), но не в виде какого-то таймера, а в виде характеристики его состояния. Как бы фотография внешнего мира или кадр в мультике. А благодаря тому, что их две (вход и выход) состояния мира можно выстроить в последовательность (мультик), передавая со входа одной цели на выход другой.

Например, первая переменная - сделано первое, следующая переменная - сделано второе. Там демонстрация есть при выводе на экран или считывании ввода пользователя. Назад возврата нет - поэтому предыдущая переменная деструктивно разрушается на входе и одновременно создается новая уникальная (одноразовая) переменная на выходе.

Короче, способ представления последовательных действий. Дело в том, что по иделологии декларативного программирования последовательность действий не описывается. Она вообще не имеет значение. При формулировании условия задачи можно переставлять предложения. Например, найти X при условиях Y1, Y2, Y3. В данном случае условия можно безболезненно переставлять и не имеет значения какое проверять первым - компилятор сам решит.

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

 
detectiveДата: Вторник, 05.10.2010, 11:44 | Сообщение # 24
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Хорошее дело начали, давно искал подходящий язык ЛП,
судя по всему, австралийцы порадовали, буду разбираться.
Проектов громадье

Добавлено (05.10.2010, 11:44)
---------------------------------------------
Сырые версии, c Aditi проблемы, грустно все, но лучше язычка ЛП пока не видел, думаю доделают

 
КросавчегДата: Четверг, 07.10.2010, 01:26 | Сообщение # 25
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
Quote (detective)
Сырые версии, c Aditi проблемы, грустно все, но лучше язычка ЛП пока не видел, думаю доделают

Да, есть проблемы. Aditi они похоже вообще исключили. И что с ней стало - непонятно. Документация слабая... Зато кроссплатформенный, открытый, бесплатный и не тормоз, в отличие от других.
 
yataganДата: Воскресенье, 02.01.2011, 13:12 | Сообщение # 26
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Здравствуйте, у меня проблемы с написанием в Меркури типично прологовской программы, третий день уже гуглю, тыкаю, уже на грани забивания на Меркури, помогите, походу этот форум последняя надежда)

итак, я хочу написать в Меркури аналог вот такого:

parent(father,sun).

?- parent(father, X).
X = sun .

как я написал:

:- module test.

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

:-implementation.
:- pred parent(string, string).
:- mode parent(in, out) is semidet.

parent("father", "sun").

main(!IO) :-
parent("father", X),
io.write_string(X, !IO),
io.nl(!IO).

вывод компилятора на это:

$ mmc --make test
Making Mercury/int3s/test.int3
Making Mercury/ints/test.int
test.m:001: In module `test':
test.m:001: warning: module `string' is imported in the interface, but is not
test.m:001: used in the interface.
Making Mercury/cs/test.c
test.m:001: In module `test':
test.m:001: warning: module `string' is imported in the interface, but is not
test.m:001: used in the interface.
test.m:005: Error: main/2 must be `det' or `cc_multi'.
test.m:005: In `main'(di, uo):
test.m:005: error: invalid determinism for a predicate with I/O state
test.m:005: arguments.
For more information, recompile with `-E'.
** Error making `Mercury/cs/test.c'.

что-то пишет про ошибку детерминизма, но я перепробывал все возможные det, semidet, cc_multi - пофиг.

очень надеюсь на помощь, спасибо.

 
КросавчегДата: Среда, 05.01.2011, 13:19 | Сообщение # 27
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
Сорри, сразу не заметил. Но вижу, что вам уже на другом форуме ответили (http://www.progz.ru/t42642-4/).
 
yataganДата: Пятница, 07.01.2011, 14:29 | Сообщение # 28
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
да, спасибо
по указаной вами ссылке можно найти что мне там подсказали.
 
be_nt_allДата: Четверг, 12.05.2011, 01:23 | Сообщение # 29
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Приветствую всех, кто меня видит. Сегодня увидел в википедии правку статьи http://ru.wikipedia.org/wiki/Mercury_(язык_программирования) про этот язык, которая, в основном повторяла текст с заглавной с этого сайта. Привёл в соответствии с правилами и форматом википедии cool . Язык заинтересовал. Эффективный компилируемый прологохаскель — это круто.

Просьба посмотреть, что получилось, со статьей, и если что поправить. Только просьба — шибко умные термины делать ссылками на русскую или английскую вики, или ещё куда, где эти термины разъяснены. После утверждений вроде Mercury в 10 раз быстрее Пролога, надо делать сноску вида<ref>[http://benchmark.tyt бенчмарк]</ref>. Ну или просто пишите замечания в форуме, а я в статью добавлю.

 
КросавчегДата: Суббота, 21.05.2011, 00:19 | Сообщение # 30
Рядовой
Группа: Администраторы
Сообщений: 19
Репутация: 0
Статус: Offline
По-моему нормально получилось. Только опечатка есть "Mercure". Это не я статью правил, если что. smile Я только для прогопедии переводил часть статьи из английской википедии (http://progopedia.ru/language/mercury/).
 
Форум » Общий раздел » Обсуждение » Добро пожаловать на форум.
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Наш опрос
Почему интересуетесь Mercury
Всего ответов: 448
Форма входа
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz