Java에 비해 Ceylon의 장점은 무엇입니까? [닫은]


11

인터넷을 통해 최근에 출시 될 강력한 프로그래밍 언어를 찾기 위해 Ceylon을 방문했습니다. 나는 ceylon-lang.org들렀다 .

실론은 Java의 영향을 크게받습니다. 우리는 자바를 좋아하지만 그 한계를 안다. 실론은 최고의 자바를 유지하지만, 경험상 성 가시고, 지루하고, 실망스럽고, 이해하기 어렵거나 버그가 발생하는 것을 개선합니다.

Java에 비해 Ceylon의 장점은 무엇입니까?


1
흠, 나는 그들의 사이트를 둘러보고 Java에서 Ceylon으로 전환하고 싶은 이유에 대한 설득력있는 설명을 찾지 못했습니다 ... 충분히, 그들은 아직 초기 단계에 있으므로, 너무 빨리 과대 광고를하고 싶지 않습니다. 그리고 실망 ...
Péter Török

1
음, 나는 열정적 인 프로그래머에 의한 또 다른 언어라고 생각했지만 (P :에는 문제가 없음), 최대 절전 모드의 Gavin King이 팀에 있다는 것을 확신합니다. 그래도 스칼라, 그루비 또는 클로저와 같은 다른 언어보다 실론을 누가 선택할지 모르겠습니다.
Andres F.


1
@AndresF. Red Hat 프로젝트 인 것 같습니다. 약간의 견인력을 보증해야하지만, 이것이 우리의 나머지 사람들이 원하는만큼 유지 될 것인지는 항상 말하기 어렵다. Java는 지난 16 년 동안 이전 버전과 호환되는 것으로 입증되었습니다. 현재로서는 이길 수 없습니다.

답변:


27

실론은 좋은 재미있는 언어처럼 보이지만 Java보다 "장점"이 상대적으로 적다고 주장합니다.

나는 이것이 더 좋은 구문과 더 "현대적인"언어 기능을 가지고 있다고 생각합니다. 그러나 이것은 주관적이며 프로그래밍 언어를 선택하는 데 비교적 작은 요소가 될 것이라고 주장합니다.

심각한 프로젝트를 위해 언어 / 플랫폼을 선택할 때 훨씬 더 중요한 요소 :

  • 주어진 문제에 대해 더 나은 패러다임으로 발전 할 수 있습니까? (아니-실론은 과도하게 정적으로 정형 된 Java와 유사한 OOP 공간에서 또 다른 언어입니다. 예를 들어 기능적 언어 공간을 목표로하는 Clojure 또는 매우 역동적 인 OOP JVM 언어 인 Groovy와는 다른 틈새를 처리하고 있습니다 )
  • 더 나은 도서관 생태계가 있습니까? (기회는 없습니다 ....이 점에서 Java는 타의 추종을 불허합니다. 기껏해야 Ceylon의 Java 라이브러리를 사용하게 될 것입니다)
  • 더 숙련 된 개발자를 얻을 수 있습니까? (아마도, 현재 실론을 사용하는 사람은 거의 없으며, 그렇게해도 큰 학습 곡선이 생길 것입니다)
  • 더 나은 도구가 있습니까? (아니오-Java 툴링은 매우 포괄적이고 성숙합니다)
  • 생산성을 높이는가? (논쟁의 여지가 있지만 훌륭한 생산 언어 기능이 있지만 학습 곡선 및 툴링 효과와 결합하면 실제로 뒤처 질 수 있습니다)
  • 더 나은 성능을 제공합니까? (아니오-JVM은 Java에 대해 매우 잘 최적화되어 있으며 다른 JVM 언어를 능가하기가 까다로운 요구입니다. Scala가 가까이 왔지만 수년 동안 정밀 조정되었습니다 ...)
  • 더 많은 대상 플랫폼을 지원합니까? (아니오-JVM 언어이므로 Java와 정확히 동일합니다)
  • 코드의 유지 관리가 더 쉬워 집니까? (아마도-Java는 비교적 안정적이며 성숙하며 향후 유지 관리자를 혼동시킬 수있는 고급 언어 기능이 많지 않기 때문에 여기에서 시간의 테스트를 정확하게 수행했습니다)
  • 크고 적극적이며 도움이되는 커뮤니티가 있습니까? (아니, 적어도 Java 또는 Scala, Clojure, Groovy 등과 같은 다른 큰 JVM 언어와 비교되지는 않음)

