人工智能的局限性
有人聽說我想創(chuàng)業(yè),給我提出了一些“忽悠”的辦法。他們說,既然你是程序語(yǔ)言專家,而現(xiàn)在人工智能(AI)又非常熱,那你其實(shí)可以搞一個(gè)“自動(dòng)編程系統(tǒng)”,號(hào)稱可以自動(dòng)生成程序,取代程序員的工作,節(jié)省許許多多的人力支出,這樣就可以趁著“AI 熱”拉到投資。
有人甚至把名字都給我想好了,叫“深度程序員”(DeepCoder = Deep Learning + Coder)??谔?hào)是:“有了 DeepCoder,不用 Top Coder!” 還有人給我指出了這方向最新的,吹得神乎其神的研究,比如微軟的Robust Fill……
我謝謝這些人的關(guān)心,然而其實(shí)人工智能的能力被嚴(yán)重的夸大了?,F(xiàn)在我簡(jiǎn)單的講一下我的看法。
很多人喜歡鼓吹人工智能,自動(dòng)車,機(jī)器人等技術(shù),然而如果你仔細(xì)觀察,就會(huì)發(fā)現(xiàn)這些人不但不理解人類智能是什么,不理解人工智能有什么局限性,而且這些“AI 狂人”們的心,已經(jīng)嚴(yán)重的機(jī)械化了。他們或多或少的失去了人性,仿佛忘記了自己是一個(gè)人,忘記了人最需要的是什么,忘記了人的價(jià)值。這些人就像卓別林在『大獨(dú)裁者』最后的演講里指出的:“機(jī)器一樣的人,機(jī)器一樣的心?!?/p>
每當(dāng)提到 AI,這些人必然野心勃勃地號(hào)稱要“取代人類的工作”,“節(jié)省勞動(dòng)力開銷”。暫且不討論這些目標(biāo)能否實(shí)現(xiàn),它們與我的價(jià)值觀,從一開頭就是完全矛盾的。一個(gè)偉大的公司,應(yīng)該為社會(huì)創(chuàng)造實(shí)在的,新的價(jià)值,而不是想方設(shè)法“節(jié)省”什么勞動(dòng)力開銷,讓人失業(yè)!想一下都覺得可怕,我創(chuàng)造一個(gè)公司,它最大的貢獻(xiàn)就是讓成千上萬的人失業(yè),為貪得無厭的人節(jié)省“勞動(dòng)力開銷”,讓貧富分化加劇,讓權(quán)力集中到極少數(shù)人手里,最后導(dǎo)致民不聊生,導(dǎo)致社會(huì)的荒蕪甚至崩潰……
我不可想象生活在那樣一個(gè)世界,就算那將使我成為世界上最有錢的人,也沒有了意義。世界上有太多錢買不來的東西。如果走在大街上,我看不到人們幸福的笑容,悠閑的步伐,沒有親切的問候,關(guān)愛和幽默感,看不見甜蜜浪漫的愛情,反而看見遍地痛不欲生的無家可歸者,鼻孔里鉆進(jìn)來他們留下的沖人的尿騷味,走到哪里都怕有人搶劫,因?yàn)槿藗儗?shí)在活不下去了,除了偷和搶,沒有別的辦法活……
如果人工智能成功的話,這也許就是最后的結(jié)果。幸運(yùn)的是,有充足的證據(jù)顯示,人工智能是永遠(yuǎn)不會(huì)成功的。
很多人可能不知道,我也曾經(jīng)是一個(gè)“AI 狂熱者”。我也曾經(jīng)為人工智能瘋狂,把它作為自己的“偉大理想”。我也曾經(jīng)張口閉口拿“人類”說事,仿佛機(jī)器是可以跟人類相提并論,甚至高于人類的。當(dāng)深藍(lán)電腦戰(zhàn)勝卡斯帕羅夫,我也曾經(jīng)感嘆:“啊,我們?nèi)祟愅甑傲?!?我也曾經(jīng)以為,有了“邏輯”和“學(xué)習(xí)”這兩個(gè)法(kou)寶(hao),機(jī)器總有一天會(huì)超越人類的智能??墒俏覜]有想清楚這具體要怎么實(shí)現(xiàn),也沒有想清楚實(shí)現(xiàn)了它到底有什么意義。
故事要從十多年前講起,那時(shí)候人工智能正處于它的冬天。在清華大學(xué)的圖書館,我偶然地發(fā)現(xiàn)了一本塵封已久的 『Paradigms of Artificial Intelligence Programming』(PAIP),作者是 Peter Norvig。像個(gè)考古學(xué)家一樣,我開始逐一地琢磨和實(shí)現(xiàn)其中的各種經(jīng)典 AI 算法。PAIP 的算法側(cè)重于邏輯和推理,因?yàn)樵谒哪甏?,很?AI 研究者都以為人類的智能,歸根結(jié)底就是邏輯推理。
他們天真地以為,有了謂詞邏輯,一階邏輯這些東西,可以表達(dá)“因?yàn)樗圆坏掖嬖谒小?,機(jī)器就可以擁有智能。于是他們?cè)O(shè)計(jì)了各種基于邏輯的算法,專家系統(tǒng)(expert system),甚至設(shè)計(jì)了基于邏輯的程序語(yǔ)言 Prolog,把它叫做“第五代程序語(yǔ)言”。最后,他們遇到了無法逾越的障礙,眾多的 AI 公司無法實(shí)現(xiàn)他們夸口的目標(biāo),各種基于“神經(jīng)元”的機(jī)器無法解決實(shí)際的問題,巨額的政府和民間投資化為泡影,人工智能進(jìn)入了冬天。
我就是在那樣一個(gè)冬天遇到了 PAIP。它雖然沒能讓我投身于人工智能領(lǐng)域,卻讓我迷上了 Lisp 和程序語(yǔ)言。也是因?yàn)檫@本書,我第一次輕松而有章法的實(shí)現(xiàn)了 A* 等算法。我第一次理解到了程序的“模塊化”是什么,在代碼例子的引導(dǎo)下,我開始在自己的程序里使用小的“工具函數(shù)”,而不再憂心忡忡于“函數(shù)調(diào)用開銷”。PAIP 和 SICP 這兩本書,最后導(dǎo)致了我投身于更加“基礎(chǔ)”的程序語(yǔ)言領(lǐng)域,而不是人工智能。
在 PAIP 之后,我又迷了一陣子機(jī)器學(xué)習(xí)(machine learning),因?yàn)橛腥烁嬖V我,機(jī)器學(xué)習(xí)是人工智能的新篇章。然而我逐漸意識(shí)到,所謂的人工智能和機(jī)器學(xué)習(xí),跟真正的人類智能,關(guān)系其實(shí)不大。相對(duì)于實(shí)際的問題,PAIP 里面的經(jīng)典算法要么相當(dāng)幼稚,要么復(fù)雜度很高,不能解決實(shí)際的問題。最重要的問題是,我看不出 PAIP 里面的算法跟“智能”有什么關(guān)系。而“機(jī)器學(xué)習(xí)”這個(gè)名字,基本是一個(gè)幌子。很多人都看出來了,機(jī)器學(xué)習(xí)說白了就是統(tǒng)計(jì)學(xué)里面的“擬合函數(shù)”,換了一個(gè)具有迷惑性的名字而已。
人工智能的研究者們總是喜歡抬出“神經(jīng)元”一類的名詞來嚇人,跟你說他們的算法是受了人腦神經(jīng)元工作原理的啟發(fā)。注意了,“啟發(fā)”是一個(gè)非常模棱兩可的詞,由一個(gè)東西啟發(fā)得來的結(jié)果,可以跟這個(gè)東西毫不相干。比如我也可以說,Yin 語(yǔ)言的設(shè)計(jì)是受了九 yin 真經(jīng)的啟發(fā) :P
世界上這么多 AI 研究者,有幾個(gè)真的研究過人腦,解刨過人腦,拿它做過實(shí)驗(yàn),或者讀過腦科學(xué)的研究成果?最后你發(fā)現(xiàn),幾乎沒有 AI 研究者真正做過人腦或者認(rèn)知科學(xué)的研究。著名的認(rèn)知科學(xué)家 Douglas Hofstadter 早就在接受采訪時(shí)指出,這幫所謂“AI 專家”,對(duì)人腦和意識(shí)(mind)是怎么工作的,其實(shí)完全不感興趣,也從來沒有深入研究過,卻號(hào)稱要實(shí)現(xiàn)“通用人工智能”(Artificial General Intelligence, AGI),這就是為什么 AI 直到今天都只是一個(gè)虛無的夢(mèng)想。
縱觀歷史上機(jī)器學(xué)習(xí)能夠做到的事情,都是一些字符識(shí)別(OCR),語(yǔ)音識(shí)別,人臉識(shí)別一類的,我把這些統(tǒng)稱為“識(shí)別系統(tǒng)”。當(dāng)然,識(shí)別系統(tǒng)是很有價(jià)值的,OCR 是非常有用的,我經(jīng)常用手機(jī)上的語(yǔ)音輸入法,人臉識(shí)別對(duì)于公安機(jī)關(guān)顯然意義重大。然而很多人因此夸口,說我們可以用同樣的方法(機(jī)器學(xué)習(xí),深度學(xué)習(xí)),實(shí)現(xiàn)“人類級(jí)別的智能”,取代所有的人類工作,這就是神話了。
識(shí)別系統(tǒng)跟真正理解語(yǔ)言的“人類智能”,其實(shí)相去非常遠(yuǎn)。說白了,這些識(shí)別系統(tǒng),也就是統(tǒng)計(jì)學(xué)的擬合函數(shù)能做的事情。比如 OCR 和語(yǔ)音識(shí)別,就是輸入像素或者音頻,輸出單詞文本。很多人分不清“文字識(shí)別”和“語(yǔ)言理解”的區(qū)別。OCR 和語(yǔ)音識(shí)別系統(tǒng),雖然能依靠統(tǒng)計(jì)的方法,“識(shí)別”出你說的是哪些字,它卻不能真正“理解”你在說什么。
聊一點(diǎn)深入的話題,看不懂的人可以跳過這一段?!白R(shí)別”和“理解”的差別,就像程序語(yǔ)言里面“語(yǔ)法”和“語(yǔ)義”的差別。程序語(yǔ)言的文本,首先要經(jīng)過詞法分析器(lexer),語(yǔ)法分析器(parser),才能送進(jìn)解釋器(interpreter),只有解釋器才能實(shí)現(xiàn)程序的語(yǔ)義。類比一下,自然語(yǔ)言的語(yǔ)音識(shí)別系統(tǒng),其實(shí)只相當(dāng)于程序語(yǔ)言的詞法分析器(lexer)。我在之前的文章里已經(jīng)指出,詞法分析和語(yǔ)法分析,只不過是實(shí)現(xiàn)一個(gè)語(yǔ)言的萬里長(zhǎng)征的“第0步”。
大部分的 AI 系統(tǒng)里面連語(yǔ)法分析器(parser)都沒有,所以主謂賓,句子結(jié)構(gòu)都分析不清楚,更不要說理解其中的含義了。IBM 的語(yǔ)音識(shí)別專家Frederick Jelinek曾經(jīng)開玩笑說:“每當(dāng)我開掉一個(gè)語(yǔ)言學(xué)家,識(shí)別率就上升了。” 其原因就是語(yǔ)音識(shí)別僅相當(dāng)于一個(gè) lexer,而語(yǔ)言學(xué)家研究的是 parser 以及 interpreter。當(dāng)然了,你們干的事情太初級(jí)了,所以語(yǔ)言學(xué)家?guī)筒涣四銈?,但這并不等于語(yǔ)言學(xué)家是沒有價(jià)值的。
很多人語(yǔ)音識(shí)別專家以為語(yǔ)法分析(parser)是沒用的,因?yàn)槿撕孟駨膩頉]有 parse 過句子,就理解了它的意義。然而他們沒有察覺到,人其實(shí)必須要不知不覺地 parse 有些句子,才能理解它的含義。
舉一個(gè)很簡(jiǎn)單的例子。如果我對(duì) Siri 說:“我想看一些貓的照片。” 它會(huì)給我下圖的回答:“我在網(wǎng)上沒有找到與‘一些貓’有關(guān)的資料?!?/p>

