IronScheme è abbastanza completo o abbastanza stabile per cui vale la pena imparare?


17

IronScheme è menzionato su Wikipedia come successore di un progetto fallito chiamato IronLisp, che porta Lisp a CLR e .NET, come fa Clojure per la JVM. Qualcuno ha esperienza con questa lingua? Sembra abbastanza completo (99%) ma non sono sicuro di come giudicare se valga la pena dedicare il mio tempo a configurarlo o meno. Per stabile o completo, intendo usarlo per progetti reali piuttosto che armeggiare con strumenti e problemi di stile di Project Euler.

Risposte:


26

Sono l'autore di IronScheme. Non sono davvero sicuro di come rispondere alla tua domanda, ma proverò :)

IronScheme tenta innanzitutto di implementare Scheme (in particolare R6RS), con l'obiettivo secondario di interoperabilità con CLR.

Rispetto a Clojure (concentrandosi sui loro punti negativi), IronScheme non:

  • darti eccezioni di runtime CLR; IronScheme utilizza la gestione delle eccezioni di Scheme
  • ti dà stacktraces "infinite"; IronScheme è adeguatamente ricorsivo di coda
  • essere difficile da configurare; basta estrarre nella directory e andare
  • impiegare molto tempo per avviarsi; IronScheme (quando ngen'd) richiede solo 0,1 secondi per avviare REPL
  • essere ambiguo; IronScheme implementa una specifica standardizzata

Sfortunatamente dove vince Clojure è:

  • Documentazione
  • Quadri e librerie
  • Comunità di utenti

Questo è preoccupante per IronScheme, poiché gli ultimi 3 citati sono molto uno scenario di uova di gallina. Personalmente, tendo a creare librerie solo quando ne ho bisogno, e con una comunità di utenti molto piccola, non c'è molto contributo da parte degli utenti oltre alle segnalazioni di bug. Mi piacerebbe una comunità di utenti più grande.

Per quanto riguarda il supporto, normalmente aiuto gli utenti il ​​più velocemente possibile. Questa prova può essere vista dai miei tempi di risposta nei forum di discussione di IronScheme. Inoltre, i bug vengono normalmente corretti non appena sono stati identificati.

Per quanto riguarda la stabilità, la base di codice è piuttosto matura e attualmente solo le correzioni di errori e le ottimizzazioni sono le uniche aggiunte di codice.

Per quanto riguarda l'usabilità, se hai familiarità con il framework .NET, puoi fare praticamente qualsiasi cosa con IronScheme come puoi con qualsiasi altro linguaggio .NET; potrebbe essere più difficile o più facile a seconda di quanto sei disposto ad astrarre in più idiomi simili a Schemi. Le cose sono molto facili da scrivere in IronScheme; ad esempio, il mio intero framework MVC è a malapena 400 righe di codice Scheme, grazie all'utilizzo di ASP.NET (di certo non mi piace reinventare la ruota).

Sentiti libero di chiedere chiarimenti se la risposta non è sufficiente. Demian fa buoni punti anche in termini di manutenibilità.

Saluti

leppie


1
Come si confronta IronScheme + Net con, per esempio, Racket, wrt framework e librerie?
Joe Internet,

Non mi rendevo conto che era disponibile un framework MVC. Fa parte del download IronScheme?
Robert Harvey,

1
@Robert Harvey: Sì, alcuni esempi di codice si trovano nella directory websample. Attualmente in esecuzione anche su ironscheme.net/doc ed eval.ironscheme.net
leppie

@Joe Internet: davvero nessun framework, ma IronScheme include molti SRFI. La maggior parte delle librerie che ho scritto è per l'interoperabilità con CLR.
leppie,

2

Nota: non ho esperienza con IronScheme, quindi prendi i miei pensieri con un granello di sale (anche se è più diretto all'utilizzo della tecnologia bleeding edge).

Mentre giocherò con la nuova tecnologia con problemi insignificanti (strumenti personali, Project Euler, ecc.), Sono molto diffidente nell'impiegare tale tecnologia in progetti in piena regola. Perché?

  • Supporto comunitario: da chi riceverai assistenza quando colpisci un muro?
  • Problemi imprevisti: se la tecnologia non è stata accuratamente testata in battaglia, voglio davvero scavare nel codice della libreria per cercare di trovare una soluzione a un problema che potrebbe non essere stato riscontrato? Se volevo far parte del team di commit, forse, ma il 99% delle volte voglio solo portare a termine il mio progetto e non dovermi preoccupare delle tubature.
  • Impegno del team: cosa succede se chi dirige il progetto stacca la spina? I miei progetti vengono quindi resi orfani, a meno che non voglia prendere il controllo del progetto, al quale ho gli stessi problemi del punto precedente.

Quindi, mentre l'apprendimento della nuova tecnologia è sempre una buona cosa (la cosa peggiore che può accadere è che impari come qualcun altro implementerebbe qualcosa - il che è buono), può davvero morderti nel culo se lo adotti presto per progetti completi .


3
Anche se hai ragione, mi chiedo come ti aspetti che le nuove tecnologie diventino testate in battaglia, se il tuo consiglio è di non fare affidamento su di esse in battaglia? ;)
back2dos,

1
Hai ragione, è in qualche modo una situazione di cattura. Sto semplicemente parlando della mia esperienza e preferenza. Preferirei concentrarmi sul completamento delle cose piuttosto che sul potenziale trattamento delle biblioteche idrauliche o fuori produzione. Ovviamente qualcuno deve farlo .. Preferirei semplicemente non farlo sui miei progetti :)
Demian Brecht,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.