your programing

Scala 대 Groovy 대 Clojure

lovepro 2020. 9. 30. 11:10
반응형

Scala 대 Groovy 대 Clojure


누군가 Scala, Groovy 및 Clojure의 주요 차이점을 설명해 주시겠습니까? 이러한 각 컴파일이 JVM에서 실행된다는 것을 알고 있지만 간단한 비교를 원합니다.


Groovy 는 동적으로 유형이 지정된 언어로 구문이 Java와 매우 유사하며 여러 가지 구문이 개선되어 더 가벼운 코드와 더 적은 상용구를 허용합니다. 인터프리터를 통해 실행될 수도 있고 컴파일 될 수도 있으므로 새로운 구문을 배우지 않고도 빠른 프로토 타이핑, 스크립트 및 동적 언어 학습에 적합합니다 (Java를 알고 있다고 가정). Groovy 2.0부터 정적 컴파일에 대한 지원도 증가하고 있습니다. Groovy는 클로저를 지원하고 다소 기능적인 스타일의 프로그래밍을 지원하지만, 여전히 함수형 프로그래밍의 전통적인 정의와는 상당히 다릅니다.

ClojureSoftware Transactional Memory 와 같은 몇 가지 고급 기능이있는 Lisp의 방언입니다 . Lisp를 좋아하고 JVM에서 이와 같은 것을 사용하고 싶다면 Clojure가 적합합니다. 아마도 JVM에서 실행 되는 가장 기능적인 언어 이며 확실히 가장 유명한 언어 입니다. 또한 다른 Lisp 방언보다 불변성을 더 강조하여 기능적 언어 애호가의 마음에 더 가깝습니다.

Scala비 연구 언어에서 사용할 수 있는 가장 진보 된 유형 시스템 중 하나 이며 확실히 JVM에서 가장 진보 된 유형 시스템으로 Java보다 더 많은 완전한 객체 지향 언어 입니다. 또한 객체 지향성을 손상시키지 않으면 서 기능적 언어의 많은 개념과 기능을 결합하지만 기능적 언어 특성에 대한 타협은 후자의 일부 애호가를 지연시킵니다.

Groovy는 Grails에서 좋은 수용 도와 인기있는 웹 프레임 워크를 가지고 있습니다. 또한 Maven의 인기있는 대안이되고있는 Gradle 빌드 시스템을 지원합니다. 개인적으로 Jython과 JRuby가 다른 것들에 비해 JVM-land에 진출하기 시작하면서 유용성이 제한된 언어라고 생각합니다.

Clojure는 매우 흥미로운 기능을 무시하더라도 JVM에서 Lisp 방언이되는 것만으로도 강력한 매력을 가지고 있습니다. 당연히 인기를 제한 할 수 있지만 오랫동안 충성스러운 커뮤니티가있을 것으로 기대합니다.

Scala는 Java와 직접 경쟁 할 수 있으며 거의 ​​모든 측면에서 돈을 벌 수 있습니다. 물론 현재로서는 인기에서 경쟁 할 수 없으며 강력한 기업 지원이 부족하여 기업 환경에 대한 수용을 방해 할 수 있습니다. 또한 언어가 어떻게 진화하는지 측면에서 Java보다 훨씬 더 동적 인 언어입니다. 언어의 관점에서 보면 그것은 좋은 일입니다. 수천 줄의 코드를 작성하려는 사용자의 관점에서는 그렇지 않습니다.

마지막으로, 저는 Scala에 대해 매우 잘 알고 있으며 다른 두 가지만 알고 있습니다.


스칼라

Scala는 Funnel 로 알려진 순수한 기능적 언어에서 발전했으며 거의 모든 Java 구문의 클린 룸 구현을 나타내며, 명확한 개선이 이루어 지거나 언어의 기능적 특성이 손상되는 부분 만 다릅니다. 이러한 차이점에는 정적 메서드 대신 싱글 톤 객체와 유형 추론이 포함됩니다.