전반적으로 나는 사람들이 실론을 실험하고 학습의 관점에서 재미있게 놀라고 격려합니다.

그러나 현재 많은 사람들이 그것을 바꾸고 싶어하는 강력한 이점을 보지 못했습니다 (또는 Clojure, Scala, JRuby 또는 Groovy와 같은 다른 JVM 언어보다 우선).


2
"더 많은 대상 플랫폼을 지원합니까?" 예-Ceylon을 Javascript로 컴파일 할 수 있습니다.
Chochos

1
또한 실론이 아직 완성되지 않았기 때문에 일부 포인트에 대한 귀하의 평가는 실제로 유효하지 않다고 생각하므로 현재 몇 년 동안 사용 된 다른 언어와 비교할 필요는 없습니다.
Chochos

5
@Chochos-Java를 JavaScript로 컴파일 할 수도 있습니다 (Google Web Toolkit 은이 작업을 수행합니다) .Java 가하는 것 외에도 아무것도 아닙니다. Ceylon이 완전히 완료되지 않았다는 데 동의하지만, 현재 모든 포인트가 유효하고 향후 5 년 내에 Ceylon 팀이 현재 로드맵을 모두 완료하더라도 변경되지 않을 것으로 생각합니다.
mikera

1
@ mikera Chochos는 완전히 맞습니다. 실론은 기본적으로 JS 컴파일을 지원합니다. 네이티브 코드로 컴파일 할 수도 있습니다. 나는 이것이 큰 차이라고 생각한다. "어딘가에 의해 누군가가 똑같이하는 툴이있다."
Gundon

5
@mikera- "대규모 커뮤니티가 있습니까?"는 물론 다가오는 모든 언어에 대한 살인자 주장입니다. 즉, 소규모 커뮤니티는 종종 반응이 좋고 유능합니다. (자바에서 Java에 관한 스크랩이 하루 종일 작성되는 것을보십시오 ....)
Ingo

3

Java에는없는 멋진 기능이 있습니다.

  1. 확정 된 제네릭
  2. 타입 추론
  3. Mixins (JDK8에서 제공되지만)
  4. 연합 및 교차로 유형
  5. "고차 함수"(일등 객체로는 기능하지는 않지만)
  6. 마감 (JDK8에도 제공)

3. JDK8의 Defender 메소드는 믹스 인의 일부 기능을 제공 할 수 있지만 믹스 인이나 특성에 근접하지는 않습니다. 4. 유니온과 교차로 유형은 나에게 이상한 개념입니다. 부가 가치를 이해하는 데 문제가 있습니다. AFAIK는 두 개의 다른 인터페이스를 결합한 인터페이스를 정의 할 필요가 없을 때 타이핑 노력을 줄여줍니다. 그 외에는 Java가 Scala / Kotlin / Ceylon / 이진 이전 버전과의 호환성에 문제가있는 모든 고급 기능을 절대로 갖지 못할 것이라고 확신합니다. 따라서 Ceylon과 마찬가지로 Java를 포기하면 약간의 정당성이 있습니다.
OlliP

@OlliP 컴파일러가 생성하는 모든 공용체 및 교차로 유형을 정의하고 싶지는 않습니다. Java에는 교차 유형이 있지만 일반 인수로만 사용됩니다. 공용체 유형을 일반적인 수퍼 타입으로 변환하면 재미있는 컴파일러 메시지 ( "& capture of?")가 발생합니다. 유니온 유형은 널 입력에도 사용되는데, 이는 Java 널 및 선택적 모두에 비해 상당히 우수합니다.
maaartinus

