国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請入駐

國產(chǎn)編程語言,抓住了AI的風(fēng)口,這次真的領(lǐng)先了!

0
分享至

01

前言

這兩年,AI編程進(jìn)化速度實(shí)在驚人,程序員只需要把需求說清楚,AI很快就能給出一版能跑的東西。

但能跑 ≠ 正確,頁面沒報(bào)錯(cuò),不等于認(rèn)證、權(quán)限、狀態(tài)流轉(zhuǎn)、邊界條件沒有坑。于是程序員被迫花大量時(shí)間做代碼審查,成了“審核官”和“背鍋俠”。。

但人的注意力也是有限的,代碼少的時(shí)候,人還能兜底。代碼一多,邏輯一繞,程序員只能對著一大堆代碼哀嘆了,最終,review 從“認(rèn)真審查”變成“差不多看過”。

那么問題來了:有沒有一種辦法,描述程序應(yīng)滿足的約束,并自動(dòng)檢查實(shí)現(xiàn)是否真正滿足這些約束呢?這樣一來,代碼的正確性就有很大的保證,不用程序員苦哈哈地去審查了。

這正是“形式化驗(yàn)證”要解決的事,只是過去門檻太高,難以普及。

最近我注意到國產(chǎn)編程語言MoonBit發(fā)布的0.9版本中,引入了一個(gè)非常讓人振奮的決定:把形式化驗(yàn)證加入到了日常開發(fā)流程當(dāng)中!


02

什么是形式化驗(yàn)證?

我們拿一個(gè)案例來看一下:二分查找算法。二分查找的概念非常簡單,就是每次折半嘛!

你很自信,迅速寫出一版,提交了:

    return None

很不幸,你手滑了,把 i


其實(shí),普通程序員寫二分查找時(shí),類似小細(xì)節(jié)很多,只是這些“隱含假設(shè)”都在腦子里:

(1) 調(diào)用方傳進(jìn)來的是一個(gè)從小到大排好序的有序數(shù)組

(2) 每次判斷的區(qū)間范圍是[i,j),搜索區(qū)間一直在縮小

(3) 對于每次循環(huán),“中間點(diǎn)”左邊的元素一定 < key ,右邊的一定>key

(4) 返回值要么是None,要么是數(shù)組中某個(gè)元素的索引

但這些假設(shè)你平時(shí)不會(huì)寫出來,就是寫出來也是注釋或者文檔。

如果能把這些規(guī)則也寫出來,當(dāng)成程序的一部分,可以對程序自動(dòng)進(jìn)行驗(yàn)證,那豈不是能自動(dòng)找到代碼寫錯(cuò)的地方,代碼豈不是固若金湯了?

形式化驗(yàn)證就是這么做的,它包括3個(gè)部分:

1.前置條件

例如:函數(shù)調(diào)用者必須保證,輸入的數(shù)組是從小到大排序的,否則就報(bào)錯(cuò)。

2.后置條件

例如:我這個(gè)函數(shù)保證:要么返回None(不存在),要么返回一個(gè)索引值i,使得xs[i] = key。

3.不變量

例如:在每一輪循環(huán)中,j都小于數(shù)組的長度, i 左邊的所有元素都 < key, j 右邊的所有元素都 > key.....


它們就像定義一個(gè)合約,相當(dāng)于代碼的“法律條款”,需要用嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)方式定義出來(一會(huì)兒就看到)。

MoonBit拿到這個(gè)合約和代碼以后,會(huì)進(jìn)行推理:初始狀態(tài)成立嗎?每一步都不破壞不變量嗎?結(jié)束時(shí)能推出結(jié)果嗎?

如果三步都成立,證明完成,你寫的代碼沒有問題,滿足合約。

值得注意的是,傳統(tǒng)的測試方式可能是驗(yàn)證100組數(shù)據(jù),只能說明這100組沒問題,這是抽樣驗(yàn)證。 “我試過很多例子,看起來沒問題。”

而MoonBit是數(shù)學(xué)證明,對于任意的數(shù)組長度,任意的數(shù)據(jù)分布,任意的key,都成立?!拔覍懥艘环葑C明,這段代碼在邏輯上不可能錯(cuò)!”

高下立判。

03

如何在MoonBit做形式化驗(yàn)證?

好,我們來看下MoonBit中如何表達(dá)這些前置條件,不變量,后置條件。

