萬物演算法

幸好在解決天氣問題時,程式設計師們已經找到了解決問題的辦法。他們結合了「天氣演算法」和「超市演算法」,獲得了一個新的、能夠在一個動態系統內主動給出操作建議、從而影響遠期結果的演算法,並毫無創意地將這個演算法命名為:「競選演算法」。

「競選演算法」的上線,除了導致大批競選經理失業外(沒人真正喜歡競選經理),還將競選徹底變成了金錢遊戲。那些能夠租用大型計算中心執行演算法的競選者天然具有優勢。而當所有參選者都希望租用計算中心以獲得演算法支援時,計算中心的租用價格自然水漲船高。於是,很多參選者從演算法中獲得的第一條建議,是放棄尋求演算法的支援,把省下來的錢拿去投放廣告。這一建議的明智之處立刻獲得了所有人的理解和認同,進一步加強了參選者對政治演算法的渴求。

於是,全球所有的網際網路使用者都不得不面臨這樣的窘境——只要有大型競選開鑼,用於支援整個網際網路運轉的計算資源,就立刻被「競選演算法」剝去一大半;而剩下的計算資源經過垃圾郵件、黃色影片、線上遊戲和購物網站的盤剝後,只剩下「指甲蓋」大小的一丁點。幸好絕大部分網際網路使用者只需要影片、遊戲和購物,而剩下的那些,沒有網際網路也能生存。

第一位依賴演算法競選的政客登上總統寶座後立刻推動立法,禁止在政治領域內應用演算法。這一立法雖然獲得了政客們的一致支援,卻只導致了政治演算法的完全地下化。由於資源配置的不公開和不透明,在大選期間租用計算中心的價格如火山爆發般攀升。網際網路能夠使用的計算資源被進一步擠佔,差點連那「指甲蓋」大小的一丁點都不復存在。這讓習慣了利用冗餘資源跑一點自己的小專案的程式設計師們不得不反思這樣一個問題:演算法的存在,到底意味著什麼?

一部分程式設計師不再相信「演算法是中立的」,因為演算法是一個威力巨大的武器,什麼人會需要威力巨大的武器呢?當然是邪惡之人。為邪惡之人鑄造武器的人,當然也是邪惡的。

另一部分程式設計師認為,前者純粹是漫畫看多了。糧食公司利用演算法操縱糧食市場,農民也可以藉助演算法對抗天氣災害;政客們憑藉演算法登上權力頂峰,選民也可以使用演算法釐清競選黑幕。程式設計師無法決定什麼人、為什麼使用演算法,但可以決定用演算法來解決什麼問題。

還有一部分程式設計師發出無情的冷笑——你們真的能決定用演算法來解決什麼問題?

這讓所有人都陷入了沉默。

說實話,成形的演算法已經不是任何人都能理解的了。它像一個由無數根小鋼棒構成的黑箱子,上面有一個小孔,從小孔裡丟下一個小鋼球,小鋼球一邊朝下墜落,一邊撞擊小鋼棒並改變方向,直至最後落進「大霧」「鱒魚雨」「在泡椒鳳爪邊上放啤酒」「針對亞裔移民投放一個與教育有關的廣告」之類的小格子裡。程式設計師們只是設計了這樣的一個黑箱子,然後讓演算法自己去調整鋼棒。他們也不知道每一根鋼棒的具體位置,更不知道演算法是如何調整這些鋼棒的。從引入機器學習讓計算機自行生成演算法那一刻起,程式設計師們就已經無法理解自己的造物了。

但它畢竟是我們創造出來的。不是嗎?

最後,一小部分程式設計師跳了出來。他們認為開發一個演算法的真正意義,不在於這個演算法的執行機制到底是什麼,也不在於要用這個演算法去解決什麼問題,而在於這個演算法本身所具有的可能性。這種對可能性的探索,才是這個專案的真正意義所在。

就好像一座山在那裡,難道因為你不知道為什麼會有這座山、不知道登上山頂會怎樣,所以就不去攀登了嗎?

雖然程式設計師們可能是世界上離登山最遠的一群人。但這個觀點卻得到了全體程式設計師的一致贊同。在一片歡呼中,程式設計師們提出了一個宏偉的計劃,要開發一個囊括世間萬物的演算法,將物質的流轉、人的取捨都放入這個巨大的黑箱。他們不再糾結於一個不可知的黑箱是不是對程式設計師尊嚴的挑戰,也不再考慮是否會有人使用這個黑箱為非作歹。他們認為,只要把這個黑箱做出來,剩下的事都可以之後再考慮。

這個「萬物演算法」的專案,開始通過郵件組、部落格、論壇在程式設計師間傳播,並逐漸變得清晰起來。

當然,這個演算法不會去預測原子在碰撞五十次之後的位置之類的問題。一方面,現有計算資源的總和都不足以解答這個問題,另一方面程式設計師需要的是在不可預測之上的可以預測,是基於混沌系統之上的規則和結論。

這個專案不考慮從微觀態反推宏觀態,而是直接向宏觀世界尋求規律。