이것의 대부분은 Martin Odersky의 Pizza 언어에 대한 이전 작업을 기반으로 합니다. OO / FP 통합은 단순한 폐쇄를 훨씬 넘어서 포스트 기능으로 설명되는 언어로 이어졌습니다.

그럼에도 불구하고 여러면에서 Java에 가장 가깝습니다. 주로 OO 지원과 정적 타이핑의 조합 때문이지만 Java와 매우 밀접하게 통합되어야한다는 언어 설계의 명시적인 목표 때문이기도합니다.

그루비

Groovy는 다음과 같이 Java의 가장 큰 비판 중 두 가지를 명시 적으로 다룹니다.

  • 동적으로 입력되어 많은 상용구를 제거하고
  • 언어에 클로저를 추가합니다.

Clojure와 Scala가 제공하는 더 풍부한 기능적 구조를 제공하지는 않지만, 특히 script-syle 프로그램 작성을 위해 여전히 확실한 진화 적 개선을 제공하는 것은 아마도 구문 적 으로 Java에 가장 가깝습니다.

Groovy는 주로 springsource를 통해 세 가지 언어에 대한 가장 강력한 상업적 지원을 제공합니다.

클로저

Clojure는 LISP 제품군의 기능적 언어이며 동적으로 입력됩니다.

STM 지원과 같은 기능은 최상의 동시성 지원을 제공하는 반면 Scala는 이를 복제하기 위해 Akka 와 같은 타사 라이브러리가 필요합니다 .

구문 적으로는 일반적인 Java 코드에서 세 가지 언어 중에서 가장 멀기도합니다.

나는 또한 내가 스칼라에 대해 가장 잘 알고 있음을 공개해야한다 :)


클로저를 가지고 놀 시간이 없었습니다. 하지만 스칼라 대 그루비의 경우, 이것은 그루비 제작자 인 James Strachan의 말입니다.

"Javac의 장기 교체에 대한 제 팁은 Scala입니다. 저는 그것에 매우 감명 받았습니다. 누군가가 2003 년에 Martin Odersky, Lex Spoon & Bill Venners의 Scala 책 프로그래밍을 보여 주었다면 솔직히 말할 수 있습니다. 아마도 Groovy를 만들지 않았을 것입니다. "

여기 에서 전체 이야기를 읽을 수 있습니다.


그들은 어디에서 왔는지 또는 주로 대상으로하는 개발자에 따라 구별 될 수 있습니다.

Groovy 는 Java의 스크립팅 버전과 약간 비슷합니다. 오랫동안 Java 프로그래머는 대규모 아키텍처로 지원되는 민첩한 애플리케이션을 구축 할 때 집에있는 것처럼 느낍니다. Groovy on Grails는 이름에서 알 수 있듯이 Rails 프레임 워크와 유사합니다. Java의 장황함에 항상 신경 쓰고 싶지 않은 사람들을위한 것입니다.

Scala 는 객체 지향적이고 기능적인 프로그래밍 언어이며 Ruby 또는 Python 프로그래머는이 언어에 더 가까워 질 수 있습니다. 이 프로그래밍 언어에서 발견되는 일반적인 좋은 아이디어를 많이 사용합니다.

Clojure 는 Lisp 프로그래밍 언어의 방언이므로 Lisp, Scheme 또는 Haskell 개발자는이 언어로 개발하는 동안 집에서 느낄 수 있습니다.


I'm reading the Pragmatic Programmers book "Groovy Recipes: Greasing the wheels of Java" by Scott Davis, Copyright 2008 and printed in April of the same year.

It's a bit out of date but the book makes it clear that Groovy is literally an extension of Java. I can write Java code that functions exactly like Java and rename the file *.groovy and it works fine. According to the book, the reverse is true if I include the requisite libraries. So far, experimentation seems to bear this out.


Obviously, the syntax are completely different (Groovy is closest to Java), but I suppose that is not what you are asking for.

If you are interested in using them to script a Java application, Scala is probably not a good choice, as there is no easy way to evaluate it from Java, whereas Groovy is especially suited for that purpose.

참고URL : https://stackoverflow.com/questions/1314732/scala-vs-groovy-vs-clojure

반응형