同樣的二分查找算法,在MoonBit中是這么寫的:


proof_require 就是前置條件;

proof_ensure 是后置條件;

proof_invariant 是不變量;

其他的像:

sorted,binary_search_ok,all_less_before,all_greater_from,binary_search_ok都是謂詞,也需要明確地定義出來:


它們看起來有些枯燥,但是實(shí)際上仔細(xì)看一下還是很容易理解的(學(xué)過離散數(shù)學(xué)的看到這些會(huì)更親切)。

例如這個(gè)in_bounds謂詞,它的意思是:下標(biāo) i 是合法的數(shù)組索引,滿足i>=0 , i

}

下面這個(gè)sorted謂詞中,出現(xiàn)了一個(gè)新符號(hào)?,意思是for all(對于所有)。? i 就是對于所有的i。

}

sorted的意思是:對于所有的下標(biāo)i和j , 如果它們在數(shù)組的索引范圍內(nèi),并且i<=j , 那么它們對應(yīng)的數(shù)組元素xs[i] <= xs[j] 。

翻譯成大白話:數(shù)組是有序的,是從小到大排列的。

再強(qiáng)調(diào)一遍,這些謂詞和“合約”它不是注釋,不是文檔,它們就是Moonbit代碼的一部分。

當(dāng)開發(fā)者執(zhí)行 moon prove 時(shí),MoonBit 工具鏈會(huì)將程序邏輯和謂詞定義翻譯為約束求解問題,再交由 Z3 等 SMT 求解器進(jìn)行自動(dòng)化驗(yàn)證,確保你寫的二分查找算法滿足其合約承諾。

04

不會(huì)寫合約怎么辦?讓AI來!

看到這些謂詞,可能大部分程序員都懵了:這玩意兒寫起來比那個(gè)二分算法都復(fù)雜,對程序員的要求太高了,我可寫不了。

確實(shí),之前寫謂詞和不變量是一種專家技能,只在極少數(shù)對安全要求極高的場景(航空系統(tǒng),操作系統(tǒng)內(nèi)核,醫(yī)療設(shè)備等)中使用。

不過,MoonBit成功開辟了一條路:借助 AI 降低這一門檻。

事實(shí)上,前文中的二分查找——包括循環(huán)不變量、謂詞定義以及 proof_assert 引導(dǎo)鏈——大部分都由 AI Agent 輔助生成。

開發(fā)者給出函數(shù)實(shí)現(xiàn)和合約意圖,AI 生成候選不變量和中間斷言,再由定理證明器進(jìn)行嚴(yán)格的機(jī)器檢驗(yàn)。


這形成了一種精妙的協(xié)作模式:AI 負(fù)責(zé)“猜”,證明器負(fù)責(zé)“查”。AI 可能會(huì)出錯(cuò)——它生成的不變量可能過弱,中間斷言也可能遺漏——但錯(cuò)誤的猜測無法通過證明器的審查。

證明器要么確認(rèn)每一步推理都成立,要么明確指出哪個(gè)目標(biāo)無法證明,AI 再據(jù)此修正并繼續(xù)嘗試。最終交付的,始終是經(jīng)過數(shù)學(xué)驗(yàn)證的結(jié)果,從而避免“AI 幻覺”蒙混過關(guān)。

05

別的語言沒這么干過嗎?

形式化證明不是全新的概念,別的語言也干過,但是 MoonBit 首次開創(chuàng)性地將形式化驗(yàn)證作為語言的一等特性,原生內(nèi)置了。

例如C 語言的 Frama-C、Java 的 OpenJML、Rust 的 Creusot, 它們都是在現(xiàn)有語言上疊加了驗(yàn)證能力,合約和語言是分離的,只能通過注釋或者宏注入,相當(dāng)于語言不可見的外掛。

在這種情況下,IDE肯定就無法原生理解這些合約了,只能靠外掛插件來補(bǔ)全、跳轉(zhuǎn)。 當(dāng)編程語言升級(jí)的時(shí)候,外掛的驗(yàn)證工具通常需要滯后數(shù)月甚至數(shù)年才能跟上。

還有一類是專為形式化驗(yàn)證設(shè)計(jì)的語言,如微軟的 Dafny、Rocq(原 Coq)、Lean 等,它們雖然驗(yàn)證能力更強(qiáng),語言和證明系統(tǒng)天然一體。但它們?nèi)狈ψ鳛橥ㄓ镁幊陶Z言的生態(tài)基礎(chǔ)——沒有成熟的包管理、沒有廣泛的第三方庫、沒有大規(guī)模的工業(yè)用戶群。

