資料科學家的最愛程序語言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與偵錯器中操作,或是甚至在程序代碼中以宏設置。官方提到,雖然直譯器的速度加快了,但是比起編譯的程序代碼執行速度,仍然差距了幾個量級,他們會在幾個月內縮小這個差距,但是終究直譯程序代碼仍然比編譯過的程序代碼慢。