2014-05-22 3 views
11

Ich portierte kürzlich eine meiner Simulationen zu Julia und ich entdeckte mehrere Typenfehler nur zur Laufzeit. Ich möchte meinen Julia Code statisch analysieren. MATLAB hat ein ähnliches Problem, wenn nur zur Laufzeit viele Fehler gefunden werden.Kann Julia (julia-lang) -Code statisch analysiert werden, um Laufzeitfehler zu vermeiden?

Das einzige Tool, das ich fand (TypeCheck.jl) führt eine kleine Teilmenge der statischen Analyse, die ich von einem Compiler erwarten würde.

Gibt es einen statischen Analysator für Julia-Skripte, so dass ich viele der jetzt Laufzeitfehler vermeiden kann?

Gibt es etwas, das ich mit dem LLVM JIT Compiler verwenden könnte? (Ich weiß nicht viel darüber, wie die Julia Kompilierung funktioniert und was ist und was nicht möglich ist)

Ist dies aufgrund der Natur von Julia überhaupt möglich?

Antwort

4

Ich denke, die Antwort hängt davon ab, welche Art von Laufzeitfehler Sie wünschen, da Julias Compile-Zeit zu einem Zeitpunkt auftritt, in dem die meisten kompilierten Sprachen die Laufzeit aufrufen würden.

Wenn Sie die Eingaben aller Ihrer Funktionen eingeben und auch alle Variablen in all Ihren Funktionen eingeben, können Sie bei der Kompilierzeit von Julia viele Schreibfehler erhalten.

+1

Also meine Verwirrung ist, dass die Dokumente vorschlagen, dass Typ Deklarationen nicht notwendig sind, aber dann haben Sie (möglicherweise) (viele) Laufzeitfehler genau wie die meisten dynamisch typisierten Sprachen. Und wie Sie sagten, wenn Sie alle Typen deklarieren, können Sie die Kompilierungszeit überprüfen. Das ist für mich frustrierend, weil ich an diesem Punkt den Polymorphismus nicht mehr brauche (und ich hätte Fortran genauso gut verwenden können). – kebno

+0

Was wäre Ihre bevorzugte Alternative? –

+0

Vielleicht ein Modus, in dem Julia davon ausgeht, dass jeder Typ aus einer kleinen Familie von Typen mit bekannten Konvertierungen stammt (wenn er also einen komplexen Doppelvektor sieht, weiß er, dass er in eine komplexe Doppelmatrix konvertiert werden kann). Innerhalb eines solchen eingeschränkten Typs könnte es alles optimieren und Warnungen ausgeben, wenn es für eine bestimmte Conversion viel raten müsste. Mit diesen Annahmen könnte es dann viele statische Analysen durchführen. Ich hoffe auf die Geschwindigkeit einer statisch getippten Julia, ohne ** alle ** der Typen deklarieren zu müssen. Also vielleicht ein Typ-Familien-Modus. – kebno

Verwandte Themen