第10章 第一個夥伴:阿坤

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

  七月一日,建黨節,縣城有慶祝活動。街道上掛起了紅色橫幅,廣場上在搭舞台,準備晚上的文藝演出。但科技街的網吧里,一切如常。煙霧、泡麵、鍵盤聲、遊戲音效,和外面的熱鬧是兩個世界。

  林浩走進「藍海」網吧時是下午三點。他穿著最簡單的白T恤、牛仔褲,帆布書包斜挎在肩上。收銀台還是那個黃毛,在打《傳奇》,看見他,抬了抬眼皮:「上次那個?37號還空著。」

  「我等個人。」林浩說。

  「哦。」黃毛沒再理他,繼續打遊戲,屏幕上的道士正在用毒咒殺怪。

  林浩找了個靠牆的位置站著,這裡能看見門口。他從書包里拿出一本《C++ Primer》——昨天剛從省城書店買的,2002年最新版,花了68元。他翻開,但沒看進去,只是做樣子。

  他在等阿坤。

  阿坤是「半夏」的真名,趙坤。昨天在QQ上,他們約了今天下午三點在「藍海」見面。林浩沒說怎麼認人,只說「你看到我就知道了」。阿坤問為什麼,林浩說:「因為這裡只有一個人會在這個時間看書。」

  現在,他站在這裡,手裡拿著書。窗外的陽光斜射進來,在水泥地上投出窗框的陰影。空氣里有灰塵在光柱里飛舞。

  三點零五分,門被推開了。

  進來的人很瘦,高,但背有點駝。穿一件洗得發白的灰色短袖襯衫,領子磨破了邊。褲子是校服褲,藍白條紋,膝蓋處磨得發白。腳上一雙舊球鞋,鞋頭開了膠。背著一個黑色雙肩包,包很舊,拉鏈壞了,用繩子綁著。

  頭髮很長,遮住了半邊眼睛。皮膚很白,是不見陽光的那種蒼白。下巴尖削,嘴唇抿得很緊。眼睛很大,但眼窩深陷,有黑眼圈,像很久沒睡好。

  他站在門口,眯著眼適應了一下室內的昏暗。然後目光掃過來,掃過收銀台,掃過打遊戲的少年,掃過煙霧繚繞的角落,最後停在林浩身上。

  他看見了那本書。

  他走過來,腳步很輕,幾乎沒聲音。走到林浩面前,停下,看了他幾秒,然後開口,聲音很輕,有點沙啞:

  「Horizon?」

  「是我。」林浩合上書,「阿坤?」

  「嗯。」

  兩人對視。阿坤的眼睛很亮,是那種專注的、銳利的亮。他盯著林浩看,目光里有審視,有疑惑,也有一絲好奇。他在打量這個在網上出題考他們、一個人做出《細胞吞噬》的「大佬」。

  林浩也在打量他。十九歲,但看起來更小,像個高中生。不,比高中生還憔悴。衣服不合身,袖口長出一截,肩膀處松松垮垮。手指細長,骨節分明,指甲剪得很短,很乾淨。右手食指和中指的第一節有繭,是長期敲鍵盤磨出來的。

  「找個地方說話?」林浩說。

  阿坤點點頭。

  他們沒在網吧里說話。林浩在前,阿坤在後,走出網吧。外面的陽光很刺眼,阿坤眯起眼,抬手擋了一下。

  「去哪?」他問。

  「找個安靜的地方。」林浩說,「跟我來。」

  他推起自行車,阿坤步行跟在旁邊。兩人沿著科技街往西走,過了兩個路口,拐進一條小巷。巷子很窄,兩側是老舊的紅磚房,牆根長著青苔。巷子盡頭有一棵老槐樹,樹下有幾塊水泥板,是附近老人下棋乘涼的地方。現在是下午,沒人。

  林浩把自行車支在牆邊。阿坤在水泥板上坐下,背包放在腿上,雙手抱著。

  「喝水嗎?」林浩從書包里拿出兩瓶礦泉水,遞過去一瓶。

  阿坤接過來,擰開,喝了一小口。他的喉結動了動,喝水的聲音很輕。

  「你從哪來?」林浩也在水泥板上坐下,和他隔著一米距離。

  「合肥。」阿坤說,「坐夜車來的,早上剛到。」

  合肥。中科大就在合肥。他果然是中科大的學生。

  「輟學了?」

  阿坤沉默了兩秒,點點頭:「上學期的事。」

  「為什麼?」

  「沒意思。」阿坤說,聲音很平淡,「老師教的我都會,不會的他們也不懂。考試、作業、論文……浪費時間。我想做自己的事。」

  「家裡同意嗎?」

  「不同意。」阿坤扯了扯嘴角,一個很淺的、幾乎看不出的笑,「我爸說要打斷我的腿。我媽哭了三天。我弟說我瘋了。」


  「那你還出來?」

  「在家也做不了事。他們整天念叨,鄰居指指點點。」阿坤看著手裡的水瓶,「我需要電腦,需要網,需要安靜。家裡沒有。」

  林浩沒說話。他能想像那個畫面:一個十九歲的少年,執意退學,家人反對,鄰居非議,他把自己關在房間裡,對著電腦,寫那些沒人理解的代碼。餓了吃泡麵,困了趴在桌上睡,一天說不了三句話。

  「你住哪?」林浩問。

  「車站旁邊的招待所,一天十五塊。」阿坤說,「錢快用完了。」

  「你哪來的錢?」

  「以前存的。做家教,寫小程序,攢了兩千。用了三個月,還剩三百。」

  三個月,兩千塊,在合肥生活。平均一天二十多塊,要吃飯,要住宿,要上網。很難。

  「你做的題我看了。」林浩換了個話題,「47行,SPH簡化版。怎麼想到的?」

  阿坤的眼睛亮了一下。那是說到他擅長領域時的光芒。

  「SPH標準算法在Flash上跑不動,粒子一多就卡。我簡化了核函數,只保留密度項和壓力項,粘性項用人工粘性代替。交互半徑固定,不用KD樹搜索鄰居,用均勻網格加速。時間積分用顯式歐拉,雖然精度低但快。」他說得很快,很流利,不再是剛才那種遲疑的語氣,「最後加了簡單的邊界處理,粒子出界就反彈。」

  「性能呢?」

  「100個粒子,24幀。200個粒子,15幀。夠用了。」

  「代碼風格很乾淨。」林浩說。

  「嗯,我喜歡乾淨。」阿坤說,「多餘的代碼就像噪音,干擾思考。」

  林浩點點頭。他懂這種感覺。好的代碼像詩,簡潔,準確,有力。

  「你為什麼出那道題?」阿坤突然問。

  「找能做事的人。」

  「找到了嗎?」

  「找到了三個。你是其中之一。」

  阿坤沉默了一會兒,看著樹影在地上搖晃。

  「Horizon工作室,」他說,「到底是做什麼的?」

  「現在做什麼不重要。」林浩說,「重要的是未來做什麼。」

  「未來做什麼?」

  「做別人做不到的事。」

  阿坤轉過頭,看著林浩。他的眼睛在樹蔭下很亮,像某種夜行動物的眼睛。

  「比如?」

  林浩沒回答。他從書包里拿出那本《C++ Primer》,翻開,裡面夾著一張紙。紙上是他手寫的一段代碼。

  「你看看這個。」他把紙遞給阿坤。

  阿坤接過,看了幾行,眉頭皺起來。

  「這是……什麼語言?」

  「C++,但又不太像。」林浩說。

  阿坤繼續看。他的眉頭越皺越緊,嘴唇抿成一條線。他看得很慢,很仔細,有時會停住,手指在紙上虛點,嘴裡無聲地念著什麼。

  那是一段關於並行計算的代碼。用到了C++11的線程庫、原子操作、無鎖數據結構。在2002年,C++98都還沒普及,C++11要等九年後才出現。這段代碼里的概念,對現在的程式設計師來說,是天書。

  阿坤看了整整五分鐘。然後他抬起頭,眼睛裡是一種林浩從未見過的神色——震驚,困惑,但更多的是狂熱。

  「這……這是誰寫的?」

  「我。」

  「不可能。」阿坤說,聲音很肯定,「這些語法,這些庫,我從來沒見過。這個『std::atomic』,這個『std::thread』,這個『lock-free queue』……現在的C++沒有這些。」

  「如果我說,這是未來的C++呢?」

  阿坤盯著他,像在看一個瘋子。

  「未來?」

  「嗯。十年後的C++。」

  沉默。只有風吹過樹葉的聲音,沙沙響。

  「你……」阿坤的聲音有點抖,「你怎麼知道?」

  林浩沒回答。他收起那張紙,從書包的夾層里,拿出那台黑色的手機。


  電量:0.7%。紅色警告標誌在閃爍。

  他按亮屏幕。在陽光下,屏幕有點暗,但還能看清。他點開一個文件——那是他用最後一點電量,從小藝的離線資料庫里導出的,一段真正的、2028年的代碼。關於分布式系統中一致性算法的實現,用了一種現在還沒有的程式語言。

  他把手機遞給阿坤。

  「看看這個。」

  阿坤接過手機。他的手在抖。他盯著屏幕,眼睛幾乎貼上去。他滑動,翻頁,手指在顫抖。

  他看了很久。久到林浩以為他要看完了,他突然抬起頭,眼睛血紅。

  「這……這是什麼?」

  「未來的代碼。」

  「從哪來的?」

  「我不能說。」林浩說,「但你相信我嗎?」

  阿坤沒說話。他低下頭,繼續看。他的呼吸變得急促,胸口起伏。他翻到某個地方,停住,手指懸在屏幕上,顫抖。

  然後他做了一件林浩沒想到的事。

  他跪下了。

  不是那種電視劇里的誇張下跪,是很自然的,像腿軟了一樣,噗通一聲,單膝跪在地上。手機還握在手裡,屏幕朝上,代碼在閃爍。

  「這……這是……」他的聲音哽咽了,「這是怎麼做到的?這個算法……這個架構……我……我想了三年,沒想明白……這裡,這裡用了一個我從來沒見過的數據結構……還有這個,這個並發模型……」

  他語無倫次。眼淚從他的眼眶裡湧出來,順著蒼白的臉頰流下。但他沒擦,只是盯著屏幕,像朝聖者看見了神跡。

  林浩靜靜地看著他。這個十九歲的少年,這個數學天才,這個被家人視為廢物、被社會拋棄的怪胎,此刻跪在地上,對著一段代碼流淚。

  他懂這種感覺。當年他第一次看到華為的鴻蒙架構時,也是這樣。不是嫉妒,不是自卑,是一種純粹的、對智慧的敬畏,對美的震撼。

  「起來。」林浩說。

  阿坤沒動。他還在看代碼,嘴裡喃喃自語,聲音很輕,很快,在說那些算法的細節,在說那些他看不懂但覺得驚艷的設計。

  「阿坤。」林浩加重了語氣。

  阿坤抬起頭,淚眼模糊地看著他。

  「你想學這個嗎?」林浩問。

  阿坤用力點頭,點得很重,像要把脖子點斷。

  「你想做這個嗎?」

  點頭。

  「那你願意跟我幹嗎?不是打工,是夥伴。我們一起,把這個未來,變成現在。」

  阿坤的嘴唇在顫抖。他想說什麼,但發不出聲音。他又低頭看了一眼手機,看了一眼那段代碼,然後抬起頭,看著林浩。

  「我……」他的聲音啞了,「我可以嗎?」

  「為什麼不可以?」

  「我只是個輟學生,我什麼都不會,我……」

  「你會。」林浩打斷他,「你能看懂這段代碼,能看出它的精妙,這就夠了。其他人,連看都看不懂。」

  阿坤的眼淚又流下來。這次他沒忍住,哭出聲來。是那種壓抑了很久的、崩潰的哭聲。他跪在地上,抱著手機,肩膀劇烈地抖動。

  林浩沒勸他,讓他哭。這個少年,背負了太多:家人的失望,旁人的嘲笑,自己的迷茫。他需要一場釋放。

  哭了大概五分鐘,阿坤慢慢平靜下來。他用袖子擦了擦臉,擦得臉上紅一道白一道。他站起來,腿有點軟,扶了一下樹。

  「手機……」他把手機遞給林浩,動作很小心,像在遞一件聖物。

  林浩接過,看了一眼電量:0.3%。他關掉屏幕,放回書包。

  「所以,」阿坤看著他,眼睛紅腫,但眼神很亮,「你真的是從未來來的?」

  「我不能說。」林浩說,「但你相信我嗎?」

  「信。」阿坤毫不猶豫,「我信。」

  「為什麼?」

  「因為那段代碼。」阿坤說,「那不是人能寫出來的。不是現在的人。那裡面……有未來的味道。」

  「未來的味道?」

  「嗯。」阿坤想了想,「簡潔,優雅,但又複雜,深邃。像……像看到了星空。現在的代碼,像地上的石頭,能看得到邊界。那段代碼,看不到邊界。」


  很詩意的描述。但林浩懂。

  「好。」林浩說,「那從現在開始,你就是Horizon的第一位正式成員。負責算法和核心架構。第一個項目是網吧遊戲更新系統,我需要你設計增量更新算法和壓縮傳輸方案。」

  「好。」阿坤說,聲音很穩。

  「你住的地方不行,太吵,也不安全。我幫你找個房子。」

  「我沒錢。」

  「工作室預付。從你未來的分成里扣。」

  阿坤沉默了一下:「分成……怎麼算?」

  「項目淨利潤的20%,按貢獻分配。你是核心,至少能拿5%。如果項目成功,一個月應該有三五千。如果失敗,一分沒有。敢賭嗎?」

  「賭。」阿坤說,「反正我也沒什麼可輸的。」

  很實在。

  「那走吧。」林浩推起自行車,「先帶你去看房子。」

  他們走出小巷,回到大街上。下午的陽光還是很烈,但阿坤沒再眯眼,他挺直了背,腳步很穩。

  林浩帶他去了一家房產中介。在縣城邊緣,租了一個一室一廳的老房子,月租兩百,押一付一。房子很舊,牆皮剝落,但安靜,有簡單的家具,床、桌子、椅子。窗戶朝南,下午有陽光。

  「電腦我明天給你弄一台。」林浩說,「今天你先收拾一下,買點生活用品。這是一千塊,預付工資。」

  他從書包里拿出一個信封,裡面是十張一百的。這是他昨天從郵局取的,連環畫稿費剩下的。

  阿坤接過信封,手指收緊。

  「謝謝。」他說,聲音很輕,但很重。

  「不用謝。這是你應得的。」林浩說,「明天早上九點,我來找你,開項目會。帶上腦子。」

  「嗯。」

  林浩走了。他騎上自行車,在夕陽里往回走。風吹在臉上,很舒服。

  他有了第一個夥伴。一個數學天才,一個代碼瘋子,一個和他一樣相信未來的人。

  雖然前路依然艱難,雖然電量只剩0.3%,雖然一切都還是未知。

  但他不孤單了。

  晚上回到家,父母在吃飯。母親做了紅燒魚,慶祝他「找到工作」——他是這麼跟父母說的,說有個公司看上他的技術,讓他遠程工作,預付了工資。

  父母將信將疑,但看到真金白銀,也就信了。

  「什麼公司啊?」父親問。

  「科技公司,做軟體的。」林浩說,「總部在北京,我這邊是分部。」

  「哦……那你要去北京嗎?」

  「暫時不用,在家辦公。」

  「那好,那好。」母親說,「在家好,媽能照顧你。」

  吃完飯,林浩回到房間。他打開電腦,登錄QQ。阿坤已經在線了,頭像亮著。

  他發消息:「房子怎麼樣?」

  阿坤:「很好,很安靜。我買了泡麵、火腿腸、礦泉水。夠吃一周。」

  林浩:「別光吃泡麵,對身體不好。」

  阿坤:「沒事,習慣了。」

  林浩想了想,打字:「明天開始,你跟我吃飯。我讓我媽多做一份,每天給你送。」

  那邊沉默了很久。然後發來一句:「不用麻煩。」

  「不麻煩。我媽喜歡做飯。」

  又沉默。然後:「謝謝。」

  「早點睡。明天九點。」

  「嗯。」

  林浩關掉QQ,打開文檔,開始寫項目的詳細設計。鍵盤聲在夜裡響起,嗒,嗒嗒,嗒。

  窗外的縣城漸漸安靜下來。遠處廣場的演出結束了,人群散去,路燈一盞盞熄滅。

  只有這個房間的燈還亮著。

  林浩寫著寫著,停下來,看了一眼抽屜。

  手機在那裡,電量0.3%。

  他想起阿坤跪在地上的樣子,想起他看代碼時的眼神。

  那是火種。他要做的,就是保護這火種,讓它燃燒,讓它燎原。

  他繼續寫。夜還很長,路也很長。

  但至少,有人同行了。

章節目錄