第347章 蒼蠅的極限

投票推薦 加入書籤 小說報錯

  棋院那邊的紅標頭檔案剛批下來第三天。

  白子良手裡的《發陽論》才翻了兩頁,桌上的座機就響了。

  不是平時那種掛著加密頻道的悠哉語音。

  是座機直撥。

  電話接通,蒼鷹的聲音傳過來。

  「出事了。」

  就三個字。

  白子良放下手裡的古譜,後背微微繃緊。

  能讓那個黑進關田家族內網都跟玩一樣的頂尖駭客用這種語氣說話,事情絕對不小。

  問題出在QGP平台的實時對弈模組上。

  1998年的中國網際網路,是一片神奇的土地。

  撥號上網是絕對的主流。

  56K的調變解調器,也就是俗稱的「貓」,理論峰值每秒7KB。

  注意,是理論。

  實際情況是,你撥上號之後,得先像聽交響樂一樣聽三十秒的「滋——嘎——滋滋滋」電子噪音。

  然後雙手合十,祈禱今天的電話線路別太擁堵,祈禱隔壁大媽別在這個時候拿起電話聽筒。

  在這種惡劣的生態環境下搞實時對弈,簡直是地獄難度。

  棋手每落一步棋,資料要先從客戶端出發。

  順著老舊的電話線,艱難地爬過電信局的交換機。

  一路上還得跟無數個正在下載圖片的網友搶奪那點可憐的頻寬。

  最後擠進伺服器,處理完,再原路跋涉回來。

  這一個來回,延遲高達3到5秒。

  五秒鐘。

  對普通網友來說,五秒鐘不算什麼,盯著螢幕上的沙漏發個呆就過去了。

  但對職業棋手來說,五秒鐘足以讓一盤嚴肅的對局變成一場荒誕的鬧劇。

  你落下一顆棋子,然後盯著螢幕發呆五秒,對面才慢吞吞地出現回應。

  再落一子,再等五秒。

  【寫到這裡我希望讀者記一下我們域名 TW 看書網解無聊,𝒔𝒉𝒖.𝒕𝒘超實用 】

  如果進入讀秒階段,這網速能直接把棋手逼瘋。

  蒼鷹手下那支三人開發團隊,已經連續加班七天了。

  他們像困獸一樣,嘗試了十二種最佳化方案。

  全部宣告失敗。

  最好的一次測試,延遲從4.2秒降到了3.8秒。

  零點四秒的偉大進步。

  對使用者端來說,毫無感知,依然卡得像幻燈片。

  核心程式設計師老陳扛不住了。

  這位清華計算機系98級畢業,蒼鷹花了三個月,連哄帶騙才從聯想研究院挖來的技術大牛。

  在第七天的凌晨四點,默默把一封辭呈放在了蒼鷹滿是菸灰的鍵盤上。

  辭呈寫得很簡短,字跡潦草。

  「技術瓶頸無法突破,不想浪費彼此時間。」

  沒有怨言,沒有牢騷。

  老陳是那種最可怕的辭職者。

  他不是因為錢少受了委屈要走,也不是在要挾老闆漲工資。

  他是真的從邏輯上判定,這條路走不通。

  蒼鷹在電話里把情況說完,沉默了兩秒。

  那兩秒鐘里,白子良只聽見沉重的呼吸聲。

  「老大,我撐不住了。」

  蒼鷹的聲音透著深深的疲憊。

  「不是體力的問題,是方向的問題。我不知道該往哪走了。」

  白子良聽著電話那頭傳來的機箱風扇嗡嗡聲,腦子裡飛速運轉。

  前世在華爾街高頻交易部門的記憶,像硬碟被啟用一樣嘩嘩翻頁。

  1998年。撥號上網。頻寬瓶頸。實時互動。

  這幾個片語合在一起,確實是個棘手的死結。

  但對掌握著未來二十年技術演進路線的人來說,絕不是無解。

  「別動。」白子良對著話筒說,「我今天到。」

  他掛了電話,轉身去找陸鳴遠請了三天假。

  理由很樸實:「回家看父親。」

  陸鳴遠批假批得很痛快,還特意叮囑了一句:「記得給你爸帶點杭州的龍井,新茶。」

  白子良應了一聲,轉身出了道場大門。

  龍井沒買。

  他揹著那個標誌性的奧特曼書包,直接去火車站買了一張去BJ的票。

  身價幾千萬美金的QGP絕對控股人,在綠皮火車上晃蕩了一路。

  蒼鷹的辦公室,在中關村西邊一條破敗小巷子的半地下室里。

  門口堆著兩輛鏽跡斑斑的二八大槓,還有一個不知道誰扔的舊紙箱,散發著詭異的霉味。

  台階上有一攤不明來源的水漬。

  白子良踩著水漬走下去,推開那扇掉了漆的鐵門。

  「吱呀——」

  門一開,撲面而來的是一股極具衝擊力的生化武器。

  混合著紅燒牛肉麵調料包、電路板輕微的焦糊味,以及三個成年男性高強度熬夜後的人體汗腺分泌物。

  這味道,辣眼睛。

  他差點本能地退回去。

  辦公室不大,三十來平米。

  擺了三張拼在一起的摺疊桌,上面堆滿了CRT顯示器、拆開的主機箱、像盤絲洞一樣散落的網線,還有數不清的泡麵桶。

  三台主機的散熱風扇同時瘋狂運轉。

  嗡嗡聲像一群不知疲倦的馬蜂,在腦袋周圍盤旋。

  牆角有一張搖搖欲墜的摺疊行軍床。

  被子揉成灰暗的一團,枕頭上還有一圈清晰的頭油印子。

  那是蒼鷹這七天的棲息地。

  白子良環顧四周,在心裡默默給這個創業環境打了個分。

  滿分十分的話,大概負二。

  蒼鷹坐在最裡面的角落,頂著兩個碩大的黑眼圈,頭髮像個鳥窩。

  整個人看起來像一隻被徹底掏空了的浣熊。

  旁邊的小張和老王也好不到哪去。

  一個趴在黏糊糊的鍵盤上半睡半醒。

  另一個正拿原子筆在草稿紙上神經質地畫著什麼。

  白子良走近一看,畫的是個棺材。

  程式設計師開始畫棺材,通常意味著專案已經進入了某種玄學求死階段。

  老陳站在靠門的角落裡,正往一個黑色的雙肩包里塞幾本厚重的技術書。

  白子良停下腳步,看著他。

  老陳抬起頭,布滿血絲的眼睛裡閃過意外。

  他見過白子良。

  在電視新聞上。

  那個在東京把日本天才下到當場吐血的八歲神童。

  但此刻,這個神童就真真切切地站在他面前。

  揹著一個略顯幼稚的奧特曼書包,校服袖口還沾了點綠皮火車上蹭的灰。

  抬著頭看他的角度,大概是四十五度。

  畫面有些滑稽,但老陳笑不出來。

  「你是老陳?」稚嫩的童音在地下室里響起。

  「嗯。」

  「要走了?」

  老陳拉上揹包拉煉的手停頓了一下。

  骨節有些發白。

  「……嗯。」

  白子良沒有開口勸他。

  沒有說什麼「再堅持一下」、「曙光就在前面」之類的職場廢話。

  畫大餅這種事,在一個清華畢業的頂尖工程師面前,毫無意義。

  工程師信的是嚴密的邏輯,不是廉價的雞湯。

  白子良看著他的眼睛,只問了一個問題。

  「老陳,如果這個平台建成了,全世界五千萬圍棋愛好者,都能坐在家裡,開啟電腦,跟九段高手下一盤沒有延遲的棋。」

  「你覺得這件事,值不值得再試一次?」

  地下室里的風扇聲忽然顯得很響。

  老陳看著眼前這個還沒自己腿高的孩子,張了張嘴,又閉上。

  他本來想說「技術上不可能」。

  但他突然意識到,眼前這個說話的人,兩個月前在東京,剛剛做到了一件全世界都說「不可能」的事情。

  三秒鐘。

  老陳的手,從揹包拉煉上慢慢鬆開了。

  揹包倒在旁邊的塑膠椅子上,發出一聲沉悶的聲響。

  蒼鷹在後面長長地吐了一口氣,彷佛把肺里的濁氣都排空了。

  老王放下了那支畫棺材的原子筆。

  小張從鍵盤上猛地抬起臉,左臉頰上還印著一排清晰的「ASDF」鍵帽痕跡,茫然地看著這邊。

  白子良從牆角拖了把紅色的塑膠凳子過來,大馬金刀地坐下。

  奧特曼書包隨手擱在腳邊。

  「行了。」他拍了拍桌子,「把你們試過的十二種方案,都拿給我看看。」

  蒼鷹趕緊遞過來一疊厚厚的列印紙。

  上面密密麻麻寫滿了技術方案的測試記錄。

  每一種方案的結尾,都用紅筆畫了一個刺眼的大叉。

  白子良接過來,翻了十分鐘。

  翻得很快,幾乎是一目十行,但每一頁的核心邏輯都看進去了。

  前世那些年在華爾街高頻交易部門裡,用真金白銀餵出來的技術直覺,像一根埋在地下的高壓光纜。

  此刻,被猛然接通。

  他放下那疊紙,抬頭看向蒼鷹和老陳。

  「你們一直在走彎路。」

  蒼鷹的黑眼圈猛地抖了一下。

  「哪條彎路?」

  「你們試圖透過不斷壓縮資料包來降低延遲。」

  白子良的手指在桌面上敲了敲。

  「方向沒錯,但在撥號時代,物理頻寬就是天花板。你把資料壓縮到只剩一個位元組也沒用。」

  「因為瓶頸根本不在資料量,在管道。」

  白子良伸出短小的食指,在面前渾濁的空氣中畫了一條線。

  「打個比方,你用一根極細的吸管喝珍珠奶茶。不管你花多大代價把珍珠壓成多小,吸管就那麼粗,該堵還是得堵。」

  老陳推了推鼻樑上厚重的眼鏡,眉頭緊鎖。

  「那怎麼辦?換粗吸管?全國的寬頻基礎設施,最快也要到2001年才開始普及。我們等不起。」

  蒼鷹在一旁接話,語氣里透著絕望。

  「除非伺服器能未卜先知,預知棋手下一步落在哪裡。提前把資料送過來。」

  他說這句話的時候,帶著一種深深的自嘲。

  像是在開一個極其不好笑的科幻玩笑。

  但白子良笑了。

  嘴角勾起一個很輕的弧度。

  「你說對了一半。」

  蒼鷹愣住了,像看外星人一樣看著他。

  老陳也愣住了。

  「不是預知棋手。」

  白子良站起身,走到靠牆的那塊小白板前。

  白板上還殘留著之前方案的潦草筆跡,各種複雜的公式和流程圖。

  他拿起板擦,用力一抹,露出大片乾淨的空白。

  然後拿起一根黑色的馬克筆。

  因為個子太矮,他只能在白板的下半部分寫字。

  「是預知棋盤。」

  馬克筆在白板上重重地點了一下,發出清脆的響聲。

  這四個字,像一道閃電,劈進了地下室渾濁的空氣里。

  「你說對了一半。」

  蒼鷹愣了。

  「不是預知棋手。」白子良站起來,走到靠牆的那塊小白板前。白板上還殘留著之前方案的潦草筆跡,他拿起板擦一抹,露出大片空白。

  然後拿起一根黑色馬克筆。

  因為個子矮,他只能在白板的下半部分寫字。

  「是預知棋盤。」

  白子良在白板上畫了一張架構圖。

  三個程式設計師和蒼鷹同時湊了過來,像四棵被磁鐵吸住的鐵釘。

  「核心思路是這樣的。」白子良一邊畫一邊說,馬克筆在白板上發出吱吱聲。

  「客戶端在棋手落子之前,預先計算當前局面下所有高機率的落點——比如排名前二十的候選位置。然後在後台靜默載入這二十個落點對應的棋盤狀態資料,快取在本地。」

  他畫了一個方框,標註「本地快取」。

  「棋手落子的瞬間,客戶端不需要去伺服器取資料。它直接從本地快取里呼叫對應的棋盤狀態,先渲染給使用者看——'你的棋子已經落下了'。然後在後台非同步跟伺服器校驗,確認資料一致性。」

  他在方框和伺服器之間畫了兩條線。一條實線標註「使用者感知」,一條虛線標註「後台校驗」。

  「這樣一來,使用者感知到的延遲從3到5秒——」

  他在白板上寫了一個數字。

  「0.3秒以內。」

  辦公室里安靜了。

  風扇還在轉,但好像連風扇都安靜了一點。

  蒼鷹盯著白板看了整整兩分鐘。

  他的眼珠沒有動。

  腦子在飛速轉。

  白子良畫的這張圖,從電腦科學的角度來說,核心概念叫做「預測性快取」加「樂觀更新」。


  後者需要一套完善的衝突解決機制來處理預測失誤的情況。

  這兩個概念單獨拿出來,在1998年的學術界都有零星的討論。

  但把它們結合在一起,應用到一個具體的產品場景中,形成一套完整的工程方案——

  蒼鷹在全球所有能訪問到的學術資料庫里,從來沒見過。

  他慢慢轉過頭。

  看著白子良。

  白子良還站在白板前,馬克筆的筆帽叼在嘴裡,一副八歲孩子寫完板書等老師打分的模樣。

  「這個概念……」蒼鷹的聲音比剛才低了半個調,「至少領先行業五年。」

  他的語氣不是讚嘆。

  是審視。

  「你從哪看來的?」

  白子良把筆帽從嘴裡拿出來,套回馬克筆上。

  動作很自然。

  「翻牆看了幾篇MIT的論文。」

  蒼鷹盯著他又看了三秒。

  然後移開了視線。

  「行。」他說,「我們試試。」


章節目錄