문제

나는 LISP와 계획에서 발전했지만 Clojure에 대해 읽고 있었고 LISP 나 계획을 사용하는 것보다 어떤 경우에 사용하는지 알고 싶습니다. 감사

도움이 되었습니까?

해결책

"Clojure는 JVM에서 실행됩니다"는 Java 라이브러리의 전체 옥수수증을 사용할 수 있음을 의미합니다. 스윙에서 예쁜 GUI를 만들고, Apache의 웹 클라이언트 또는 서버 코드를 사용하고, 준비된 스도쿠 솔버를 연결할 수 있습니다.

Clojure의 또 다른 큰 장점은 약 3 가지 맛을 가진 매우 세련된 동시성 지원입니다. 컴퓨팅 집약적이고 병렬화 가능한 작업이있는 경우 Clojure가 쉽게 만들 수 있습니다. 글쎄요, 더 쉽습니다.

업데이트 : 또 다른 주장. Clojure는 매우 강력하게 기능적이므로 기능적으로 생각하고 글을 쓰도록 강요하고 싶다면 플러스입니다.

다른 팁

이 질문은 대답하기가 불가능합니다. CL 및 Scheme보다 거의 100%의 Clojure를 사용해야합니다. 그러나 그것이 당신이 내 말을 들어야한다는 것을 의미하지는 않습니다. 다른 사람들은 그 반대의 경우라는 좋은 주장을 할 수 있습니다.

저에게는 Clojure의 구문 및 기능 이름이 미적으로 유쾌합니다. 특정 Java 라이브러리는 데이터 뮤닝 및 웹 프로그래밍 및 GUI 작업에 대해 내가하는 일에 매우 중요합니다. 기능적 프로그래밍은 도전적이고 즐겁습니다. Clojure의 결함은 중요하지 않으며 내 눈의 이점보다 더 중요합니다. 다른 LISP의 특정 견딜 수없는 결함은 Clojure에서 "고정"됩니다. 새로운 것이기 때문에 거꾸로 호환성을 무시할 수 있기 때문입니다. 그것은 동시성에 대한 소설적이고 논란의 여지가있는 접근 방식을 가지고 있습니다. Clojure 커뮤니티는 활기차고 환영하며 훌륭합니다. 이 모든 것은 나와 Clojure 또는 다른 Lisps에 대해 내가하는 것만 큼 많은 것을 말합니다.

Clojure 또는 Java에는 존재하지 않는 CL 및 체계에 대한 라이브러리가 있습니다. Clojure가 어떻게 너무 많은 구문을 사용하는지 싫어하는 사람들이 있습니다. [] 그리고 {} 그리고 모든 곳에서 Parens를 사용하고 싶습니다. Clos 스타일 OOP 또는 많은 변이 가능한 데이터 구조를 원한다면 다른 LISP가 아마도 더 나을 것입니다. JVM은 헤비급, 어쩌면 너무 헤비급이며 일부 사람들에게는 너무 많은 수하물입니다. 많은 Java가 Clojure (디자인으로)로 누출되며 이것은 일부 사람들의 감성을 화나게합니다. STM 및 불변의 데이터 구조에는 특정 물건 (예 : 숫자 위기)을 느리거나 우아하게 만드는 오버 헤드가 있습니다. Clojure는 새롭고 특정 지역에서 여전히 거칠으며 여전히 다른 지역에서 빠르게 변화하고 진화합니다. Clojure는 아직 시간 테스트를 통과하지 못했지만 다른리스는 이미 가지고 있습니다. Clojure는 "표준"이 아니며 일부 사람들은 구현에 의해 정의 된 언어가 호소력이 없다고 생각합니다. 등등. 이 중 어느 것도 나에게 중요하지 않지만 그들은 당신에게 할 수 있습니다.

이것은 거의 전적으로 주관적입니다. 어떤 언어를 사용해야하는지, 이미 알고있는 것, 기꺼이 배우고 싶은 라이브러리, 편집자 및 도구, 함께 살고 작업하고자하는 언어 결함 및 작업에 따라 다릅니다. 당신이 견딜 수없는 결함, 그리고 당신의 일을 더 빨리, 더 싸고, 더 저렴하게, 더 즐겁게하거나, 목표가 무엇이든 달성하는 데 도움이되는 것.