就連那些從未接觸機器學習的程式設計師,也被這個計劃所吸引。拋開職業分野(是的,程式設計師也是有職業分野的)和知識鴻溝(是的,程式設計師並不是都會修電腦),他們單純地對這個專案感到好奇,並寄望於通過這個專案為自己的職業生涯賦予意義。他們相信萬物演算法的開發成功,意味著程式設計師們終於能坦然面對身邊紛繁蕪雜的現實世界,畢竟除了他們,沒有誰能將整個世界握在手中,而又不為人所知。

為了推進這個計劃,程式設計師開始攫取一切能弄到手的運算資源。他們以各種名義向全球所有計算中心提交運算任務。在所有色情網站和垃圾頁游上植入木馬以獲得觀看者的本地計算資源。他們甚至違背原則傳送了大量的垃圾郵件,將許多貿然點開連結的使用者的電腦變成併網計算用的肉雞。只是,在是否擠佔線上遊戲伺服器的問題上,他們發生了爭論。部分程式設計師以退出整個計劃作為威脅,才為《魔獸世界》留下了百分之五十的運算效能。

於是,幾乎所有的計算機——埋在水底的超級計算機、咖啡館裡的蘋果筆記本、亞馬遜的線上伺服器,甚至連高中生們課間偷偷開啟的手機,都被捲進這一宏大而近乎無止境的運算中。它們耗費的電能和額外製造的熱量,不但讓一些執行不良的電網走向崩潰,更讓天氣演算法的遠期預測結果出現了接近百分之十五的偏差。

計算機執行速度變慢、總是斷網、影片瘋狂卡頓之類的抱怨充斥了整個網際網路。而程式設計師對此緘默不語,或者以此為由要求建造更多更大的計算中心。一部分從程式設計師轉行的產品經理注意到前同行們的瘋狂舉動,然而在他們得出結論或發出警報前,就已經被滅了口。當然不是物理毀滅,只是他們登入的網站被斷開連線,發出郵件被告知收件人不存在,打電話總不在服務區。他們在絕望中拍下的「瘋狂程式設計師想要統治整個世界」的警告影片,倒是被幾名程式設計師傳到了網上,作為人畜無害的程式設計師屢次被迫害的證明供人一笑。

計算似乎永無休止,害得全球網際網路在崩潰邊緣擦擦蹭蹭數次。當程式設計師們開始懷疑自己是否不小心按下了那個毀滅世界的按鈕時——演算法生成了。程式設計師們按照其不同的宗教信仰,對這一刻進行了描述,從「helloworld」到「越過長城,走向世界」,從「我是alpha,也是omega」到「天上地下,唯我獨尊」,從「armageddon」到「42」,不一而足。然而直到這時,他們才發現了一個尷尬的問題:

我們要用這個演算法幹什麼?

當然,它能回答一些諸如「明年的總統會是誰」「南美的雨林會不會在五十年內消失」「未來十年東京的房價走勢如何」之類的問題,但程式設計師們其實並不真正關心這些問題。

經過了爭辯、論戰、不記名投票、刷票、加入防作弊機制並重新投票後,第一個提交演算法的問題是:「什麼是最好的程式語言?」

演算法回答:「請定義好。」

在長久的爭論後,程式設計師們放棄了這個問題。

第二個提交給演算法的問題是:「現存的哪些程式語言會在二十年內被拋棄?」

演算法回答:「全部。」

程式設計師們再次沉默。部分程式設計師建議投票決定是否幹掉這個演算法,而一些不死心的程式設計師則提出了第三個問題:

「現存什麼程式語言壽命最長?」

演算法回答:「彙編。」

於是,大多數程式設計師都投票贊成幹掉這個演算法。只有少數經常跟底層打交道的覺得這個演算法仍有存在價值。

第四個問題是:「為什麼組合語言壽命最長?」

這個問題,顯而易見,是那些不使用匯編語言的程式設計師提出的。

演算法回答:「教學。」

在其他程式設計師的哧哧笑聲中,組合語言的使用者們也投下了贊成票。

於是,這個誕生沒多久的萬物演算法,在回答了四個問題後就被關閉了,其核心程式碼被壓縮成一個大小為32.17t的壓縮包,所有被擠佔的計算資源都還給了計算中心、個人電腦、遊戲機和手機。網際網路鬆了口氣,又開始苟延殘喘。

程式設計師們又開始響應需求——絕大部分是一些被重複過無數次的、沒有挑戰的需求,例如電腦藍色畫面了、網路連不上了、這個頁面要改一下、新的蘋果手機無法適配了之類的。一小部分是嘗試解決某個特殊領域內已經被解決過但解決方案並沒有被放到網上的問題。只有很小一部分,是關於效率的提升、資源的最最佳化配置,關於生產力的解放。

程式設計師們坦然接受了這一切。

他們從未想過要解開那個壓縮包。

他們曾登上世界之巔,所以能心平氣和地走在馬路上。

本文為《銀河邊緣》中文版專發篇目。


作者「《銀河邊緣》編輯部」的其他小說

銀河邊緣·X生物》《銀河邊緣·多面AI》《銀河邊緣·冰凍未來》《銀河邊緣·天象祭司》《銀河邊緣·奇境