2010-04-23 3 views
-4

Java, Groovy 및 Scala에 대한 평가를 완료했습니다. 내가 생각BigDecimal을 사용할 때 Groovy가 Java 대신 사용됩니까?

요인이었다 : 가독성, 정밀

내가 알고 싶습니다 요인 : 성능, 통합

내가 정밀도를 BigDecimal 수준을 필요의 용이성.

그루비

void someOp() 
{ 
def del_theta_1 = 6.0 
def del_theta_2 = 2.0 
def del_theta_m = 0.0 

del_theta_m = Math.abs(del_theta_1 - del_theta_2)/Math.log(del_theta_1/del_theta_2); 
} 

스칼라

자바

void someOp() 
{ 
    BigDecimal del_theta_1 = toDec(6); 
    BigDecimal del_theta_2 = toDec(2); 
    BigDecimal del_theta_m = toDec(0); 

    del_theta_m = abs(del_theta_1.subtract(del_theta_2)) 
     .divide(log(del_theta_1.divide(del_theta_2))); 

} 

: 여기

내 결과입니다

자바와 스칼라에서는 정적 가져 오기를 사용했습니다.

자바 : 장점 :

그루비 (로트 O 방법) 과부하없이 오퍼레이터 거의 판독/codeable : 그것이 자바
단점이다
장점 : 적어도 BigDecimal를 더 표시 입력을 의미 디폴트 다른 언어는

스칼라를 배울 수 : 모든 작업에 대한 놀라운 BigDecimal를 지원
단점을 (부문 포함) 장점이 : 운영자가 BigDecimal를
단점에 대한 오버로드했습니다 코드의 주요 핵심이 BigDecimal의 수학의 많은 경우 (DECIMAL128 고정) 부문 일부 놀라운 행동이 다른 언어

+3

제목 끝에 물음표가 있음에도 불구하고 실제로 질문하는 것 같지 않습니다. –

+0

@Chris Dail. 당신 말이 맞아요, 여기서 정말로 질문하는 것 같지 않습니다. –

+0

특정 정밀도가 필요하지 않은 경우 어떻게 부서별로 놀랄 수 있습니까?나는 수학적으로 내가 무엇을 기대해야하는지 모른다. –

답변

1

을 배우고, 자바는 그냥하지 올바른 언어 IMO. 연산자 오버로딩이 필요합니다.

향후 버전의 Java에서는 내장 된 숫자 유형에 대한 시스템 정의 연산자 오버로드를 통해 이러한 종류의 사용 사례를 사용할 수 있기를 바랍니다.

이 모든 언어가 JVM에서 실행되므로 올바른 언어로 고급 수학을 수강하고 다른 모든 작업에는 Java를 사용할 수 있습니다. 그러면 "다른 언어 배우기"측면을 최소화 할 수 있습니다.

4

BigDecimal의 핵심은 각 언어에서 동일합니다. 퍼포먼스의 제한 요인이 BigDecimal의 수학 연산 인 경우, 3 개 언어 모두 java.math.BigDecimal를 사용하기 때문에 차이는 없습니다.

따라서 읽기 쉽고 이해하기 쉬운 언어 (아마도 java가 아님)를 사용하십시오.

+0

+1, 나는 그들이 뒤에서 모두 똑같은지 몰랐다. – Pops

관련 문제