yaklang網(wǎng)絡(luò)安全領(lǐng)域編程語(yǔ)言
yaklang 是由電子科技大學(xué)網(wǎng)絡(luò)空間安全研究院聯(lián)合 yaklang.io 團(tuán)隊(duì)推出的中國(guó)首款網(wǎng)絡(luò)安全領(lǐng)域編程語(yǔ)言。
為了加速安全產(chǎn)品和安全工具的工程化研發(fā),我們創(chuàng)建了一門新的語(yǔ)言(Yaklang),并且同時(shí)實(shí)現(xiàn)了一個(gè)棧虛擬機(jī)(YakVM)。Yaklang 是一門圖靈完備的編程語(yǔ)言,其語(yǔ)法由上下文無(wú)關(guān)文法定義。它運(yùn)行在 YakVM 上。
為什么要做 DSL? (Why DSL?)
- 提高生產(chǎn)力。DSL 設(shè)計(jì)簡(jiǎn)潔高效,專注于解決特定問(wèn)題,可以大大提高開(kāi)發(fā)效率和生產(chǎn)力。
- 改善抽象能力。DSL 可以幫助開(kāi)發(fā)者利用高層抽象構(gòu)建解決方案,不需要處理底層細(xì)節(jié),提高開(kāi)發(fā)效率。
- 可維護(hù)性好。DSL 語(yǔ)言簡(jiǎn)單明了,代碼也更加清晰易讀,這有利于代碼的維護(hù)和擴(kuò)展。
- 可靠性高。DSL 專注一定領(lǐng)域,語(yǔ)言和語(yǔ)義都更加精確,這有助于編寫出更加可靠的程序。
- 易于嵌入。DSL可以很容易地嵌入到一門宿主語(yǔ)言中,實(shí)現(xiàn)起來(lái)非常方便。
示例代碼:
// 極簡(jiǎn)獲取參數(shù),--target xxxx --port 80
scanTarget, scanPorts = cli.String("target"), cli.String("port")
// 默認(rèn)批量進(jìn)行服務(wù)掃描
results, err = servicescan.Scan(scanTarget, scanPorts)
die(err)
// 取出掃描結(jié)果(異步掃描結(jié)果)
for result = range results {
println(result.String())
}
評(píng)論
圖片
表情