기본적으로, 당신이 따뜻하고 퍼지를 느끼게하는 것은 무엇이든. 그들 모두를 배우고 자신의 취향에 따라 정보에 입각 한 선택을하고 가장 좋아하는 것을 사용하십시오. 그들은 모두 좋습니다.

언제? 가능한 한 많이. 왜요? 불변의 데이터 구조 - 그들은 정말 좋습니다. 많은 것이 있습니다 다른 이유들 도.

Clojure는 언제 사용해야합니다

  • 기존 Java 코드로 작업해야합니다.
  • 당신은 LISP에 알레르기가있는 사람들과 함께 일합니다 ( "보스, 나는 Clojue vs라는 Java 동시성 라이브러리를 사용하고 싶습니다.
  • 다중 프로세서 시스템을위한 프로그래밍이 진행됩니다.

다음은 다음과 같은 경우 더 나을 것입니다.

  • 코드가 정확하다는 것을 증명해야합니다. Clojures (Java에게 호출)는 방해하지만이를 방해하지는 않습니다.
  • 당신은 자바에 알레르기가있는 사람들과 함께 일하고 있습니다.
  • 당신은 (새로운) JVM이없는 플랫폼을 위해 개발 중입니다.

1] 그렇습니다. 이것은 나쁜 나쁜 나쁜 이유입니다. 우리가 살고있는 세상입니다 ...

abcl (무장 한 곰 공통 LISP)와 몇 가지 계획 구현 (Kawa, Sisc, ...)도 JVM에서 실행 중입니다.

일반적으로 일반적인 LISP는 다른 '맛'에서 사용할 수 있습니다. ABCL은 그 중 하나입니다. 다른 컴파일 C, 기본 코드에는 광범위한 개발 환경 또는 논리 언어 또는 데이터베이스와 같은 전문화 된 확장 기능이 있습니다.

Clojure Otoh는 게으른 기능 프로그래밍 및 동시 프로그래밍에 중점을 둔 새로운 LISP 방언입니다. 저자 (Rich Hickey)는 매우 경험이 풍부한 소프트웨어 개발자 (Common LISP를위한 Java 및 .NET 인터페이스를 작성 했음)이며 Clojure와 함께 훌륭한 일을했습니다. 언어에 대한 과대 광고가 있지만 체크 아웃 할 가치가 있습니다. 최근 몇 년 동안 개발 된 더 나은 LISP 방언 중 하나입니다 (Newlisp 또는 Arc와 비교).

위에서 언급 한 많은 이유가 있습니다. 내 취향은 다음과 같습니다.

  1. 기존 라이브러리. 이것은 그런 혜택. 나는이 기능을 충분히 칭찬 할 수 없습니다.
  2. 이 언어는 현재 사용 가능한 하드웨어 (다중 코어)와 오늘날 사용중인 개발 패러다임에 더 적합합니다. 동시성에 대해 추론하기가 훨씬 쉽습니다. 기능적 측면도 더 좋습니다. LISP에서 기능적 프로그래밍을 수행 할 수는 있지만 분명히 패러다임을 무의식적으로, 무의식적으로, 의도하지 않게 깨는 것은 매우 쉽습니다.
  3. 크로스 플랫폼. Linux, Windows 및 Mac에서 동일한 프로그램을 실행합니다. 플랫폼을 가로 질러 실행되는 많은 기본 LISP가 있지만 모든 플랫폼의 모든 기능을 지원하는 것은 약간 스패성이며 한 플랫폼이나 다른 플랫폼에서 누락 된 것들에 대해 끊임없이 경고해야합니다. 마찬가지로, 필요한 라이브러리가 항상 플랫폼에서 지속적으로 지원되는 것은 아닙니다. ABCL과 JVM 체계 구현 중 일부는 이러한 일관된 지원을 가지고 있지만 포인트 2 때문에 여전히 Clojure를 선호합니다.
  4. 언어 커뮤니티의 본질. 일반적인 LISP 커뮤니티가 다루기가 불쾌한 시간을 많이 보자. Clojure의 경우에는 전혀 그렇지 않습니다. 일반적인 LISP 커뮤니티의 답변과 함께 제공되는 혼란과 의미없이 유용한 도움을받는 것은 쉽습니다. 내가 여러 번 나 자신을 배웠 듯이, 당신이 Clojure 커뮤니티로부터 정중하고 도움이되는 대답을 얻지 못할 정도로 의문의 여지가 없습니다.

