掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、小程序開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十年以來,已經(jīng)為千余家混凝土攪拌罐車各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的千余家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
Julia這門語言,因為集合了C語言的速度、Ruby的靈活、Python的通用于一身,獲得了萬千程序員的喜愛。
福利來了~Julia團(tuán)隊又發(fā)布了新的全功能調(diào)試器,可以以多種姿勢調(diào)試代碼,節(jié)省你的工作量。
有了這個新調(diào)試器的加持,你可以用Julia完成此前達(dá)不到的驚奇效果,包括:
是不是有點躍躍欲試了?
核心角色
這個全功能調(diào)試器為何如此秀,Julia官網(wǎng)解釋說,這是因為里面有一個核心角色:
一個強(qiáng)大的編譯器。
官方解釋說,這個編譯器可以運(yùn)行Julia代碼,同時支持各種前端控件控制具體執(zhí)行。
每一個前端都是自己的包(package):Juno IDE中就結(jié)合了調(diào)試器,Rebugger提供了一種REPL文本的UI, Debugger負(fù)責(zé)提供一般的step/next/continue命令行接口。
所有這些調(diào)試功能都可以與Revise無縫集成,所以,你可以在單獨(dú)的session中連續(xù)分析和修改代碼。
調(diào)試器新功能×2
下面一起來看新功能具體介紹~
Juno
Juno為編譯器提供了豐富的接口,支持設(shè)置斷點,還可以在源代碼中直接執(zhí)行。調(diào)試器REPL可以在本地環(huán)境中執(zhí)行任意代碼,Workspace可以幫助你檢查局部變量。
下面這張圖就展示的是gcd調(diào)試環(huán)節(jié):
Juno.@run宏指令負(fù)責(zé)解釋你的代碼,如果遇到斷點,則Juno.@enter支持你從***行重新開始。
Debugger和Rebugger
這是兩個REPL接口,Debugger提供類似gdb的 “step, next, continue”接口,而Rebugger提供的是類似IDE一樣的控制接口。
Debugger能提供一些其他接口沒有的功能,比如對stepping的精細(xì)控制,比如執(zhí)行生成函數(shù)的生成器,所以很多情況下Debugger可以成為你的***。
神奇的包
全能新調(diào)試器不僅帶來了全新的功能,還為一些已經(jīng)發(fā)布的Julia包賦予了新功能。
它們可能已經(jīng)不是你熟悉的包了,Julia中已經(jīng)形成了新的包“生態(tài)系統(tǒng)”,由四組大將組成,分別是JuliaInterpreter、LoweredCodeUtils、CodeTracking、Revise和Rebugger。
JuliaInterpreter
JuliaInterpreter是整個堆棧的關(guān)鍵角色,包含各種評估和檢查Julia代碼運(yùn)行情況的各種邏輯。
現(xiàn)在,JuliaInterpreter已經(jīng)在Julia 1.0的基礎(chǔ)上擴(kuò)展了很多新功能,包括:
LoweredCodeUtils
LoweredCodeUtils可以用于建立多種協(xié)作方法間的聯(lián)系,從而起到橋梁的作用。
不過,LoweredCodeUtils是***包中最深入最難懂的,讓不少人頭大。
舉個例子,下面這個看似簡單定義,實際上創(chuàng)建了五種方法,分別是一種body method,兩種定位參數(shù)方法和兩種關(guān)鍵字函數(shù)法。
CodeTracking
CodeTracking是一個簡單、輕量級的查詢API,可以用于從Revise中進(jìn)行檢索。
一般的工作場景是LoweredCodeUtils執(zhí)行分析,Revise掌管隨時間推移出現(xiàn)的各種變化,而CodeTracking負(fù)責(zé)將這些變化通知到其他組件。
三者分工明確,方便好用。
Revise和Rebugger
這個包***的變化莫過于一眼看過去,可以發(fā)現(xiàn)編譯的界面產(chǎn)生了變化。此外,Rebugger還獲得了一些新的能力,比如在REPL中定義處理方法。
從長遠(yuǎn)來看,它對JuliaInterpreter和LoweredCodeUtils的深入分析可能會實現(xiàn)更多以前無法實現(xiàn)的功能。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流