Индивидуально набранный язык лучше всего подходит для программирования «реального мира»? [закрыто

StackOverflow https://stackoverflow.com/questions/4634303

Вопрос

Который зависимо набран Языки программирования могут быть использованы для разработки реальной мировой приложения?

Это некоторые точки, что я думаю, важно:

  • документация
  • Пример программ
  • Стандартная библиотека
  • или, по крайней мере, простой в использовании интерфейс внешнего функционала
  • Сообщество людей, использующих язык для реальных мировых задач
  • Поддержка инструментов
Это было полезно?

Решение

Я бы предложил АГДА, потому что он позвонил совместимости с HASKELL. Как таковой, это, вероятно, зависит надежный язык с лучшими библиотеками. Документация и учебные пособия немного бездействуют, а поддержка инструментов тоже не слишком велика. Если честно, большинство специально набираемых языков не очень полностью развиты в данный момент.

Если вы вместо этого пошли с немного более слабым спросом, что ваш язык должен иметь ГАДТ, есть два очень ухоженных варианта: Scala и Haskell. IMHO Вы получаете большую часть преимуществ зависимых типов, используя GADT, и вы поддерживаете TypeChecking, удален для загрузки.

Scala и Haskell имеют большие и хорошо документированные библиотеки, цепочка рабочего инструмента, а также FFI (для Java и C соответственно). У обоих также есть общины, использующие их для решения реальных проблем, как разборка а также веб разработка.

Другие советы

Принятый ответ содержит дезинформацию. TypeChecking в AGDA является разрешенным, если вы не выключите позитивность / завершение / проверку вселенной. Кроме того, бесконечные процессы программируются в AGDA, так же как процессы IO программируются в Haskell: единственное ограничение заключается в том, что бесконечные процессы не могут быть развернуты бесконечно, когда выполняется в процессе типочки. Отказ Вы можете реализовать симулятор Turing Machine в Agda: вы просто не можете сказать ложь, что гарантированно прекращается или убедить TypeChecker, чтобы запустить его неограниченным образом.

Однако я делаю, согласны с тем, что зависимо напечатанные языки все еще находятся на экспериментальном этапе, когда дело доходит до программирования «реального мира». Мы еще не можем поддержать развитие сверхмощности, но мы можем поддерживать значительное хобби среди тех, кто с целью будущего, скорее, как функциональные языки в старые времена.

IDRIS, как предложено Twey, является самым близким кандидатом на «реальный мир» в зависимости от печатания языка. Это гораздо более сосредоточено на том, чтобы получить вещи, сделанные, чем AGDA. Я бы порекомендовал Agda как лучший автомобиль для того, чтобы поправиться с идеями зависимо наведенные программирование, но IDRIS является более практичным вариантом.

Это, я рад сказать, стоит рассмотреть последние выбросы Haskell в качестве кандидата в этом обсуждении. Поскольку GHC 7.4, Haskell начал поддерживать полезное понятие данных о уровне типа и, по крайней мере, с синглтон Техника (ключей, хотя и то есть), мы действительно можем иметь типы в зависимости от значений времени выполнения (заставляя их зависеть от статических переменных, ограниченных равным значениям времени выполнения). Таким образом, Haskell является настоящим «реальным» языком «реального мира» на раннем этапе экспериментов с зависимыми типами.

AGDA не предназначен для общего назначения языка программирования. ATS - это зависимострованный язык, который предназначен для программирования низкого уровня, хотя он несколько менее элегантный, чем AGDA. IDRIS - это выплетенный напечатанный язык, разработанный для программ на уровне приложений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top