“不對吧?”尤基皺著眉頭:“師父,好像不是這樣的。在棋牌類游戲里面…還有,還有駕駛里面,電腦比生物腦厲害多了。”
向山點了點頭:“沒錯,但是一個下棋厲害的計算機,也只能下棋。它永遠不會懂‘為什么要下棋’這件事,甚至不一定知道自己在“下棋”。如果它的造物主不做出指示,那么它一輩子也別想再去做第二件事。”
這應該是…是很久很久之前的事情了?向山覺得,這可能是自己出生之前就發生了的歷史。那個時候,有一位指揮家。他是一位21-三體綜合征患者——所謂的“先天愚型兒”。或許他僅僅是因為出生在音樂世家,所以將“模仿指揮動作”當成一種游戲,但他確實以“指揮者”的身份登上了舞臺。那么他的大腦之中是否存在“音樂”呢?
或許確實,這個可憐人心中確實知曉什么是音樂的吧。
但在“音樂”之外的事情,他就不怎么能夠理解了。
而計算機內孕育的智能,比這個更加極端。畢竟,即使是先天愚型兒,也知道餓了、渴了。身體不舒服會哭。但哪怕棋力足以碾壓棋圣的AI,也不會產生“我還需要電源”或者“我就是想要更多計算資源”的想法。
“實際上,計算機所能做的事情,從來沒有超出人腦的部分。紙筆運算…見鬼,你好像不知道什么是‘紙’。”向山搖了搖頭,隨手抄起一根鐵杄,在地上寫出q and p。
兩個值,1或0,TRUE或者FALSE。
二生三,三生萬物。
計算機的一切都是從這里出來的。
“我現在要教你的東西,叫做‘布爾運算’。”向山如此說道:“人類用一根鐵杄,就可以在地上完成布爾運算,從而模擬計算機的任何程序——不,這里應該反過來。計算機不過是代替了人的手,在地上寫布爾運算的式子。它們只不過是比人類手寫更快、更快。僅此而已。”
“這個運算的方式,誕生自偉大的喬治·布爾。在喬治·布爾之前,萊布尼茨和巴貝奇也在做同樣的事情——他們嘗試用機器進行計算。巴貝奇或許一度接近這個境界,但是終歸是沒有達到。而布爾和所有的前人都不一樣。就好像艾薩克·牛頓試圖在時間與空間的維度中描述物質運動的軌跡一樣,布爾在嘗試描述精神運動的軌跡。這是開天辟地的成就。當然,布爾算法和真正的人類思維的差距,就好像牛頓力學和真實世界的差距一樣。但是,這已經是起步了。”
“在布爾之后,人們意識到,齒輪與杠桿可以執行計算、神經網絡可以執行計算、不斷開合的電路可以執行計算,就算是一堆化學設備,也一樣可以執行計算——布爾算法,就將人類思維的一角,拆解成了機器可以理解的東西。”
人類用電路模擬神經網絡、執行布爾計算的歷史,甚至比馮諾依曼架構更早——早在1943年,神經生物學家沃倫·麥卡沃克和數學家沃爾特·皮茨就制造了第一個可以執行布爾計算的人工神經網絡。
而在布爾的時代之前,還有一個發明家,叫做約瑟夫·雅卡爾。他發明了一種全新的織布機。這種織布機可以用打孔的卡片操縱機器上的針線,編織經緯。相似的東西,歷史上獨立出現過很多次。這種“打孔卡片”甚至可以追溯到中國的東漢時期。
這就是圖靈機“打孔紙帶”的祖先,是只有若干個字節的、最原始的存儲器,是機器們最早的“記憶”。
而希爾伯特為了研究純粹數學而提出的計劃,催動了圖靈機的誕生。
最后,這些結果,最終匯聚到另一個叫做馮·諾依曼的人手中。
于此,人類歷史上前所未有的工具誕生了。人類的社會、生活乃至政治、軍事都為之改變。
“但是,工具總歸是工具。”向山如此告誡自己的弟子:“它的本質,仍舊是創造了幾千、幾萬條手臂,為你來執行布爾運算。計算機能夠做到的,你自己用布爾運算能夠做到的,只不過計算機更快——當然,這種‘快’已經達到了本質上的改變。”
“對于一般的使用者來說,你只需要將任務交給這‘若干的手臂’,就可以等待結果了。但這樣是練不成內功的。內功有成者,就等若是能最大限度發揮這無數臂膀的力量,甚至將意志傳遞到這些手之間。”
“所以,你必須從布爾運算開始學習。”
在內功的領域,數學是“道”,而布爾運算就是“一”。
道生一,一生二,二生三,三生萬物。
布爾算法本身不復雜,只是邏輯學的一些延伸。高中程度的數學差不多就夠學個入門了。
剩下的,就是大量練習了。
向山花了點時間,向尤基講述這些問題的精要所在,然后在腦子里直接編寫了一個習題冊,點對點傳輸到尤基的腦芯片里。
尤基離開房間的步伐非常沉重。
向山滿意的點了點頭。他心里有種感覺——這種事情他早就想做一次看看了。
不知道為什么,可能是過去的經歷對他造成的影響?
反正他還蠻高興的。
………………………………………
尤基終于做完了習題,回到了自己的房間。
然后他發現,房間里面的氣氛完全變了。
向山閉著眼睛,如同冥想一般對著那臺終端。終端的屏幕之上,無數的符號刷新一般出現又消失。更多的代碼覆蓋在代碼之上。
而與那終端相連的犬型義體,則在做著各種動作。
向山在參悟每一行代碼的意義,然后用自己的代碼替換原本的代碼。
他要嘗試掌握這種不曾見過的組件。
“尤基,習題已經做完了么。”向山依舊保持原本的姿勢:“你的腦部芯片是可以隨時取下的類型嗎?現在方不方便給我一片看看?”
尤基點了點頭:“可以是可以…”
他低下頭,后側的顱骨打開。隨后,一塊備用芯片彈了出來。
義體的驅動芯片永遠都有兩塊或以上。當其中一塊出了BUG崩潰之后,另一塊就會瞬間接管身體,同時,出BUG的那一塊就會快速Watchdog,重新啟用。
和向山那種一體式的顱骨有所不同。尤基這種現代式的人工顱骨開啟本來就很方便。
尤基將自己的備用芯片遞給向山:“師父,你這是干什么?”
“很快就弄好了。弄好了再說給你聽”向山搖了搖頭。最開始沒有注意到這一點,確實是他太大意了。這個時代,上位者對弱者的生殺予奪,比他想象中還有嚴重。他當初只是發現舒爾茨醫生請自己上網,所以就天真的斷定絕大多數賽博義體都沒有時刻連接網絡。
在收尤基為弟子的時候,他只想著避開了村里的監控路線。
但之前鎮長的話卻提醒了他。
不管社會是怎樣的,永遠不要小視暴政者對人的掠奪。
實際上,應該還存在一個普通人并不知道、或者根本無法使用的頻段。在這個非民用的頻段上,所有的義體都是連著網絡的——只是那些義體的使用者并不知道。
唯一值得慶幸的是,現在的那些“真正統治集團”,似乎人手不足,或者有其他客觀上的困難,沒有時時刻刻的監視著每一個人。
——嘖…過去應該還沒有這個嚴重。
——但是,這個極端狀態,我應該是設想過的。
“練武不練功,到頭一場空”。內功設計之初,就包含了對抗這種狀態的想法。
因此,在給自己恢復了些許內功之后,向山就給尤基搭建抵御外邪的力量,清除芯片之中的后門。
很快,向山就將芯片整個檢索了一遍。果然不出他所料,這個玩意里面,確實存在幾個他沒有見過的協議,指向了某些具備信號發射機能的端口。
這個端口是用短波通信,信號較為微弱,數據傳輸能力有限,估計也就只能上傳低質量的音頻或者圖像。
但這就意味著,統治者確實可以在任何時候,對任何個人進行窺探。
“很好,至少值得慶幸的是,這個時代并不存在軍隊和警察,領主自由裁量權太大…他們最多只能意識到,我可能是個俠客。”
向山很快就在尤基的芯片里面寫入了防火墻,使它拒絕那個特定端口的遠程訪問,并發送偽造的圖像。然后他抹去了另外幾個協議。
當然,在做這些事之前,他先做好了備份。
向山將芯片還給尤基,道:“自己試一試,有什么不對的地方跟我說。如果沒問題的話,等會再幫我一個忙。”
向山自己現在驅使義體,是靠鎮長贈送的那一枚廉價芯片。而那一枚驅動芯片里,同樣有可能存在后門。向山的人工顱骨不像尤基這樣可以自由開合。如果沒有特殊的工具,他就必須得靠別人幫忙,才能將插進去的芯片取出來。
這就相當于將自己的大腦暴露給其他人。向山必須有一個可以信任的助手,才敢做這種事。
另外,他也必須杜絕“進行到一半的時候,助手被人遠程腦控,手指一個哆嗦戳進自己腦子”的狀況。因此他才優先給尤基準備了“灌頂”。
尤基一面將自己的數學作業傳輸給向山檢查,一面按照向山的吩咐,跑跑跳跳,測試一下驅動芯片是否有BUG。
人類在很早的時候就學會了“不要追求沒有BUG的編程”這件事,只要程序能跑起來,存在BUG也無所謂。
高級語言按照“類型論”的分法,大致可以分為“類型不安全語言”“類型安全語言”與“強規范化語言”。強規范化語言倒是可以保證“不會出錯”,這類語言對于任何程序都能給出唯一結果并且停機,絕對不會陷入死循環。但也正因為強規范化語言舍棄了“循環”的概念,失去了圖靈完備,所以任何錯誤系統根本不予識別不準運行。
簡單來說,強規范化語言就是“程序跑起來就絕對不會出錯,里面但凡有一丟丟錯誤就跑不起來”的狀況。
而俠客們,則偏向于使用“類型不安全語言”。這種語言的使用者,日常就處于“我寫的代碼不能跑了?這是為什么?我寫的代碼能夠跑了?這是為什么?”的疑惑當中。這種語言很容易就產生“無法預料的錯誤”——這種“無法預料”可以說是數學本身注定的,在程序跑起來之前,就連編寫者本身也無法預測。
當然,這種“難以理解”,對敵人來說也是一樣的。
向山寧可麻煩一點,在寫任何程序之前都做好幾次測試,也要選擇“類型不安全語言”。
但向山的水平似乎真的還可以。尤基的驅動芯片依舊可以正常的駕馭義體。