MoonBit 的差異化在于垂直整合:合約、謂詞、循環(huán)不變量和 proof_assert 都是語言語法的一等成員,編譯器直接理解這些結(jié)構(gòu),IDE 可以像處理普通代碼一樣對驗(yàn)證注解提供語法高亮、自動(dòng)補(bǔ)全、類型檢查和錯(cuò)誤定位;moon prove 作為構(gòu)建系統(tǒng)的內(nèi)置命令,與 moon build、moon test 并列。從編寫代碼到編寫證明,再到運(yùn)行驗(yàn)證,全部在同一套語言、同一個(gè) IDE、同一條命令行中完成。


06

總結(jié)

一門語言想要世界流行,不僅自身實(shí)力要強(qiáng)悍到能真正解決一類問題,遇到風(fēng)口也很重要,比如Java,遇到了互聯(lián)網(wǎng)大爆發(fā)的風(fēng)口,趁著大型復(fù)雜網(wǎng)站缺乏有效編程語言成功上位,Ruby(RoR)遇到了快速開發(fā)Web2.0網(wǎng)站的風(fēng)口,Python則遇到了科學(xué)計(jì)算和人工智能的東風(fēng)......

作為國產(chǎn)編程語言,MoonBit正在努力抓住AI時(shí)代,作為ChatGPT之后出現(xiàn)的編程語言,它不但在設(shè)計(jì)上就考慮了和 Codeing Agent 深度整合,也充分利用AI輔助,工具鏈整合,開創(chuàng)性地將形式化驗(yàn)證作為語言的一等特性,原生內(nèi)置,將形式化驗(yàn)證的門檻大大降低。

隨著MoonBit這套能力不斷完善,我相信“證明代碼正確”能夠像編寫測試和運(yùn)行構(gòu)建一樣,逐步成為軟件工程中的常規(guī)實(shí)踐。

AI時(shí)代的編程語言,我很看好MoonBit。

如果你想了解更多關(guān)于MoonBit形式化驗(yàn)證的功能,感受下形式化證明帶來的威力,歡迎參加周六(4-25)在深圳舉辦的Meetup,掃描下方二維碼即可預(yù)約:

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
C羅首次出現(xiàn)在亞冠二級(jí)比賽,41歲老將帶病拼亞冠

C羅首次出現(xiàn)在亞冠二級(jí)比賽,41歲老將帶病拼亞冠

林子說事
2026-04-20 01:21:13
杜月笙面館吃飯,一伙地痞流氓找他要保護(hù)費(fèi),杜月笙:嫌命長嗎?

杜月笙面館吃飯,一伙地痞流氓找他要保護(hù)費(fèi),杜月笙:嫌命長嗎?

千秋文化
2026-04-01 20:35:51
國乒公布出征倫敦世乒賽時(shí)間,世界排名更新,梁靖崑丟冠軍賽資格

國乒公布出征倫敦世乒賽時(shí)間,世界排名更新,梁靖崑丟冠軍賽資格

體育大學(xué)僧
2026-04-20 11:20:34
這一次,上海樓市很多人要被拋棄了

這一次,上海樓市很多人要被拋棄了

魔都財(cái)觀
2026-04-20 07:41:26
5月—9月,要上市的6款SUV

5月—9月,要上市的6款SUV

小怪吃美食
2026-04-20 11:30:09
鄭麗文判斷準(zhǔn)確,解放軍下通牒,賴清德將登機(jī)離臺(tái)

鄭麗文判斷準(zhǔn)確,解放軍下通牒,賴清德將登機(jī)離臺(tái)

謝綸郵輪攝影
2026-04-20 12:24:39
等不到特朗普訪華了,美國提前對華攤牌:要求秘魯把中國趕出港口

等不到特朗普訪華了,美國提前對華攤牌:要求秘魯把中國趕出港口

安珈使者啊
2026-04-19 11:44:14
破防!雷軍15小時(shí)京滬續(xù)航自證清白,懇求全網(wǎng)幫幫小米

破防!雷軍15小時(shí)京滬續(xù)航自證清白,懇求全網(wǎng)幫幫小米

雷科技
2026-04-18 12:38:28
身體亮紅燈!白鹿官宣超長休整,暫停新劇只為轉(zhuǎn)型蓄力