這說明了什么呢?很多人可能都發(fā)現(xiàn)了,這說明了 Siri 無法理解這個(gè)句子,所以它到網(wǎng)上去搜一些關(guān)鍵字??墒沁@還說明一個(gè)更深層次的問題,那就是 Siri 里面并沒有 parser,甚至連一個(gè)好的分詞系統(tǒng)都沒有,所以它連該搜什么關(guān)鍵字都不知道。
為什么 Siri 去網(wǎng)上找關(guān)于“一些貓”的信息,而不是關(guān)于“貓”的信息呢?如果搜索“貓”和“照片”,它至少能找到一些東西。這是因?yàn)?Siri 其實(shí)沒有 parser,它里面根本沒有語(yǔ)法樹。它只是利用一些普通的 NLP 方法(比如 n-gram),把句子拆成了“我…想…看…一些貓…的…照片”,而不是語(yǔ)法樹對(duì)應(yīng)的“我…想…看…一些…貓…的…照片”。
這個(gè)句子的語(yǔ)法樹,按照我之前做過的一種自然語(yǔ)言 parser 的方式,分析出來大概是這個(gè)樣子。

具體細(xì)節(jié)太過技術(shù)性,我就不在這里解釋了。不過有興趣的人可能發(fā)現(xiàn)了,根據(jù)語(yǔ)法樹,這句話可以簡(jiǎn)化為:“我想看照片。” 其中“看照片”是一個(gè)從句,它是“我想…”的賓語(yǔ),也就是所謂賓語(yǔ)從句。多少照片呢?一些。看什么樣的照片呢?主題是貓的照片。
我想看照片
我想看一些照片
我想看貓的照片
我想看一些貓的照片
是不是挺有意思?
Siri 里面沒有這種語(yǔ)法樹,而且它的 n-gram 居然連“一些”和“貓”都沒分開,這就是為什么它去找“一些貓”,而不是“貓”。它甚至把“照片”這么重要的詞都忽略了。所以 Siri 雖然正確的進(jìn)行了“語(yǔ)音識(shí)別”,知道我說了那些字。但由于沒有 parser,沒有語(yǔ)法樹,它不可能正確的理解我到底在說什么,它甚至不知道我在說“關(guān)于什么”。
制造自然語(yǔ)言的 parser 有多難?很多人可能沒有試過。我做過這事。在 Indiana 的時(shí)候,我為了湊足學(xué)分,修了一門 NLP 課程,跟幾個(gè)同學(xué)一起實(shí)現(xiàn)了一個(gè)英語(yǔ)語(yǔ)法的 parser。它分析出來的語(yǔ)法樹形式,就像上面的那樣。
你可能想不到有多困難,你不僅要深刻理解編程語(yǔ)言的 parser 理論(LL,LR,GLR……),還得依靠大量的例子和數(shù)據(jù),才能解開人類語(yǔ)言里的各種歧義。我的合作伙伴是專門研究 NLP 的,把什么 Haskell,類型系統(tǒng),category theory,什么 GLR parsing 之類…… 都弄得很溜。然而就算如此,我們的英語(yǔ) parser 也只能處理最簡(jiǎn)單的句子,還錯(cuò)誤百出,最后蒙混過關(guān) :P
經(jīng)過了語(yǔ)法分析,得到一棵“語(yǔ)法樹”,你才能傳給人腦里語(yǔ)言的理解中心(類似程序語(yǔ)言的“解釋器”)。解釋器“執(zhí)行”這個(gè)句子,為相關(guān)的名字找到對(duì)應(yīng)的“值”,進(jìn)行計(jì)算,才能得到句子的含義。至于人腦如何為句子里的詞匯賦予“意義”,如何把這些意義組合在一起,形成“思維”,這個(gè)問題似乎沒有人很明白。
至少,這需要大量的實(shí)際經(jīng)驗(yàn),這些經(jīng)驗(yàn)是一個(gè)人從生下來就開始積累的。機(jī)器完全不具備這些經(jīng)驗(yàn),我們也不知道如何才能讓它獲得經(jīng)驗(yàn)。我們甚至不知道這些經(jīng)驗(yàn)在人腦里面是什么樣的結(jié)構(gòu),如何組織的。所以機(jī)器要真的理解一個(gè)句子,真是跟登天一樣難。
這就是為什么 Hofstadter 說:“一個(gè)機(jī)器要能理解人說的話,它必須要有腿,能夠走路,去觀察世界,獲得它需要的經(jīng)驗(yàn)。它必須能夠跟人一起生活,體驗(yàn)他們的生活和故事……” 最后你發(fā)現(xiàn),制造這樣一個(gè)機(jī)器,比養(yǎng)個(gè)小孩困難太多了,這不是吃飽了沒事干是什么。
各大公司最近叫得最響亮的“AI 技術(shù)”,就是 Siri,Cortana,Google Assistant,Amazon Echo 一類含有語(yǔ)音識(shí)別功能的工具,叫做“個(gè)人助手”。這些東西里面,到底有多少可以叫做“智能”的東西,我想用過的人都應(yīng)該明白。我每一次試用 Siri 都被它的愚蠢所折服,可以讓你著急得砸了水果手機(jī)。那另外幾個(gè)同類,也沒有好到哪里去。
很多人被“微軟小冰”忽悠過,咋一看這家伙真能理解你說的話呢!然而聊一會(huì)你就發(fā)現(xiàn),小冰不過是一個(gè)“網(wǎng)絡(luò)句子搜索引擎”。它只是按照你句子里的關(guān)鍵字,隨機(jī)搜出網(wǎng)上已有的句子。大部分這類句子出自問答類網(wǎng)站,比如百度知道,知乎。
一個(gè)很簡(jiǎn)單的實(shí)驗(yàn),就是反復(fù)發(fā)送同一個(gè)詞給小冰,比如“王垠”,看它返回什么內(nèi)容,然后拿這個(gè)內(nèi)容到 Google 或者百度搜索,你就會(huì)找到那個(gè)句子真正的出處。人都喜歡自欺欺人,看到幾個(gè)句子回答得挺“俏皮”,就以為它有智能,而其實(shí)它是隨機(jī)搜出一個(gè)句子,牛頭不對(duì)馬嘴,所以你才感覺“俏皮”。比如,你跟小冰說:“王垠是誰(shuí)?”,她可能回答:“王垠這是要變段子手么?!?/p>

