2014-05-22 1 views
11

필자는 최근 필자의 시뮬레이션 중 하나를 Julia로 이식했으며 실행시에서 여러 유형 오류 () 만 발견했습니다. 줄리아 코드를 정적으로 분석하고 싶습니다. MATLAB은 런타임에 많은 오류를 찾는 것과 비슷한 문제가 있습니다.Julia (julia-lang) 코드를 정적으로 분석하여 런타임 유형 오류를 방지 할 수 있습니까?

내가 찾은 유일한 도구 (TypeCheck.jl)는 컴파일러에서 기대하는 정적 분석의 작은 하위 집합을 수행합니다.

줄리아 스크립트 용 정적 분석기가 있습니까? 그렇다면 현재 런타임 오류가 많이 발생하는 것을 피할 수 있습니까?

LLVM JIT 컴파일러에서 사용할 수있는 것이 있습니까? (필자는 Julia 컴파일 작업이 어떻게 작동하고 무엇이 가능하고 불가능한 지 많이 알지 못합니다.)

Julia의 특성상 이것이 가능합니까?

답변

4

필자는 Julia의 컴파일 시간이 컴파일 시점의 대부분의 컴파일 언어가 런타임을 호출하기 때문에 발생하는 런타임 오류 유형에 달려 있다고 생각합니다.

모든 함수의 입력을 입력하고 모든 함수의 변수를 모두 입력하면 Julia의 컴파일 시간에 많은 유형 오류가 발생할 수 있습니다.

+1

그래서 혼란은 문서에서 형식 선언이 필요하지 않다고 제안하지만 대부분의 동적 유형 지정 언어와 마찬가지로 (잠재적으로) (많은) 런타임 오류가 발생한다는 것입니다. 그리고 당신이 말했듯이, 모든 타입을 선언한다면, 컴파일 타임 검사를 할 수 있습니다. 그 점에서 나는 더 이상 다형성이 필요하지 않기 때문에 (그리고 나는 Fortran을 사용했을지도 모른다) 나에게 실망 스럽다. – kebno

+0

선호하는 대안은 무엇입니까? –

+0

아마도 Julia는 모든 유형이 변환을 알고있는 작은 유형의 패밀리로부터 온 것이라고 가정합니다 (따라서 복잡한 이중 벡터를 볼 때 복잡한 이중 행렬로 변환 할 수 있음을 알 수 있습니다). 제한된 유형 모드에서는 특정 변환에 대해 많은 것을 추측해야한다면 모든 것을 최적화하고 경고를 줄 수 있습니다. 그런 가정하에, 정적 분석을 많이 할 수 있습니다. ** ** 모든 유형의 **을 선언 할 필요없이 정적으로 입력 된 줄리아의 속도를 기대하고 있습니다. 따라서 유형 가족 모드 일 수 있습니다. – kebno

관련 문제