IronScheme은 학습 할만한 가치가 있거나 완벽합니까?


17

IronSchemeWikipedia 에서 IronLisp라는 실패한 프로젝트의 후속 작업으로 언급되어 Clojure가 JVM에서 수행하는 방식으로 Lisp를 CLR 및 .NET으로 가져옵니다. 누구든지이 언어에 경험이 있습니까? 상당히 완벽 해 보였지만 (99 %), 설정 여부에 따라 시간을 들일 가치가 있는지 판단하는 방법을 잘 모르겠습니다. 안정적이고 완전하다는 것은 도구와 Project Euler 스타일 문제를 다루기보다는 실제 프로젝트에 사용하는 것을 의미합니다.

답변:


26

저는 IronScheme의 저자입니다. 나는 당신의 질문에 어떻게 대답 해야할지 모르겠지만 시도 할 것입니다 :)

IronScheme은 먼저 Scheme (구체적으로 R6RS)을 구현하려고 시도합니다. 이차 목표는 CLR 상호 운용성입니다.

IronScheme은 Clojure와 비교할 때 (나쁜 점에 중점을 둡니다)

  • CLR 런타임 예외를 제공합니다. IronScheme은 Scheme의 예외 처리를 사용합니다.
  • '무한한'스택 트레이스를 제공하십시오. IronScheme은 올바르게 꼬리 재귀입니다
  • 설정하기 어렵다; 그냥 디렉토리로 추출하고 이동하십시오.
  • 시작하는 데 시간이 오래 걸린다. IronScheme (ngen'd)은 REPL을 시작하는 데 0.1 초 밖에 걸리지 않습니다.
  • 모호하다. IronScheme은 표준화 된 사양을 구현합니다.

불행히도 Clojure가이기는 곳은 다음과 같습니다.

  • 선적 서류 비치
  • 프레임 워크와 라이브러리
  • 사용자 커뮤니티

IronScheme은 마지막 3 가지가 치킨-계란 시나리오이기 때문에 걱정이됩니다. 개인적으로 필자는 필요할 때만 라이브러리를 만드는 경향이 있으며 매우 작은 사용자 커뮤니티에서는 버그 보고서 외에 사용자의 기여도가 많지 않습니다. 더 큰 사용자 커뮤니티를 원합니다.

지원에 관해서는 일반적으로 가능한 빨리 사용자를 돕습니다. 이 증거는 IronScheme 토론 게시판의 응답 시간에서 확인할 수 있습니다. 또한 버그는 식별 된 즉시 수정됩니다.

안정성과 관련하여 코드베이스는 매우 성숙해졌으며 현재는 버그 수정 및 최적화 만이 유일한 코드 추가 사항입니다.

유용성에 관해서는 .NET 프레임 워크에 익숙하다면 다른 .NET 언어와 마찬가지로 IronScheme으로 거의 모든 작업을 수행 할 수 있습니다. 더 많은 스킴과 같은 숙어로 얼마나 기꺼이 추상화 할 것인지에 따라 어려워 지거나 쉬울 수 있습니다. IronScheme으로 작성하기가 매우 쉽습니다. 예를 들어 ASP.NET을 사용하기 때문에 전체 MVC 프레임 워크는 거의 400 줄의 Scheme 코드입니다 (확실히 바퀴를 발명하는 것을 좋아하지 않습니다).

답변이 충분하지 않은 경우 설명을 요청하십시오. Demian은 유지 관리 측면에서도 좋은 점을 제시합니다.

문안 인사

레피


1
IronScheme + Net은 Racket, wrt 프레임 워크 및 라이브러리와 어떻게 비교됩니까?
Joe Internet

사용 가능한 MVC 프레임 워크가 있다는 것을 몰랐습니다. IronScheme 다운로드의 일부입니까?
Robert Harvey

1
@Robert Harvey : 예. 일부 샘플 코드는 websample 디렉토리에 있습니다. 현재 또한 ironscheme.net/doceval.ironscheme.net
leppie

@Joe Internet : 프레임 워크는 없지만 IronScheme에는 많은 SRFI가 포함되어 있습니다. 내가 작성한 대부분의 라이브러리는 CLR interop 용입니다.
leppie

2

참고 : IronScheme에 대한 경험이 없으므로 소금 가장자리를 사용하여 생각하십시오 (블 레딩 에지 기술을 사용하는 데 더 많은 도움이 됨).

사소한 문제 (개인 도구, Project Euler 등)가있는 새로운 기술로 장난감을 가지고 놀지 만, 나는이 기술을 본격적인 프로젝트에 채택하는 것에 매우 주의하고 있습니다. 왜?

  • 지역 사회 지원 : 벽에 부딪쳤을 때 누구에게 도움을 받습니까?
  • 예상치 못한 문제 :이 기술은 철저하게 테스트 전투되지 않은 경우, 내가 정말 발생되지 않았을 수 있습니다 문제에 대한 해결책 밖으로 라이브러리 시도하는 코드와 그림으로 파고 싶어? 커밋 팀의 일원이되기를 원한다면 99 % 정도만 프로젝트를 완료하고 배관에 대해 걱정할 필요가 없습니다.
  • 팀 약속 : 프로젝트를 이끌고있는 사람이 플러그를 뽑으면 어떻게됩니까? 이전 프로젝트와 동일한 문제가있는 프로젝트를 인계하지 않는 한 내 프로젝트가 분리됩니다.

그래서, 새로운 기술을 배우면서하는 것은 항상 좋은 일이 (일어날 수있는 최악의 일은 당신이 다른 사람이 뭔가를 구현하는 것이 방법이다 - 이다 좋은) 일찍 전체 프로젝트를 채택 할 경우, 정말 엉덩이를 비트 수 .


3
요점은 있지만, 전투에서 조언에 의존하지 않는다면 새로운 기술이 어떻게 전투 테스트를 받게 될지 궁금합니다. ;)
back2dos

1
당신 말이 맞아요. 그것은 다소 어려워 보이는 상황입니다. 나는 단순히 내 자신의 경험과 선호도에서 말하고 있습니다. 배관이나 단종 된 도서관을 다루는 것이 아니라 일을 완수하는 데 집중하고 싶습니다. 분명히 누군가가 내 프로젝트 :)에 그것을 단지 오히려하지 않는 게 좋을 .. 그것을 할 수있다
데미안 브레히트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.