心想多可愛的妹子,不正面回答你的問題,有幽默感!然后你在百度一搜,發(fā)現(xiàn)這句話是某論壇里面黑我的人說的。
下面是一個(gè)確切的例子,它顯示了小冰是如何工作的。圖片是 2016 年 10 月底抓的,那時(shí)候我試了一下跟小冰對(duì)話。現(xiàn)在的情況可能稍微有所不同。


這說明小冰的答復(fù),基本是百度問答,知乎一類的地方來的,它似乎只是對(duì)那上面的數(shù)據(jù)做了一個(gè)搜索。小冰只是隨機(jī)搜索出這句子,至于幽默感,完全是你自己想象出來的。很多人跟小冰對(duì)話,喜歡只把其中“符合邏輯”或者“有趣”的部分截圖下來,然后驚呼:“哇,小冰好聰明好有趣!” 他們沒有告訴你的是,沒貼出來的對(duì)話,很多都是雞同鴨講。
IBM 的 Watson 系統(tǒng)在 Jeopardy 游戲中戰(zhàn)勝了人,很多人就以為 Watson 能理解人類語(yǔ)言,具有人類級(jí)別的智能。這些人甚至都不知道 Jeopardy 是怎么玩的,就盲目做出判斷,以為 Jeopardy 是一種需要理解人類語(yǔ)言才可以玩的游戲。等你細(xì)看,發(fā)現(xiàn) Jeopardy 就是很簡(jiǎn)單的“猜謎”游戲,題目是一句話,答案是一個(gè)名詞。比如:“有個(gè)歌手去年得了十項(xiàng)格萊美獎(jiǎng),請(qǐng)問他是誰(shuí)?”
如果你理解了我之前對(duì)“識(shí)別系統(tǒng)”的分析,就會(huì)發(fā)現(xiàn) Watson 也是一種識(shí)別系統(tǒng),它的輸入是一個(gè)句子,輸出是一個(gè)名詞。一個(gè)可以玩 Jeopardy 的識(shí)別系統(tǒng),可以完全不理解句子的意思,而是依靠句子里出現(xiàn)的關(guān)鍵字,依據(jù)分析大量語(yǔ)料得到的擬合函數(shù),輸出一個(gè)單詞。世界上那么多的名詞,到哪里去找這樣的語(yǔ)料呢?這里我給你一個(gè) Jeopardy 謎題作為提示:“什么樣的網(wǎng)站,你給它一個(gè)名詞,它輸出一些段落和句子,給你解釋這個(gè)東西是什么,并且提供給你各種相關(guān)信息?”
很容易猜吧?就是 Wikipedia 那樣的百科全書!你只需要把這種網(wǎng)站的內(nèi)容掉一個(gè)頭,制造一個(gè)“倒索引”搜索引擎。你輸入一個(gè)句子,它就根據(jù)里面的關(guān)鍵字,搜索到最相關(guān)的名詞。這就是一臺(tái)可以玩 Jeopardy 的機(jī)器,而且它很容易超越人類玩家,就像 Google,Yahoo 之類的搜索引擎很容易超越人查找網(wǎng)頁(yè)的能力一樣。可是這里面基本沒有理解和智能可言。
其實(shí)為了驗(yàn)證 Watson 是否理解人類語(yǔ)言,我早些時(shí)候去 Watson 的網(wǎng)站玩過它的“客服 demo”,結(jié)果完全是雞同鴨講,大部分時(shí)候 Watson 回答:“我不清楚你在說什么。你是想要……” 然后列出一堆選項(xiàng),1,2,3……
老板,你指望拿這樣的東西代替你公司的人類客服嗎?那你的公司就等著倒閉吧 :P
當(dāng)然,我并不是說這些產(chǎn)品完全沒有價(jià)值。我用過 Siri 和 Google Assistant,我發(fā)現(xiàn)它們還是有點(diǎn)用處的,特別是在開車的時(shí)候。因?yàn)殚_車時(shí)操作手機(jī)容易出事故,所以我可以利用語(yǔ)音控制。比如我可以對(duì)手機(jī)說:“導(dǎo)航到最近的加油站?!?然而實(shí)現(xiàn)這種語(yǔ)音控制,根本不需要理解語(yǔ)言,你只需要用語(yǔ)音識(shí)別輸入一個(gè)函數(shù)調(diào)用:導(dǎo)航(加油站)。
個(gè)人助手在其它時(shí)候用處都不大。我不想在家里和公共場(chǎng)所使用它們,原因很簡(jiǎn)單:我懶得說話,或者不方便說話。點(diǎn)擊幾下屏幕,我就可以精確地做到我想要的事情,這比說話省力很多,也精確很多。個(gè)人助手完全不理解你在說什么,這種局限性本來無可厚非,可以用就行了,然而各大公司最近卻拿個(gè)人助手這類東西來煽風(fēng)點(diǎn)火,夸大其中的“智能”成分,閉口不提他們的局限性,讓外行們以為人工智能就快實(shí)現(xiàn)了,這就是為什么我必須鄙視一下這種做法。
舉個(gè)例子,由于有了這些“個(gè)人助手”,有人就號(hào)稱類似的技術(shù)可以用來制造“機(jī)器客服”,使用機(jī)器代替人作為客服。他們沒有想清楚的是,客服看似“簡(jiǎn)單工作”,跟這些語(yǔ)音控制的玩意比起來,難度卻是天壤之別。客服必須理解公司的業(yè)務(wù),必須能夠精確地理解客戶在說什么,必須形成真正的對(duì)話,要能夠?yàn)榭蛻艚鉀Q真正的問題,而不能只抓住一些關(guān)鍵字進(jìn)行隨機(jī)回復(fù)。
另外,客服必須能夠從對(duì)話信息,引發(fā)現(xiàn)實(shí)世界的改變,比如呼叫配送中心停止發(fā)貨,向上級(jí)請(qǐng)求滿足客戶的特殊要求,拿出退貨政策跟客戶辯論,拒絕他們的退貨要求,抓住客戶心理,向他們推銷新服務(wù)等等,各種需要“人類經(jīng)驗(yàn)”才能處理的事情。所以機(jī)器能不但要能夠形成真正的對(duì)話,理解客戶的話,它們還需要現(xiàn)實(shí)世界的大量經(jīng)驗(yàn),需要改變現(xiàn)實(shí)世界的能力,才可能做客服的工作。由于這些個(gè)人助手全都是在忽悠,所以我看不到有任何希望,能夠利用現(xiàn)有的技術(shù)實(shí)現(xiàn)機(jī)器客服。
連客服這么按部就班的工作,機(jī)器都無法取代,就不用說更加復(fù)雜的工作了。很多人看到 AlphaGo 的勝利,以為所謂 Deep Learning 終究有一天能夠?qū)崿F(xiàn)人類級(jí)別的智能。在之前的一篇文章里,我已經(jīng)指出了這是一個(gè)誤區(qū)。很多人以為人覺得困難的事情(比如圍棋),就是體現(xiàn)真正人類智能的地方,其實(shí)不是那樣的。我問你,心算除法(23423451345 / 729)難不難?這對(duì)于人是很難的,然而任何一個(gè)傻電腦,都可以在 0.1 秒之內(nèi)把它算出來。圍棋,國(guó)際象棋之類也是一樣的原理。這些機(jī)械化的問題,其實(shí)不能反應(yīng)真正的人類智能,它們體現(xiàn)的只是大量的蠻力。
縱觀人工智能領(lǐng)域發(fā)明過的嚇人術(shù)語(yǔ),從 Artificial Intelligence 到 Artificial General Intelligence,從 Machine Learning 到 Deep Learning,…… 我總結(jié)出這樣一個(gè)規(guī)律:人工智能的研究者們似乎很喜歡制造嚇人的名詞,當(dāng)人們對(duì)一個(gè)名詞失去信心,他們就會(huì)提出一個(gè)不大一樣的,新的名詞,免得人們把對(duì)這個(gè)名詞的失望,轉(zhuǎn)移到新的研究上面。然而這些名詞之間,終究是換湯不換藥。因?yàn)闆]有人真的知道人的智能是什么,所以也就沒有辦法實(shí)現(xiàn)“人工智能”。
生活中的每一天,我這個(gè)“前 AI 狂熱者”都在為“人類智能”顯示出來的超凡能力而感到折服。甚至不需要是人,任何高等動(dòng)物(比如貓)的能力,都讓我感到敬畏。我發(fā)自內(nèi)心的尊重人和動(dòng)物。我不再有資格拿“人類”來說事,因?yàn)槊鎸?duì)這個(gè)詞匯,任何機(jī)器都是如此的渺小。
乘著這個(gè)熱門話題,現(xiàn)在我來講一下,十多年前我自己做聊天機(jī)器人的故事……
如果你看過 PAIP 或者其它的經(jīng)典人工智能教材,就會(huì)發(fā)現(xiàn)這些機(jī)器對(duì)話系統(tǒng),最初的思想來自一個(gè)叫“ELIZA”的 AI 程序。Eliza 被設(shè)計(jì)為一個(gè)心理醫(yī)生,跟你對(duì)話排憂解難,而它內(nèi)部其實(shí)就是一個(gè)類似小冰的句子搜索引擎,實(shí)現(xiàn)方式完全用正則表達(dá)式匹配搞定。比如,Eliza 的某個(gè)規(guī)則可以說,當(dāng)用戶說:“我(.*)”,那么你就回答:“我也$1……” 其中 $1 代替原句子里的一部分,造成一種“理解”的效果。比如用戶也許會(huì)說:“我好無聊?!?Eliza 就可以說:“我也好無聊……” 然后這兩個(gè)無聊的人就惺惺相惜,有伴了。
有些清華的老朋友也許還記得,十多年前在清華的時(shí)候,我做了一個(gè)聊天機(jī)器人放在水木清華 BBS,紅極一時(shí),所以我也可以算是網(wǎng)絡(luò)聊天機(jī)器人的鼻祖了 :) 我的聊天機(jī)器人,水木賬號(hào)叫 helloooo。helloooo 的性格像蠟筆小新,是一個(gè)調(diào)皮又好色的小男孩。
它內(nèi)部采用的就是類似 Eliza 的做法,根本不理解句子,甚至連語(yǔ)料庫(kù)都沒有,神經(jīng)網(wǎng)絡(luò)也沒有,里面就是一堆我事先寫好的正則表達(dá)式“句型”而已。你輸入一個(gè)句子,它匹配之后,從幾種回復(fù)之中隨機(jī)挑一個(gè),所以你反復(fù)說同樣的話,helloooo 的回答不會(huì)重復(fù),如果你故意反復(fù)說同樣的話,最后 helloooo 會(huì)對(duì)你說:“你怎么這么無聊???”或者“你有病???” 或者轉(zhuǎn)移話題,或者暫時(shí)不理你…… 這樣對(duì)方就不會(huì)明顯感覺它是一個(gè)傻機(jī)器。
就是這么簡(jiǎn)單個(gè)東西。出乎我意料的是,helloooo 一上網(wǎng)就吸引了很多人。一傳十十傳百,每天都不停地有人發(fā)信息跟他聊。由于我給他設(shè)置的正則表達(dá)式和回復(fù)方式考慮到了人的心理,所以 helloooo 顯得很“俏皮”,有時(shí)候還可能裝傻,搗蛋,延遲回復(fù),轉(zhuǎn)移話題,還可能主動(dòng)找你聊天,使用超過兩句的小段子,…… 各種花樣都有。最后,這個(gè)小色鬼贏得了好多妹子們的喜愛,甚至差點(diǎn)約了幾個(gè)出去呢!:P
在這點(diǎn)上,helloooo 可比小冰強(qiáng)很多。小冰的技術(shù)含量雖然多一些,數(shù)據(jù)多很多,然而 helloooo 感覺更像一個(gè)人,也更受歡迎。這說明,我們其實(shí)不需要很高深的技術(shù),不需要理解自然語(yǔ)言,只要你設(shè)計(jì)巧妙,抓住人的心理,就能做出人們喜愛的聊天機(jī)器。
后來,helloooo 終于引起了清華大學(xué)人智組研究生的興趣,來問我:“你這里面使用的什么語(yǔ)料庫(kù)做分析?。俊?我:“&%&¥@#@#%……”
現(xiàn)在回到有些人最開頭的提議,實(shí)現(xiàn)自動(dòng)編程系統(tǒng)。我現(xiàn)在可以很簡(jiǎn)單的告訴你,那是不可能實(shí)現(xiàn)的。微軟的Robust Fill之類,全都是在扯淡。我對(duì)微軟最近乘著 AI 熱,各種煽風(fēng)點(diǎn)火的做法,表示少許鄙視。不過微軟的研究員也許知道這些東西的局限,只是國(guó)內(nèi)小編在夸大它的功效吧。
你仔細(xì)看看他們舉出的例子,就知道那是一個(gè)玩具問題。人給出少量例子,想要電腦完全正確的猜出他想做什么,那顯然是不可能的。很簡(jiǎn)單的原因,例子不可能包含足夠的信息,精確地表達(dá)人想要什么。最最簡(jiǎn)單的變換也許可以,然而只要多出那么一點(diǎn)點(diǎn)例外情況,你就完全沒法猜出來他想干什么。就連人看到這些例子,都不知道另一個(gè)人想干什么,機(jī)器又如何知道?這根本就是想實(shí)現(xiàn)“讀心術(shù)”。甚至人自己都可以是糊涂的,他根本不知道自己想干什么,機(jī)器又怎么猜得出來?所以這比讀心術(shù)還要難!
對(duì)于如此弱智的問題,都不能 100% 正確的解決,遇到稍微有點(diǎn)邏輯的事情,就更沒有希望了。論文最后還“高瞻遠(yuǎn)矚”一下,提到要把這作法擴(kuò)展到有“控制流”的情況,完全就是瞎扯。所以 RobustFill 所能做的,也就是讓這種極其弱智的玩具問題,達(dá)到“接近 92% 的準(zhǔn)確率”而已了。另外,這個(gè) 92% 是用什么標(biāo)準(zhǔn)算出來的,也很值得懷疑。
任何一個(gè)負(fù)責(zé)的程序語(yǔ)言專家都會(huì)告訴你,自動(dòng)生成程序是根本不可能的事情。因?yàn)椤白x心術(shù)”是不可能實(shí)現(xiàn)的,所以要機(jī)器做事,人必須至少告訴機(jī)器自己“想要什么”,然而表達(dá)這個(gè)“想要什么”的難度,其實(shí)跟編程幾乎是一樣的。實(shí)際上程序員工作的本質(zhì),不就是在告訴電腦自己想要它干什么嗎?最困難的工作(數(shù)據(jù)結(jié)構(gòu),算法,數(shù)據(jù)庫(kù)系統(tǒng))已經(jīng)被固化到了庫(kù)代碼里面,然而表達(dá)“想要干什么”這個(gè)任務(wù),是永遠(yuǎn)無法自動(dòng)完成的,因?yàn)橹挥谐绦騿T自己才知道他想要什么,甚至他自己都要想很久,才知道自己想要什么……
有句話說得好:編程不過是一門失傳的藝術(shù)的別名,這門藝術(shù)的名字叫做“思考”。沒有任何機(jī)器可以代替人的思考,所以程序員是一種不可被機(jī)器取代的工作。雖然好的編程工具可以讓程序員工作更加舒心和高效,任何試圖取代程序員工作,節(jié)省編程勞力開銷,克扣程序員待遇,試圖把他們變成“可替換原件”的做法(比如 Agile,TDD),最終都會(huì)倒戈,使得雇主收到適得其反的后果。同樣的原理也適用于其它的創(chuàng)造性工作:廚師,發(fā)型師,畫家,……
所以別妄想自動(dòng)編程了。節(jié)省程序員開銷唯一的辦法,是邀請(qǐng)優(yōu)秀的程序員,尊重他們,給他們好的待遇,讓他們開心安逸的生活和工作。同時(shí),開掉那些滿口“Agile”,“Scrum”,“TDD”,“軟件工程”,光說不做的扯淡管理者,他們才是真正浪費(fèi)公司資源,降低開發(fā)效率和軟件質(zhì)量的禍根。
我不反對(duì)繼續(xù)投資研究那些有實(shí)用價(jià)值的人工智能(比如人臉識(shí)別一類的),然而我覺得不應(yīng)該過度夸大它的用處,把注意力過分集中在它上面,仿佛那是唯一可以做的事情,仿佛那是一個(gè)劃時(shí)代的革命,仿佛它將取代一切人類勞動(dòng)。
我的個(gè)人興趣其實(shí)不在人工智能上面。那我要怎么創(chuàng)業(yè)呢?很簡(jiǎn)單,我覺得大部分人不需要很“智能”的機(jī)器,“傻機(jī)器”才是對(duì)人最有價(jià)值的,我們其實(shí)遠(yuǎn)遠(yuǎn)沒有開發(fā)完傻機(jī)器的潛力。所以設(shè)計(jì)新的,可靠的,造福于人的傻機(jī)器,應(yīng)該是我創(chuàng)業(yè)的目標(biāo)。當(dāng)然我這里所謂的“機(jī)器”,包括了硬件和軟件,甚至可以包括云計(jì)算,大數(shù)據(jù)等內(nèi)容。
只舉一個(gè)例子,有些 AI 公司想研制“機(jī)器傭人”,可以自動(dòng)打掃衛(wèi)生做家務(wù)。我覺得這問題幾乎不可能解決,還不如直接請(qǐng)真正智能的——阿姨來幫忙。我可以做一個(gè)阿姨服務(wù)平臺(tái),方便需要服務(wù)的家庭和阿姨進(jìn)行牽線搭橋。給阿姨配備更好的工具,通信,日程,支付設(shè)施,讓她工作不累收錢又方便。另外給家庭提供關(guān)于阿姨工作的反饋信息,讓家庭也省心放心,那豈不是兩全其美?哪里需要什么智能機(jī)器人,難度又高,又貴又不好用。顯然這樣的阿姨服務(wù)平臺(tái),結(jié)合真正的人的智能,輕而易舉就可以讓那些機(jī)器傭人公司死在萌芽之中。
當(dāng)然我可能不會(huì)真去做個(gè)阿姨服務(wù)平臺(tái),只是舉個(gè)例子,說明許許多多對(duì)人有用的傻機(jī)器,還在等著我們?nèi)グl(fā)明。這些機(jī)器設(shè)計(jì)起來雖然需要靈機(jī)一動(dòng),然而實(shí)現(xiàn)起來難度卻不高,給人帶來便利,經(jīng)濟(jì)上見效也快。這些東西不對(duì)人的工作造成競(jìng)爭(zhēng),反而可能制造更多的就業(yè)機(jī)會(huì)。利用人的智慧,加上機(jī)器的蠻力,讓人們又省力又能掙錢,才是最合理的發(fā)展方向。
在之前一篇關(guān)于人工智能的文章里,我指出了“自動(dòng)編程”的不可能性。今天我想來談?wù)勔粋€(gè)相關(guān)的話題:智能合約的形式驗(yàn)證。有些人聲稱要實(shí)現(xiàn)基于“深度學(xué)習(xí)”的,自動(dòng)的智能合約形式驗(yàn)證(formal verification),用于確保合約的正確性。然而今天我要告訴你的是,跟自動(dòng)編程一樣,完全自動(dòng)的合約驗(yàn)證,也是不可能實(shí)現(xiàn)的。
隨著區(qū)塊鏈技術(shù)的愈演愈烈,很多人開始在以太坊的“智能合約語(yǔ)言”上做文章。其中一部分是搞 PL 的人,他們?cè)噲D對(duì) Solidity 之類語(yǔ)言寫的智能合約進(jìn)行形式驗(yàn)證,號(hào)稱要用嚴(yán)密的數(shù)理邏輯方法,自動(dòng)的驗(yàn)證智能合約的正確性。其中一種方法,是用“深度學(xué)習(xí)”,經(jīng)過訓(xùn)練,自動(dòng)生成 Hoare Logic 的“前條件”和“后條件”。
我好像已經(jīng)把你搞糊涂了…… 我們先來科普一下 Hoare Logic。
Hoare Logic是一種形式驗(yàn)證的方法,用于驗(yàn)證程序的正確性。它的做法是,先給代碼標(biāo)注一些“前條件”和“后條件”(pre-condition 和 post-condition),然后就可以進(jìn)行邏輯推理,驗(yàn)證代碼的某些基本屬性,比如轉(zhuǎn)賬之后余額是正確的。
舉一個(gè)很簡(jiǎn)單的 Hoare Logic 例子:
{x=0}? x:=x+1{x>0}
它的意思是,如果開頭 x 等于 0,那么 x:=x+1 執(zhí)行之后,x 應(yīng)該大于 0。這里的前條件(pre-condition)是 x=0,后條件(post-condition)是 x > 0。如果 x 開頭是零,執(zhí)行x:=x+1之后,x 就會(huì)大于 0,所以這句代碼就驗(yàn)證通過了。
Hoare Logic 的系統(tǒng)把所有這些前后條件和代碼串接起來,經(jīng)過邏輯推導(dǎo)驗(yàn)證,就可以作出這樣的保證:在前條件滿足的情況下,執(zhí)行代碼之后,后條件一定是成立的。如果所有這些條件都滿足,系統(tǒng)就認(rèn)為這是“正確的程序”。注意這里的所謂“正確”,完全是由人來決定的,系統(tǒng)并不知道“正確”是什么意思。
Hoare Logic 對(duì)于程序的安全性,確實(shí)可以起到一定的效果,它已經(jīng)被應(yīng)用到了一些實(shí)際的項(xiàng)目。比如微軟 Windows 的驅(qū)動(dòng)程序代碼里面,有一種“安全標(biāo)注語(yǔ)言”,叫做 SAL,其實(shí)就是 Hoare Logic 的一個(gè)實(shí)現(xiàn)。然而前條件和后條件是什么,你必須自己給代碼加上標(biāo)注,否則系統(tǒng)就不能工作。
比如上面的例子,系統(tǒng)如何知道我想要“x>0”這個(gè)性質(zhì)呢?只有我自己把它寫出來。所以要使用 Hoare Logic,必須在代碼上標(biāo)注很多的 pre-condtion 和 post-condition。這些條件要如何寫,必須要深入理解程序語(yǔ)言和形式邏輯的原理。這個(gè)工作需要經(jīng)過嚴(yán)格訓(xùn)練的專家來完成,而且需要很多的時(shí)間。
所以即使有了 Hoare Logic,程序驗(yàn)證也不是輕松的事情。于是呢就有人乘火打劫,提出一個(gè)類似減肥藥的想法,聲稱他們要用“深度學(xué)習(xí)”,通過對(duì)已有標(biāo)注的代碼進(jìn)行學(xué)習(xí),最后讓機(jī)器自動(dòng)標(biāo)注這些前后條件。還在“空想”階段呢,卻已經(jīng)把“自動(dòng)標(biāo)注”作為自己的“優(yōu)勢(shì)”寫進(jìn)了白皮書:“我們的方法是自動(dòng)的,其他的項(xiàng)目都是手動(dòng)的……”
很可惜的是,“自動(dòng)標(biāo)注”其實(shí)跟“自動(dòng)編程”是一樣的空想。自動(dòng)編程的難點(diǎn)在于機(jī)器沒法知道你想要做什么。同理,自動(dòng)標(biāo)注的難點(diǎn)在于,機(jī)器沒法知道你想要代碼滿足什么樣的性質(zhì)(property)。
除非你告訴它,機(jī)器永遠(yuǎn)無法知道函數(shù)參數(shù)必須滿足什么樣的條件(前條件),它也無法知道函數(shù)出口應(yīng)該滿足什么樣的條件(后條件)。比如上面的那個(gè)例子,機(jī)器怎么知道你想要程序執(zhí)行之后 x 大于零呢?除非你告訴它,它是不可能知道的。
你也許會(huì)問,深度學(xué)習(xí)難道不能幫上忙嗎?想想吧…… 你可以給深度學(xué)習(xí)系統(tǒng)上千萬行已經(jīng)標(biāo)注前后條件的代碼。你可以把整個(gè) Windows 系統(tǒng),整個(gè) Linux 系統(tǒng),F(xiàn)ireFox 的代碼全都標(biāo)注好,再加上一些戰(zhàn)斗機(jī),宇宙飛船的代碼,輸入深度學(xué)習(xí)系統(tǒng)進(jìn)行“學(xué)習(xí)”?,F(xiàn)在請(qǐng)問系統(tǒng),我下面要寫一個(gè)新的函數(shù),你知道我想要做什么嗎?你知道我希望它滿足什么性質(zhì)嗎?你仍然不知道?。≈挥形易约翰胖溃核怯脕碜詣?dòng)給我的貓鏟屎的 :p
所以,利用深度學(xué)習(xí)自動(dòng)標(biāo)注 Hoare Logic 的前后條件,跟“自動(dòng)編程”一樣,是在試圖實(shí)現(xiàn)“讀心術(shù)”,那顯然是不可能的。作為資深的 PL 和形式驗(yàn)證專家,這些人應(yīng)該知道這是不可能自動(dòng)實(shí)現(xiàn)的。他們提出這樣的想法,并且把它作為相對(duì)于其他智能合約項(xiàng)目的優(yōu)勢(shì),當(dāng)然只是為了忽悠外行,為了發(fā)幣圈錢 ;)
如果真能用深度學(xué)習(xí)生成前后條件,從而完全自動(dòng)的驗(yàn)證程序的正確性,那么這種辦法應(yīng)該早就在形式驗(yàn)證領(lǐng)域炸鍋了。每一個(gè)形式驗(yàn)證專家都希望能夠完全自動(dòng)的證明程序的正確性,然而他們?cè)缇椭滥鞘遣豢赡艿摹?/p>
設(shè)計(jì)語(yǔ)言來告訴機(jī)器我們想要什么,什么叫做“正確”,這本身就是 PL 專家和形式驗(yàn)證專家的工作。設(shè)計(jì)出了語(yǔ)言,我們還得依靠?jī)?yōu)秀的程序員來寫這些代碼,告訴機(jī)器我們想要做什么。我們得依靠?jī)?yōu)秀的安全專家,給代碼加上前后條件標(biāo)注,告訴機(jī)器什么叫做“正確安全的代碼”…… 這一切都必須是人工完成的,無法靠機(jī)器自動(dòng)完成。
說到這些,我就為這些學(xué)者感到悲哀,想不鄙視他們都不行了 :p 很早的時(shí)候我就有這種感覺,總是有些 PL 人看到什么方向有錢就往什么方向上靠,拿一堆嚇人的術(shù)語(yǔ)來忽悠外行。管它一個(gè)外行設(shè)計(jì)的語(yǔ)言有多垃圾呢,我們幫它做形式驗(yàn)證工具,我們?yōu)樗鼘懢幾g器,寫虛擬機(jī),為它提出“形式化語(yǔ)義”(formal semantics)!給外行打下手,給母豬涂口紅,完全失去作為一個(gè)專家的責(zé)任感和尊嚴(yán)。
現(xiàn)在這種風(fēng)氣愈演愈烈,隨著比特幣和以太坊的熱門,他們開始在 Solidity 之類的語(yǔ)言和智能合約上做文章。新瓶子裝老酒,反反復(fù)復(fù)做同樣的事情。甚至完全失去職業(yè)道德,號(hào)稱要實(shí)現(xiàn)一些早就知道不可能的事情?,F(xiàn)在最熱門的兩個(gè)投資方向就是人工智能和區(qū)塊鏈,現(xiàn)在我用機(jī)器學(xué)習(xí)來驗(yàn)證區(qū)塊鏈智能合約的正確性,兩個(gè)熱點(diǎn)都占全了!;)
顯然,我也可以輕而易舉做出對(duì)智能合約進(jìn)行某種“驗(yàn)證”或者“靜態(tài)分析”的工具,然而我深刻的理解數(shù)理邏輯對(duì)于程序正確性的局限性。很多代碼沒法被證明為正確,但它們確實(shí)是正確的。很多代碼有 bug,卻沒有任何工具可以發(fā)現(xiàn)它們。這是一個(gè)不幸的事實(shí),就像無法實(shí)現(xiàn)永動(dòng)機(jī)一樣,沒有任何人能夠改變。
當(dāng)然,我并沒有排除對(duì)智能合約手動(dòng)加上 Hoare Logic 標(biāo)記這種做法的可行性,它是有一定價(jià)值的。我只是想提醒大家,這些標(biāo)記必須是人工來寫的,不可能自動(dòng)產(chǎn)生。另外,雖然工具可以有一定的輔助作用,但如果寫代碼的人自己不小心,是無法保證程序完全正確的。
如何保證智能合約的正確呢?這跟保證程序的正確性是一樣的問題。只有懂得如何寫出干凈簡(jiǎn)單的代碼,進(jìn)行嚴(yán)密的思考,才能寫出正確的智能合約。關(guān)于如何寫出干凈,簡(jiǎn)單,嚴(yán)密可靠的代碼,你可以參考我之前的一些文章。
做智能合約驗(yàn)證的工作也許能圈到錢,然而卻是非??菰锒鴽]有成就感的。為此我拒絕了好幾個(gè)有關(guān)區(qū)塊鏈的合作項(xiàng)目。雖然我對(duì)區(qū)塊鏈的其它一些想法(比如去中心化的共識(shí)機(jī)制)是感興趣的,我對(duì)智能合約的正確性驗(yàn)證一點(diǎn)都不看好。
實(shí)際上,我認(rèn)為智能合約這整個(gè)概念就不靠譜。比特幣和以太坊的系統(tǒng)里面,根本就不應(yīng)該,而且沒必要存在腳本語(yǔ)言。我認(rèn)為智能合約系統(tǒng)在當(dāng)前階段并不可行。
比特幣的解鎖腳本執(zhí)行方式,一開頭就有個(gè)低級(jí)錯(cuò)誤,導(dǎo)致 injection 安全漏洞。用戶可以寫出惡意代碼,導(dǎo)致節(jié)點(diǎn)的運(yùn)行時(shí)系統(tǒng)出錯(cuò)。我不可想象,在 2009 年仍然有人把兩段代碼以文本方式貼在一起,然后執(zhí)行。稍微有點(diǎn)經(jīng)驗(yàn)的黑客都知道這里很可能有可攻擊的點(diǎn)。
以太坊的 Solidity 語(yǔ)言一開頭就有低級(jí)錯(cuò)誤,導(dǎo)致價(jià)值五千萬美元的以太幣被盜。以太坊的智能合約系統(tǒng)消耗大量的計(jì)算資源,還導(dǎo)致了嚴(yán)重的性能問題??梢哉f比特幣和以太坊的作者都是 PL 外行,然而如果是內(nèi)行來做這些語(yǔ)言,難道就會(huì)更好嗎?我并不這么認(rèn)為。
如果換做是我設(shè)計(jì)了比特幣,我不會(huì)為它設(shè)計(jì)一種語(yǔ)言。讓用戶可以編程是很危險(xiǎn)的!不僅是因?yàn)闃O少的用戶能夠?qū)懗稣_而可靠的代碼,而且因?yàn)檎Z(yǔ)言系統(tǒng)的實(shí)現(xiàn)極少可以不出現(xiàn) bug。語(yǔ)言系統(tǒng)的設(shè)計(jì)錯(cuò)誤,會(huì)給黑客可乘之機(jī),寫出惡意腳本來進(jìn)行破壞。從來沒有任何語(yǔ)言和他們的編譯器,運(yùn)行時(shí)系統(tǒng)是一開頭就正確的,都需要很多年才能穩(wěn)定下來。另外一旦你讓系統(tǒng)來運(yùn)行這些語(yǔ)言的代碼,又會(huì)需要考慮性能的問題。這對(duì)于普通的語(yǔ)言問題不大,你不要用它來控制飛機(jī)就可以。然而電子貨幣系統(tǒng)的語(yǔ)言,幾乎不允許出現(xiàn)這方面的問題。
所以與其提心吊膽的設(shè)計(jì)這些智能合約語(yǔ)言,還不如干脆不要這種功能。
而且我們真的需要那些腳本的功能嗎?比特幣雖然有腳本語(yǔ)言,可是常用的腳本其實(shí)只有不超過 5 個(gè),直接 hard code 進(jìn)去就可以了。以太坊的白皮書雖然做了那么多的應(yīng)用展望,EVM 上出現(xiàn)過什么有價(jià)值的應(yīng)用嗎?我并不覺得我們需要這些智能合約。電子貨幣只要做好一件事,能被安全高效的當(dāng)成錢用,就已經(jīng)不錯(cuò)了。
美元,人民幣,黃金…… 它們有合約的功能嗎?沒有。為什么電子貨幣一定要捆綁這種功能呢?我覺得這是不夠模塊化的設(shè)計(jì)。電子貨幣就應(yīng)該像貨幣一樣,能夠?qū)崿F(xiàn)轉(zhuǎn)賬交換的簡(jiǎn)單功能就可以了。合約應(yīng)該是另外單獨(dú)的系統(tǒng),不應(yīng)該跟貨幣捆綁在一起。
那合約怎么辦呢?交給律師和會(huì)計(jì)去辦 :) 你有沒有想過,為什么世界上的法律系統(tǒng)不是程序控制自動(dòng)執(zhí)行的呢?為什么我們需要律師和法官,而不只是機(jī)器人?這不只是歷史遺留問題。需要理解法律的本質(zhì)屬性才會(huì)明白,完全不通過人來進(jìn)行的機(jī)械化執(zhí)法是不可行的。
奢望過多的功能其實(shí)是一種過度工程(over-engineering)?;ㄙM(fèi)精力去折騰智能合約系統(tǒng),將會(huì)大大的延緩電子貨幣真正被世界接受。實(shí)話說嘛,試用了多種電子貨幣之后,我發(fā)現(xiàn)它們的技術(shù)相當(dāng)有趣,但其實(shí)仍然處于玩具和試驗(yàn)階段,基本無法作為貨幣使用。絕大部分電子貨幣都在等著被淘汰。它們的發(fā)展方向存在著各種迷茫,很多人走向歧途,或者各種忽悠。