LINUX.ORG.RU

Haskell или OCaml


0

0

Стоит задача ИССЛЕДОВАТЕЛЬСКОГО (т.е не промышленнго) характера - разработка интерпретатора логического языка наподобие PROLOG'a, но работающего в исчислении позитивно-образованной логики (впрочем, тонкости - несущественны). У нас в НИИ есть некоторые наработки по этой теме, есть несколько вариантов пруверов (доказателей теорем), созданных на С, С++ и Standard ML(SML). С С и С++ связываться не очень хочется, т.к. не будет особой новизны и интереса. Человек, использующий Standard ML, считает, что вариант с функциональными языками лучше, чем С(++) - удобнее, быстрее в разработке и т.д. Он же рекоммендует использовать OCaml для моей разработки. Но полазив по интернету и почитав обзоры функциональных языков, я склоняюсь к Haskell. В OCaml не устраивают несколько смутный синтаксис и стремление к универсальности (+ не совсем красивая, на мой взгляд, раелизация некоторых вещей). Haskell нравится большей продуманностью, изяществом, если можно так сказать, и наличием стандарта на язык. У его компилятора(ghc), конечно, тоже есть свои ограничения (то же отсутсвие shared libs), хотя пока это мне не столь критично.

В общем, хотелось бы услышать мнение знающих людей. Просьба не писать сообщения вида "*** - отстой, быдлоязык, недосинтаксис" и т.п. С удовольствием выслашую конструктивные предложения, в том числе и возможных альтернативах (в виде других ЯП). Всем заранее спасибо.

★★

P.S. Эффективность кода, конечно, желательна, но не является критическим параметром.

htower_ ★★
() автор топика

По существу - фиг знает. Чтобы что-то объективно советовать надо представлять решаемую задачу, используемые алгортимы логического вывода и хотябы образно декомпозицию структур данных. А так скажу банальность, которую ты сам скорее всего знаешь: если среди алгоритмов будет достаточно большое число похожих на императивные, а среди структур данных будут присутсвовать массивы и матрицы (например матричное задание графов), то лучше взять OCaml.

Burbaka ★★
()

Ты лучше расскажи про позитивно-оразованную логику, что это такое и где можно почитать :)

Burbaka ★★
()
Ответ на: комментарий от air

Забавно. Читаю тред, смотрю - что-то знакомое, где-то это уже было, задачка какая-то схожая, ограничения такие же, реплики знакомые, смотрю на одного на ник топикстартера и понимаю что это же я! :)

Burbaka ★★
()
Ответ на: комментарий от Burbaka

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

1) http://inftech.webservis.ru/it/conference/isanditc/2000/section4/rus/arrus4.html

2) Васильев С.Н., Жерлов А.К., Теоретико-игровая семантика позитивно-образованных формул, Труды 8-ой Национальной конференции по искусственному интеллекту (КИИ 2002), Коломна, т. 1, с. 51-59, 2002

3) Васильев С.Н. Жерлов А.К. и др. "Интеллектное управление динамическими системами" стр 122

В последнем источнике описание наиболее полное (среди тех источников, что я видел :) ).

htower_ ★★
() автор топика
Ответ на: комментарий от htower_

На самом деле camlp4 на мой взгляд не слишком хороший инструмент. Его стоит использовать только когда четко знаешь что хочешь получить и понимаешь какого количества гемороя это будет стоить :) Мне подыскать ему применение в реальной задачи так и не удалось.

Burbaka ★★
()
Ответ на: комментарий от Burbaka

А про haskell можете что-нибудь сказать ? Какие средства у него есть для решения поставленной задачи, их "адекватность" и т.д. :)

htower_ ★★
() автор топика

А что-нибудь готовое из систем вывода с позитовной логикой вам не подходит?

Я, когда собирался в аспирантуру поступать, читал на эту тему - вычитал про JESS: http://herzberg.ca.sandia.gov/jess/

Оно, правда, на быдлояве - но зато это уже готовый "позитивный пролог", и с возможностью завернуть его в жаву/звать жабьи сайд-эффекты из него.

или вам надо "для галочки"/из спортивного интереса самим реализовать

anonymous
()
Ответ на: комментарий от anonymous

Ну как вам сказать.... Начнем с того, что JESS аналогична CLIPS, а CLIPS - это "не свсем" Prolog. Второе - не знаю как сейчас, но раньше JESS была по возможностям не шире исходного CLIPS, т.е. и не богаче пролога. И никакой позитивной логикой там и не пахло. Может сейчас это и не так, надо посмотреть внимательно. Насколько я упел заметить из описания - совместимость с CLIPS вроде еще осталась, так что вряд ли там успели сделать что-то кардинально новое.

Плюс JESS, как я понял из статей, в более совершенной стратегии вывода + ява-платформа, что дает легкость применения в веб-среде. (видел материалы по попыткам применения JESS в Семантической сети (www.semanticweb.org)).

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

Если не прав, поправьте, пожалуйста.

htower_ ★★
() автор топика
Ответ на: комментарий от Burbaka

Можно подробней про гемморой? Я не затем, чтобы поспорить, мне действительно интересно.

air
()
Ответ на: комментарий от htower_

> Плюс JESS, как я понял из статей, в более совершенной стратегии вывода + ява-платформа, что дает легкость применения в веб-среде. (видел материалы по попыткам применения JESS в Семантической сети (www.semanticweb.org)).

Да-да, именно в тех местах (в смысле, тематически) мне и предлагали в аспирантуре работать.

> Так что, на мой взгляд, данная система не совсем применима к тем задачам, о которых я говорил. Можете посмотреть материалы, которые я указал выше.

Это все было давно и неправда, так что я уже "не в теме". Просто хотел предложить что-то поверхностно похожее - вдруг вы не видели.

А про позитивную логику - ээ, forward chaining inference (в отличие от backwards, как в прологе) - это разве не оно?

Впрочем, не обращайте внимания, я уже названия всего этого позабыл, не то что смысл...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.