Czy IronScheme jest wystarczająco kompletny lub stabilny, aby warto się go uczyć?


17

IronScheme jest wspomniany na Wikipedii jako następca nieudanego projektu o nazwie IronLisp, przenosząc Lisp do CLR i .NET, tak jak Clojure robi to dla JVM. Czy ktoś ma doświadczenie z tym językiem? Wygląda dość kompletnie (99%), ale nie jestem pewien, jak ocenić, czy warto poświęcić czas na konfigurację, czy nie. Mówiąc stabilnie lub kompletnie, mam na myśli używanie go do rzeczywistych projektów, a nie po prostu majstrowania przy narzędziach i problemach w stylu Project Euler.

Odpowiedzi:


26

Jestem autorem IronScheme. Nie jestem pewien, jak odpowiedzieć na twoje pytanie, ale spróbuję :)

IronScheme najpierw próbuje wdrożyć Schemat (szczególnie R6RS), a drugorzędnym celem jest interoperacyjność CLR.

W porównaniu z Clojure (skupiając się na ich złych punktach), IronScheme nie będzie:

  • daje wyjątki czasu wykonywania CLR; IronScheme używa obsługi wyjątków Scheme
  • dają ci „nieskończone” stosy śladów; IronScheme jest prawidłowo rekurencyjny
  • być trudnym do skonfigurowania; po prostu wypakuj do katalogu i idź
  • długo się uruchamia; IronScheme (gdy ngen'd) zajmuje tylko 0,1 sekundy, aby rozpocząć REPL
  • być niejednoznacznym; IronScheme implementuje znormalizowaną specyfikację

Niestety zwycięża Clojure:

  • Dokumentacja
  • Frameworki i biblioteki
  • Społeczność użytkowników

Jest to niepokojące dla IronScheme, ponieważ ostatnie 3 wymienione są bardzo scenariuszem z jajkiem kurzym. Osobiście staram się tworzyć biblioteki tylko wtedy, gdy ich potrzebuję, a przy bardzo małej społeczności użytkowników nie ma większego wkładu użytkowników poza raportami błędów. Chciałbym większą społeczność użytkowników.

Jeśli chodzi o wsparcie, zwykle pomagam użytkownikom tak szybko, jak mogę. Dowody te można zobaczyć na podstawie moich czasów reakcji na forach dyskusyjnych IronScheme. Ponadto błędy są zwykle usuwane, gdy tylko zostaną zidentyfikowane.

Jeśli chodzi o stabilność, podstawa kodu jest dość dojrzała, a obecnie tylko poprawki błędów i optymalizacje są jedynymi dodatkami do kodu.

Jeśli chodzi o użyteczność, jeśli znasz już platformę .NET, możesz robić praktycznie wszystko z IronScheme, tak jak z każdym innym językiem .NET; może to być trudniejsze lub łatwiejsze, w zależności od tego, ile jesteś gotów przekształcić w idiomy podobne do schematu. W IronScheme jest bardzo łatwo napisać; na przykład cały mój framework MVC to zaledwie 400 linii kodu schematu, dzięki podsłuchowi w ASP.NET (z pewnością nie lubię od nowa wymyślać koła).

Jeśli odpowiedź jest niewystarczająca, poproś o wyjaśnienia. Demian ma również dobre strony pod względem łatwości konserwacji.

pozdrowienia

leppie


1
Jak IronScheme + Net wypada w porównaniu, powiedzmy, z Racket, frameworkami wrt i bibliotekami?
Joe Internet

Nie zdawałem sobie sprawy, że dostępna jest platforma MVC. Czy to część pobierania IronScheme?
Robert Harvey,

1
@Robert Harvey: Tak, jakiś przykładowy kod znajduje się w katalogu websample. Obecnie działa również na ironscheme.net/doc i eval.ironscheme.net
leppie

@Joe Internet: Naprawdę nie ma ram, ale IronScheme zawiera wiele SRFI. Większość bibliotek, które napisałem, służy do współpracy z CLR.
leppie 11.09.11

2

Uwaga: Nie mam doświadczenia z IronScheme, więc weź moje myśli z odrobiną soli (chociaż jest to ukierunkowane bardziej na stosowanie najnowocześniejszej technologii).

Podczas gdy będę bawił się nowymi technologiami z trywialnymi problemami (narzędzia osobiste, Project Euler itp.), Jestem bardzo ostrożny w stosowaniu tej technologii w pełnych projektach. Dlaczego?

  • Wsparcie społeczności: od kogo otrzymasz pomoc po uderzeniu w ścianę?
  • Nieprzewidziane problemy: jeśli technologia nie została dokładnie przetestowana w walce, czy naprawdę chcę zagłębić się w kod biblioteki, aby spróbować znaleźć rozwiązanie problemu, który mógł nie zostać napotkany? Gdybym chciał być częścią zespołu zatwierdzającego, być może, ale w 99% przypadków chcę po prostu zrealizować projekt i nie muszę się martwić o hydraulikę.
  • Zaangażowanie zespołu: co się stanie, jeśli ktoś kierujący projektem wyciągnie wtyczkę? Moje projekty są następnie osierocone, chyba że chcę przejąć projekt, do którego mam te same problemy, co w poprzednim punkcie.

Tak więc, chociaż uczenie się nowych technologii jest zawsze dobrą rzeczą (najgorsze, co może się zdarzyć, to nauczenie się, jak ktoś inny może coś zaimplementować - co jest dobre), naprawdę może cię ugryźć w dupę, jeśli zastosujesz to wcześnie do pełnych projektów .


3
Chociaż masz rację, zastanawiam się, w jaki sposób oczekujesz, że nowe technologie zostaną przetestowane w walce, jeśli twoja rada nie polega na nich w bitwie? ;)
back2dos,

1
Masz rację, jest to sytuacja typu catch-22. Mówię po prostu z własnego doświadczenia i preferencji. Wolałbym skoncentrować się na ukończeniu rzeczy, niż na potencjalnym zajmowaniu się instalacjami wodnymi lub bibliotekami, które zostały przerwane. Oczywiście ktoś musi to zrobić. Po prostu wolałbym tego nie robić w moich projektach :)
Demian Brecht
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.