身體亮紅燈!白鹿官宣超長休整,暫停新劇只為轉(zhuǎn)型蓄力

一禾的世界
2026-04-20 10:56:59
過分,韓國北面歧視中國游客:“你所做的就是你國家的面貌。”

設(shè)計(jì)癖
2026-04-18 12:50:09

這大體格 氣質(zhì)真好,40歲女性的典范,屬于萬里挑一,很大氣

這大體格 氣質(zhì)真好,40歲女性的典范,屬于萬里挑一,很大氣

手工制作阿殲
2026-04-20 08:10:04
深夜猝死的人增多!醫(yī)生反復(fù)強(qiáng)調(diào):吃完晚飯后,盡量少做這4件事

深夜猝死的人增多!醫(yī)生反復(fù)強(qiáng)調(diào):吃完晚飯后,盡量少做這4件事

岐黃傳人孫大夫
2026-04-18 11:45:03
4月20日油價(jià)變化,汽柴油下調(diào)780元/噸,今天降幅增加180元/噸!

4月20日油價(jià)變化,汽柴油下調(diào)780元/噸,今天降幅增加180元/噸!

豬友巴巴
2026-04-20 09:04:16
生育大局已定:如不出意外,2026年起中國人口將迎來3大變化

生育大局已定:如不出意外,2026年起中國人口將迎來3大變化

蜉蝣說
2026-03-17 15:58:31
曝杜蘭特很可能G2復(fù)出!總分0-1或火線歸來 火箭將帥都盼他回歸

曝杜蘭特很可能G2復(fù)出!總分0-1或火線歸來 火箭將帥都盼他回歸

追球者
2026-04-20 12:58:42
每體:據(jù)相關(guān)人士透露,梅西收購科爾內(nèi)利亞大約花費(fèi)200萬歐

每體:據(jù)相關(guān)人士透露,梅西收購科爾內(nèi)利亞大約花費(fèi)200萬歐

懂球帝
2026-04-19 15:11:13
一地下黨被敵堵在屋內(nèi),房東大媽扭頭罵:死丫頭,還不趕緊倒馬桶

一地下黨被敵堵在屋內(nèi),房東大媽扭頭罵:死丫頭,還不趕緊倒馬桶

青史如煙
2026-04-19 08:40:59
李修賢談萬梓良現(xiàn)狀:酒吧駐場不丟人,為人仗義,事業(yè)婚姻都不順

李修賢談萬梓良現(xiàn)狀:酒吧駐場不丟人,為人仗義,事業(yè)婚姻都不順

以茶帶書
2026-04-14 16:39:49
愛潑斯坦文件曝光!證人實(shí)錘了:愛潑斯坦把梅拉尼婭介紹給特朗普

愛潑斯坦文件曝光!證人實(shí)錘了:愛潑斯坦把梅拉尼婭介紹給特朗普

街上的行人很刺眼
2026-04-20 11:45:12
不歡迎中國人的7個(gè)國家,不待見寫在臉上,中國游客仍蜂擁而至

不歡迎中國人的7個(gè)國家,不待見寫在臉上,中國游客仍蜂擁而至

史行途
2026-04-20 00:15:27
2026-04-20 14:31:00
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
252文章數(shù) 645關(guān)注度
往期回顧 全部

科技要聞

藍(lán)色起源一級(jí)火箭完美回收 客戶衛(wèi)星未入軌

頭條要聞

媒體:伊朗剛說不談 美國立即開打

頭條要聞

媒體:伊朗剛說不談 美國立即開打

體育要聞

七大獎(jiǎng)項(xiàng)候選官宣!文班或全票DPOY

娛樂要聞

鹿晗生日上熱搜,被關(guān)曉彤撕下體面

財(cái)經(jīng)要聞

月之暗面IPO迷局

汽車要聞

把天門山搬進(jìn)廠?開仰望U8沖上45度坡的那刻 我腿軟了

態(tài)度原創(chuàng)

藝術(shù)
本地
健康
家居
公開課

藝術(shù)要聞

王羲之《換鵝帖》尚在人間,驚艷無比!

本地新聞

12噸巧克力有難,全網(wǎng)化身超級(jí)偵探添亂

干細(xì)胞抗衰4大誤區(qū),90%的人都中招

家居要聞

自然慢調(diào) 慢享時(shí)光

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版