资料科学家的最爱程序语言Julia将释出Debugger

数据科学家爱用的程序语言Julia,释出了全新功能完整的侦错器(Debugger),可以让开发者轻松地侦错和内省(Introspect)程序代码,可以深入函式手动走访程序代码,并检查状态,也能在不需要重新启动的状况下,以互动的方式更新和替换现有程序代码,或是设置断点和陷阱错误,帮助开发者捕捉故障发生的问题。官方提到,侦错器本身就是一组各种功能集合的工具,而其核心功能则是由直译器支持,该直译器不只能够执行Julia程序代码,也能以各种前端控制直译器的执行。每个前端都有其可用的套件,Juno将侦错器整合进IDE中,Rebugger则提供REPL文字用户接口,而侦错器提供传统的命令接口。这些侦错功能都与套件Revise无缝整合,开发者可以在同一个对话(Session)中,连续分析和修改程序代码。

Juno为直译器提供了丰富的用户接口,让开发者可以设定断点,并直接在源代码中逐步执行。侦错器REPL能够在本地上下文执行任意程序代码,开发者可以在Workspace中检查局部变量,使用宏[email protected]开始直译开发者的程序代码,或是[email protected]可以从第一行开始逐步进行。当开发者使用Atom之外的编辑器,或是透过控制台界面在远程对话中工作,可以使用REPL进行侦错,REPL有两种界面,其一是侦错器提供类似gdb的逐步、下一步和继续接口,另一种Rebugger则是提供IDE形式的控制台接口。侦错器具有一些其他接口都没有的功能,像是调控逐步执行的精细度,以及执行生成函式的生成子等。图片信息来源:http://www.cafes.org.tw/info.asp

而Julia这些新的侦错功能都来自新版的JuliaInterpreter,官方提到,JuliaInterpreter是整个堆栈的关键,其包含评估和检查Julia程序代码的逻辑,也能用于逐步进行程序代码评估以及断点的实作。JuliaInterpreter是从ASTInterpreter2套件改进而来,顺应Julia 1.0的需要,加入了许多改变,在效能上也获得了大幅度的改进,约是原本的50倍速度。JuliaInterpreter改进新增对断点的支持,官方提到,严格说来虽然不是直译器功能,但却是建构侦错器必要的功能,并且也可以被视作直译器控制流的一种形式,这些断点可以用断点函式和宏设置,或在Juno、Rebugger与侦错器中操作,或是甚至在程序代码中以宏设置。官方提到,虽然直译器的速度加快了,但是比起编译的程序代码执行速度,仍然差距了几个量级,他们会在几个月内缩小这个差距,但是终究直译程序代码仍然比编译过的程序代码慢。