Является ли IronScheme достаточно полным или стабильным, чтобы его можно было изучить?

17

IronScheme упоминается в Википедии как преемник несостоявшегося проекта IronLisp, который переносит Lisp в CLR и .NET, как это делает Clojure для JVM. У кого-нибудь есть опыт работы с этим языком? Это выглядит довольно полным (99%), но я не уверен, как судить, стоит ли мне тратить время на настройку или нет. Под стабильным или полным я имею в виду использовать его для реальных проектов, а не просто возиться с инструментами и проблемами стиля Project Euler.

Мировой инженер
источник

Ответы:

26

Я автор IronScheme. Я не совсем уверен, как ответить на ваш вопрос, но постараюсь :)

IronScheme сначала пытается внедрить Scheme (в частности, R6RS), а второстепенной целью является совместимость CLR.

По сравнению с Clojure (фокусируясь на их недостатках), IronScheme не будет:

  • дать вам CLR исключения во время выполнения; IronScheme использует обработку исключений Схемы
  • дать вам «бесконечные» стековые трассы; IronScheme правильно рекурсивный хвост
  • быть трудно настроить; просто распаковать в каталог и перейти
  • занять много времени, чтобы начать; IronScheme (когда ngen'd) занимает всего 0,1 секунды, чтобы запустить REPL
  • быть двусмысленным; IronScheme реализует стандартизированную спецификацию

К сожалению, где Clojure выигрывает:

  • Документация
  • Каркасы и библиотеки
  • Сообщество пользователей

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

Что касается поддержки, я обычно помогаю пользователям так быстро, как могу. Это доказательство видно из моих ответов на форумах IronScheme. Кроме того, ошибки обычно исправляются, как только они были идентифицированы.

Что касается стабильности, кодовая база довольно зрелая, и в настоящее время только исправления ошибок и оптимизации являются единственными дополнениями кода.

Что касается удобства использования, если вы знакомы с платформой .NET, вы можете делать с IronScheme практически все, что можете, с любым другим языком .NET; это может быть сложнее или проще в зависимости от того, насколько вы готовы абстрагироваться в более похожие на Схемы идиомы. Вещи очень легко написать в IronScheme; например, вся моя инфраструктура MVC состоит всего из 400 строк кода Scheme, благодаря подключению к ASP.NET (я, конечно, не люблю заново изобретать колесо).

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

С уважением

leppie

leppie
источник
1
Как IronScheme + Net сравнивает, скажем, Racket, с фреймворками и библиотеками?
Джо Интернет
Я не осознавал, что существует MVC-фреймворк. Это часть загрузки IronScheme?
Роберт Харви
1
@ Роберт Харви: Да, пример кода находится в каталоге websample. В настоящее время также работает на ironscheme.net/doc и eval.ironscheme.net
проказа
@Joe Internet: На самом деле никаких фреймворков нет, но IronScheme включает в себя множество SRFI. Большинство библиотек, которые я написал, предназначены для взаимодействия с CLR.
Леппи
2

Примечание: у меня нет опыта работы с IronScheme, поэтому подумайте немного о соли (хотя она больше направлена ​​на использование передовых технологий).

В то время как я буду играть с новыми технологиями с тривиальными проблемами (персональные инструменты, Project Euler и т. Д.), Я очень осторожен в использовании этих технологий в полномасштабных проектах. Почему?

  • Поддержка сообщества: от кого вы получите помощь, когда ударите о стену?
  • Непредвиденные проблемы: если технология не была полностью испытана в бою, действительно ли я хочу покопаться в коде библиотеки, чтобы попытаться найти решение проблемы, с которой, возможно, не сталкивались? Если бы я хотел быть частью команды коммитов, то, возможно, но в 99% случаев я просто хочу закончить свой проект и не беспокоиться о сантехнике.
  • Обязательство команды: что произойдет, если кто-то, кто возглавляет проект, отключится? Мои проекты тогда становятся осиротевшими, если я не хочу взять на себя проект, к которому у меня есть те же проблемы, что и в предыдущем пункте.

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

Демиан Брехт
источник
3
Хотя у вас есть смысл, мне интересно, как вы ожидаете, что новые технологии станут испытанными в бою, если ваш совет не полагаться на них в бою? ;)
back2dos
1
Вы правы, это довольно сложная ситуация. Я просто говорю из собственного опыта и предпочтений. Я бы предпочел сконцентрироваться на завершении работы, а не на том, чтобы разобраться с подключением или отключением библиотек. Очевидно, что кто-то должен это делать .. Я бы предпочел не делать этого на моих проектах :)
Демиан Брехт