O IronScheme é completo o suficiente ou estável o suficiente para valer a pena aprender?

17

O IronScheme é mencionado na Wikipedia como sucessor de um projeto com falha chamado IronLisp, levando o Lisp ao CLR e .NET, da mesma forma que Clojure faz para a JVM. Alguém tem experiência com esse idioma? Parece bastante completo (99%), mas não tenho certeza de como julgar se vale a pena dedicar um tempo para configurá-lo ou não. Por estável ou completo, quero dizer usá-lo para projetos reais, em vez de apenas mexer com ferramentas e problemas no estilo do Project Euler.

Engenheiro Mundial
fonte

Respostas:

26

Eu sou o autor do IronScheme. Não tenho muita certeza de como responder à sua pergunta, mas tentarei :)

O IronScheme tenta primeiro implementar o Scheme (especificamente o R6RS), com o objetivo secundário de interoperabilidade CLR.

Comparado ao Clojure (focando nos pontos negativos), o IronScheme não:

  • fornecer exceções de tempo de execução do CLR; IronScheme usa o tratamento de exceção do Scheme
  • fornecer a você 'infinitos' traços de pilha; O IronScheme é recursivo da cauda adequadamente
  • ser difícil de configurar; basta extrair para o diretório e ir
  • demora para iniciar; O IronScheme (quando ngen'd) leva apenas 0,1 segundos para iniciar o REPL
  • seja ambíguo; O IronScheme implementa uma especificação padronizada

Infelizmente, onde Clojure vence é:

  • Documentação
  • Estruturas e bibliotecas
  • Comunidade de usuários

Isso é preocupante para o IronScheme, pois os três últimos mencionados são um cenário de ovo de galinha. Pessoalmente, costumo criar bibliotecas apenas quando preciso delas e, com uma comunidade de usuários muito pequena, não há muita contribuição dos usuários além dos relatórios de erros. Eu adoraria uma comunidade maior de usuários.

Quanto ao suporte, normalmente ajudo os usuários o mais rápido possível. Essa evidência pode ser vista nos meus tempos de resposta nos fóruns de discussão do IronScheme. Além disso, os bugs são normalmente corrigidos assim que são identificados.

Quanto à estabilidade, a base de código é bastante madura, e atualmente apenas as correções e otimizações são as únicas adições de código.

Quanto à usabilidade, se você estiver familiarizado com a estrutura .NET, poderá fazer praticamente qualquer coisa com o IronScheme, como em qualquer outra linguagem .NET; pode ser mais difícil ou mais fácil, dependendo de quanto você deseja abstrair em expressões idiomáticas do esquema. As coisas são muito fáceis de escrever no IronScheme; por exemplo, toda a minha estrutura MVC tem apenas 400 linhas de código do esquema, graças à entrada no ASP.NET (eu certamente não gosto de reinventar a roda).

Sinta-se à vontade para pedir esclarecimentos se a resposta não for suficiente. Demian também faz bons pontos em termos de manutenção.

Saudações

leppie

leppie
fonte
1
Como o IronScheme + Net se compara a, digamos, Racket, estruturas e bibliotecas wrt?
Joe Internet
Não percebi que havia uma estrutura MVC disponível. Isso faz parte do download do IronScheme?
Robert Harvey
1
@ Robert Harvey: Sim, algum código de exemplo está no diretório websample. Atualmente executando também em ironscheme.net/doc e eval.ironscheme.net
leppie
@ Joe Internet: Na verdade, não há estruturas, mas o IronScheme inclui muitas SRFIs. A maioria das bibliotecas que escrevi é para interoperabilidade CLR.
Leppie
2

Nota: Eu não tenho experiência com o IronScheme, então leve meus pensamentos com um pouco de sal (embora seja mais direcionado ao uso da tecnologia de ponta).

Embora eu brinque com a nova tecnologia com problemas triviais (ferramentas pessoais, Projeto Euler, etc.), sou muito cauteloso ao empregar a tecnologia em projetos completos. Por quê?

  • Suporte da comunidade: De quem você receberá assistência quando bater em uma parede?
  • Problemas imprevistos: Se a tecnologia não foi completamente testada em batalha, eu realmente quero cavar o código da biblioteca para tentar descobrir uma solução para um problema que pode não ter sido encontrado? Se eu quisesse fazer parte da equipe de confirmação, talvez, mas 99% das vezes eu só queria concluir meu projeto e não precisava me preocupar com o encanamento.
  • Compromisso da equipe: O que acontece se quem está liderando o projeto puxa o plug? Meus projetos ficam órfãos, a menos que eu queira assumir o projeto, para o qual tenho os mesmos problemas do ponto anterior.

Portanto, enquanto aprender nova tecnologia é sempre uma coisa boa (a pior coisa que pode acontecer é que você aprende como outra pessoa implementaria algo - o que é bom), pode realmente te morder na bunda se você adotá-la cedo para projetos completos .

Demian Brecht
fonte
3
Embora você tenha razão, pergunto-me como você espera que as novas tecnologias sejam testadas em batalha, se seu conselho é não confiar nelas na batalha? ;)
back2dos
1
Você está certo, é um pouco uma situação difícil. Estou simplesmente falando de minha própria experiência e preferência. Prefiro me concentrar em concluir as coisas em vez de lidar potencialmente com canalizações ou bibliotecas descontinuadas. Obviamente alguém tem que fazê-lo .. Eu só prefiro não fazê-lo em meus projetos :)
Demian Brecht