Для чего используется SML?
Какое использование SML в реальном слове?
Являются ли его практические применения похожими на методы Prolog?
Ответы
Ответ 1
На работе мы используем SML в реальных программных продуктах, которые мы отправляем клиентам. Мы используем MLton для компиляции нашего кода SML в собственный код, работающий в Windows, Linux, Solaris, AIX и HP-UX. Он работает хорошо, и мы довольны нашим выбором.
Я не вижу SML, особенно подходящего для любой четкой ниши. Действительно, SML - очень хорошо продуманный язык программирования общего назначения. Prolog хорошо зарекомендовал себя в области логики программирования/искусственного интеллекта/правила, основанной на системах, но он использовал для многих вещей помимо этих традиционных доменов.
Для тех, кто рассматривает возможность использования SML для программного проекта в "реальном мире", вот некоторые из преимуществ и недостатков, которые мы заметили до сих пор:
- SML - очень хороший общий язык программирования, особенно для системной системы rock
- MLton оптимизирует так хорошо, что вы можете свободно использовать абстракции, не теряя производительности
- Наш старый код написан на простом C. Мы можем заменить этот фрагмент на SML, связывая оба кода C и SML с теми же командами.
- SML/NJ обеспечивает замену для быстрой разработки
- Portable для всех наших платформ
Недостатки:
- Минимальная пользовательская база
- Отсутствие области вспомогательных инструментов (IDE, документация кода, отладчики и т.д.).
- Мне пришлось фактически переносить MLton на AIX и HP-UX
Ответ 2
ML напрямую не сопоставим с Prolog. Prolog - это декларативный язык программирования логики, который в основном является доказательством теоремы с использованием предложений Хорна. Одна из приятных характеристик (не чистый Prolog) заключается в том, что она позволит вам сильно модифицировать программу во время компиляции или времени выполнения. Например, в большинстве современных реализаций Prolog вы можете напрямую писать грамматики, используя формализм DCG (определенная классовая грамматика). Правила грамматики с использованием оператора '- > ' переписываются в предложения Prolog с использованием расширения термина. Например:.
a(N) --> b, c(N).
Будет перезаписано:
a(N,P0,P2) :- b(P0,P1), c(N,P1,P2).
Использование переменных позиции обеспечивает смежность дочерей с правой стороны стрелки. Поскольку Prolog попытается доказать главу оговорки, доказав своих дочерей (путем обратного отслеживания), у вас в основном есть левый правый парсер сверху вниз без какой-либо дополнительной работы. Другим примером модификации программы является утверждение или ретракция (динамических) фактов или предложений, которые могут использоваться для изменения поведения программы во время выполнения.
ML, с другой стороны, является нечистым функциональным языком. Связь между Prolog и ML заключается в том, что некоторые теоретические указатели записываются в ML. Я бы сказал, что ML гораздо более универсальный, но для его нишей Prolog очень удобен. Оба очень полезны для изучения, даже для просто расширения ваших горизонтов.
Ответ 3
SML используется авторами компилятора. Оба пролога и SML используются в теоретических прообразах.
Ответ 4
Проект FoxNet от Carnegie Mellon Univ построен с использованием SML.
Провайдерская торговая компания Jane Street использует O'Caml для собственного встроенного программного обеспечения.
Лоуренс К. Полсон, автор ML для рабочего программиста, использовал SML для создания Isabell, доказательства теоремы LCF.
Филипп Вадлер, профессор и эксперт Haskell, ведет список проектов реального мира, которые используют функциональное программирование, среди этих проектов - те, которые используют ML,
http://homepages.inf.ed.ac.uk/wadler/realworld/
Ответ 5
Я только лично использовал его в университете для курса теории чисел.
Я должен сказать, что мне очень понравилось использовать его. Он мог обрабатывать огромные числа, которые были хороши при работе с криптографией.
Если это имеет значение, я использовал московский МЛ
http://www.itu.dk/people/sestoft/mosml.html
Ответ 6
Я не видел много коммерческих приложений ML, но это может быть не к доступным средам, а не к размышлению на языке. Я видел несколько банков, использующих F # (который является тем же самым семейством, что и ML) для обработки потоков данных, матричной алгебры и поиска шаблонов. Тот факт, что Microsoft упаковал его для .NET, явно не помогает.
Ответ 7
Не SML, но тесно связанный, является OCAML, который использовался для нескольких вещей:
http://caml.inria.fr/about/successes.en.html
Мне больше нравится "Быстрое преобразование Фурье на Западе", где ML используется для создания оптимизированного C...