불평해야 할 한 가지를 찾아야한다면 IDE 지원이 될 것입니다. 어쩌면 그것은 새로운 습관을 배우는 문제일지도 모르지만 Clojure보다 Java 개발의 역학을 처리하는 것이 여전히 쉽습니다. 나는 Clojure Box, NetBeas의 Enclojure, Intellij Idea의 La Clojure 및 Eclipse에서 시계 반대 방향으로 시도하고 사용했습니다. 그들은 당신이 주로 REPL에서 일한다면 모두 잘 작동하지만 클래스 파일의 편집 및 실행을 위해서는 여전히 약간 서투른 느낌이 듭니다.

Clojure의 서브 세트도 컴파일 할 수 있습니다 자바 스크립트

Clojure는 JVM (및 CLR)에서 실행됩니다.

Clojure의 디자인은 몇 가지 스타일의 동시 프로그래밍을 안전하게 수용하는 데 관심이 있으며, 고의적으로 다른 언어로 위험하고, 구부러지며, 종종 부서진 동시성 코드를 실수로 쓰기가 어렵습니다. 문제 도메인에 동시 프로그래밍이 포함 된 경우 동시성 관리를위한 Clojure의 통합 도구 배열은 다른 LISP 및 체계에서 사용할 수있는 구현 별 또는 가장 낮은 공동체 디노 미터 라이브러리보다 더 적합 할 수 있습니다.

Clojure의 가장 큰 장점 중 하나는 당신이 그것을 사용할 수있는 수많은 라이브러리입니다. 당신은 LISP의 표현력을 가진 Java의 힘을 가지고 있으며, 그것은 나쁜 조합입니다. Clojure는 실제 개발을 위해 만들어 졌기 때문에 실제 개발에 더 적합합니다. Clojure를 사용하면 멋진 도서관, 멋진 현대적인 기능 및 도움이되고 같은 생각을 가진 사람들의 놀라운 커뮤니티가 있습니다.

나는 Clojure가 더 나은 언어라고 말해야 할 것입니다. 그것은 매우 논쟁적인 진술이므로, 나는 이것이 나의 정직한 의견 일 뿐이라고 지적 할 것입니다.

Clojure 바위.

나는 항상 새로운 언어를 배우려고 노력하고 있기 때문에 Clojure를 배우는 데 관심이 있습니다. 그러나 SBCL과 다른 일반적인 LISP 구현이 Clojure보다 훨씬 빠르지 않습니까? Clojure 앱과 동일한 앱의 단일 스레드 SBCL 버전 사이의 성능 차이를 보충하기 위해 4 개 이상의 프로세서 (및 합리적으로 병렬화 가능한 작업)가 필요하지 않습니까?

일반적으로, 나는이 법안 중 하나가 청구서에 맞는 경우 다른 언어보다 Clojure를 선호하는 경향이 있습니다. (1). 도메인 모델은 매우 재귀 적 및/또는 그래프와 유사하게 보이는 경향이 있습니다. (2). 멀티 코어 JVM 환경 (예 : 탄성 콩나무)을 활용할 수있는 기회가 있습니다 (3). 데이터와 코드 사이에는 퍼지 장벽이 있습니다 (노드가 연산자 또는 숫자가 될 수있는 RPN 계산기 생각)

이것들은 약간 고안된 것처럼 들릴지 모르지만, 많은 작업에는 소셜 네트워크를보고 있든, 어떤 종류의 제약 기반 최적화 또는 시맨틱 관계 구축에 관계없이 그래프와 정보의 나무를 다루는 것이 포함됩니다. 나는 내가 가장 좋아하는 언어 인 Ruby가 Clojure와 비교하여 표현력과 원시 컴퓨팅 파워의 혼합을 줄 수 없다는 것을 알았습니다. 특히 정량적, 재귀 적, 동시 유형 문제 해결과 관련하여.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top