2

내가 알기로, 실론과 다른 "취미 생성"JVM 언어의 가장 큰 차이점 중 하나는 Red Hat / JBoss에 의해 지원된다는 것입니다. 따라서 JBoss Tools / Developer Studio에 통합 된 멋진 툴링 세트, JBoss AS / Gatein Portal 및 모든 Midleware / JEE 6 / BRMS와의 좋은 상호 작용이 가능합니다. 따라서 일부 포닝에서 PHP "변경 및 새로 고침주기"가 포함 된 매우 생산적인 포틀릿 인 JSF에서 본격적인 실론 응용 프로그램을 개발할 수 있습니다.

대부분의 JVM 기반 언어로서, 거대한 코드 기반이 필요한 프로젝트의 Java를 대체하는 것으로 보지 않지만 중소 규모의 프로젝트, 특히 CRUD 집약적, 포틀릿 등 매우 모듈화 된 프로젝트를 대체합니다. ). 나는 웹 세계, 특히 JBoss 팬들에게 큰 호평을받을 것이라고 생각합니다.


1
"실론 및 기타"취미 생성 된 "JVM 언어" 스칼라와 코 틀린은 취미로 만든 언어입니까?
OlliP

Ceylon 프로젝트를 만들 때 Ceylon IDE가 모듈 정의를 작성하는 방식은 Jigsaw에게 영감을 준다고 생각합니다. Ceylon IDE를 사용하면 사용자가 모듈화를 쉽게 할 수 있습니다. OSGi를 사용하면 maven 플러그인과 다양한 매개 변수로 놀아야하므로 매우 번거 롭습니다. Oracle의 Jigsaw 직원은 Ceylon IDE의 스마트 한 사용자 친화적 도구 통합에 주목하고 Jigsaw와 유사한 제품을 만들려고합니다.
OlliP

1

실론은 여러면에서 흥미 롭습니다. Java의 일부 문제를 남겨두고 싶다면 Java에서 출발 해야하는 방식에 맞을 수도 있습니다. 실론은 상당히 많은 언어 기능을 가지고있는 것으로 보이며 이것이 스칼라에서와 같이 컴파일러를 느리게 만들거나 코드 크기에 비례하지 않는 빌드 시간을 악화시키기를 희망합니다 ( 2 년의 스칼라 경험 피드백 참조 ). 실론 개발 팀의 속도는 매우 인상적입니다.

Kotlin은 여전히 ​​0.6이며 작년의 개발 속도를 고려할 때 1.0에서 1 년 정도 떨어져 있다고 말할 것입니다. 실론과 같은 많은 언어 기능이 없지만 (자바는 특성 및 확장 방법과 같이 누락 된 중요한 기능입니다) 문제가없는 스칼라의 일종 인 것처럼 보입니다. 확장 가능한 빌드 시간에는 문제가 없을 것 같습니다. 그러나 Kotlin은 Groovy와 같은 멋진 Java 일 수 있습니다. XML 의존성, 상용구 코드, 바이트 코드 조작 등을 사용하여 Java 상용 프로그래밍에서 벗어날 수 없습니다. Java 및 Scala와 같은 작업이 올바르게 수행되었습니다. 코 틀린과 실론이 차이를 만들 수 있을지는 아직 남아 있지 않다. 나는 두 시도 모두 노력할 가치가 있다고 생각하며 행운을 빕니다.


-2

실론은 개발 중에 모든 큰 JVM 언어 (예 : Groovy를 제외하고 위에서 언급 한 모든 언어)와 같이 사양을 작성하고 있습니다.

실론 (http://ceylon-lang.org/documentation/1.0/spec)

클로저 (http://clojure.org/Reference)

스칼라 (www.scala-lang.org/docu/files/ScalaReference.pdf)

자바 (http://docs.oracle.com/javase/specs/jls/se7/html/index.html)

JRuby는 루비의 사양을 준수해야합니다 (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=59579).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.