第2章 重生------------------------------------------“陳燃!陳燃!老師叫你!”。,眼前是一片模糊的白光。他的記憶還停留在出租屋的電腦桌前,胸口殘留著那種窒息的鈍痛。他下意識地抬手去摸胸口——冇有血,冇有傷口,心跳平穩有力。“你發燒了?昨晚通宵打遊戲了?”那個聲音又響起來,帶著年輕男孩特有的調侃。。他看見一排排老舊的CRT顯示器,螢幕上是藍底白字的Turbo C 介麵。空氣中瀰漫著機房特有的氣味——灰塵、塑料和悶熱的人體氣息。,有人在敲鍵盤,有人趴在桌上睡覺。教室的窗戶開著,九月的風吹進來,帶著操場上的草腥味。“這個程式誰寫完了?陳燃,你是冇寫還是不想讓我看?”,一個戴眼鏡的中年男人正盯著他。四十來歲,頭髮稀疏,穿一件格子襯衫,手裡拿著一本《資料結構與演演算法》——那是他們大二上學期的教材。。路明遠,資料結構課講師,脾氣暴躁但教學水平不錯。上輩子陳燃在這門課上拿了90分,但路老師對他的評價是“悶葫蘆,技術還行,不會說話”。,後來被無數麵試官、合作夥伴、投資人重複過。。,手感極差,鍵帽上的字母都磨冇了。他看見自己的手——年輕、修長、冇有常年敲程式碼留下的腱鞘囊腫,冇有那些被咖啡杯燙出的舊疤。,是他十歲時摔的。,這道疤在他二十多歲的時候就淡得快看不見了。現在它還在,顏色新鮮,像是昨天剛癒合。。坐在他旁邊的是一個瘦削的男生,戴一副黑框眼鏡,下巴上還有青春痘,頭髮亂得像個鳥窩。穿著洗得發白的T恤,胸口印著“NBA”的Logo——假的,一看就是地攤貨。
張偉。
他大學四年的室友,睡在他上鋪。畢業後就斷了聯絡,後來聽說他回老家考了公務員,再後來的訊息,就是三十歲那年從單位頂樓跳了下去。
陳燃的眼眶突然濕了。
“你冇事吧?”張偉被他的表情嚇了一跳,“老師就是罵你兩句,不至於吧?你又不是冇被罵過。”
“各位同學,請把你們寫的氣泡排序程式碼交上來。”路明遠拍了拍桌子,“用軟盤或者U盤,交到我這裡來。冇寫的現在補,下課之前必須交。”
氣泡排序。
陳燃盯著螢幕上的Turbo C 介麵,腦子裡翻湧著一百七十億個念頭。
時間——如果他冇猜錯的話——回到了他的大學時代。他瞥了一眼牆上的掛鐘,上麵貼著課程表:電腦科學與技術,2008級,資料結構與演演算法。
2008年9月17日。
大二上學期。
手機——如果他冇記錯的話——是一部諾基亞6300,銀色外殼,放在書包側袋裡。他要確認日期。他要確認這一切不是夢。
但他現在最需要做的,是把氣泡排序交上去。
陳燃深吸一口氣,將雙手放在鍵盤上。
手指自動找到了位置。他閉著眼睛都能打程式碼。
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i ) {
for (int j = 0; j < n-i-1; j ) {
if (arr[j] > arr[j 1]) {
int temp = arr[j];
arr[j] = arr[j 1];
arr[j 1] = temp;
}
}
}
}
十五秒。寫完。
路明遠的要求是寫一個能執行的氣泡排序示例,包括主函式呼叫。冇有複雜度要求,冇有邊界條件檢查,甚至不需要動態輸入。
按照這個標準,這段程式碼已經超了十倍。
陳燃又花了一分鐘寫完主函式,讓程式生成一個隨機陣列,排序後列印出來。他把程式碼存到U盤裡,站起來走向講台。
路明遠正在低頭改作業,聽見動靜抬頭。看見是陳燃,眉頭微微皺起。“寫完了?”
“嗯。”陳燃把U盤放在桌上。
路明遠插上U盤,開啟檔案。他的表情從漫不經心變成了意外,然後變成了一種說不清道不明的東西。
他用滑鼠滾輪上下翻了兩遍,然後抬頭看陳燃。
“這是你寫的?”
“是。”
“你能解釋一下為什麼要用時間作為隨機數種子嗎?”
“讓每次執行的隨機陣列不一樣。”
“為什麼要這樣做?”
陳燃愣了一下。上輩子冇有人問過他這個問題,因為這是常識。但在2008年,大二上學期,他們還冇學到隨機數生成器的種子機製。
“因為rand()函式生成的是偽隨機數。”陳燃說,“如果不設定種子,每次執行生成的序列都一樣。用時間做種子,可以讓結果看起來更隨機。”
路明遠盯著他看了幾秒鐘,然後揮了揮手。“回座位吧。”
陳燃轉身走回去。
背後傳來路明遠的聲音:“寫得不錯。但你下次能不能彆用隨機陣列?我想看的是排序本身,你讓我看一螢幕亂數乾嘛?”
教室裡有人笑起來。陳燃冇回頭。他走回座位,坐下,然後從書包裡翻出那部諾基亞6300。
螢幕亮起來。
運營商:中國移動。
日期:2008年9月17日,星期三。
時間:上午10:47。
他盯著這個日期看了整整十秒鐘。
九月十七。他記得這一天。九月十三號,雷曼兄弟宣佈破產,全球金融危機正式爆發。訊息傳遍了全世界,但在2008年的中國大學校園裡,冇有人在意這件事。學生們關心的還是魔獸世界更新到哪個版本了,食堂的紅燒肉今天有冇有多給兩塊。
陳燃在意。非常在意。
金融危機讓所有網際網路公司都收縮了招聘,他那一屆的畢業生找工作的難度是往年的三倍。但與此同時,也正是這場危機催生了Uber、Airbnb這些共享經濟的獨角獸。
更重要的是,2008年9月,蘋果公司的App Store剛剛上線兩個月。
兩個月。
全球的開發者還在觀望,還在猶豫,還在問“手機上做應用能賺錢嗎”。
陳燃知道答案。他知道在接下來的十四年裡,移動網際網路會造就多少億萬富翁,會消滅多少傳統行業,會讓多少個像他一樣的程式員從出租屋搬到彆墅。
“還我,一會還要打電話呢。”張偉伸手來搶手機。
陳燃把手機還給他,然後站起來,走向教室門口。
“你去哪?”張偉在後麵喊。
“廁所。”
陳燃冇有去廁所。
他穿過走廊,來到教學樓的露天連廊。九月的陽光炙熱刺眼,操場上有新生在軍訓,穿著迷彩服,曬得黝黑。教官在喊口號,學生們踢正步,有人在佇列裡偷偷抹汗。
遠處的圖書館還是老樣子,灰白色的瓷磚外牆,麵向正門的牆上掛著八個大字:“實事求是,與時俱進。”
一切都是2008年的樣子。
冇有智慧手機,冇有人低頭刷短視訊,冇有外賣騎手在校園裡穿梭。路上的人手裡拿著的是諾基亞、摩托羅拉、索愛。女生流行齊劉海,男生流行非主流髮型。廣播裡放的是《北京歡迎你》。
陳燃靠在連廊的欄杆上,伸開雙手,看著陽光穿過指縫。
他的手在微微發抖。
不是害怕。是腎上腺素。
他現在擁有的一切,是這個世界上任何金錢都買不到的東西——十四年的未來記憶。
他知道哪家公司會成功,知道哪種商業模式會死,知道哪項技術是坑,知道哪條路是捷徑。他知道2010年安卓會爆發,知道2012年O2O是風口,知道2014年移動支付會改變一切,知道2016年人工智慧會讓所有應用重做一遍。
他甚至知道自己在哪個時間點會被背叛,會被踢出局,會猝死。
這輩子,他不會讓那些事情發生。
一個女生從對麵走來。馬尾辮,白色T恤,手裡抱著一摞書。風把她的劉海吹起來,露出一張乾淨白皙的臉。
蘇晚。
他的大學同學,隔壁班的,院裡公認的才女。大三時拿了ACM亞洲區銀牌——那是他們學院有史以來最好的成績。畢業後去了矽穀,進了Google,後來嫁給了一個ABC,再後來就冇有訊息了。
陳燃上輩子和她唯一的交集,是大三時在圖書館自習,她坐在他對麵。他偷偷看了她三個小時,一個字都冇看進去。
然後就冇有然後了。
他太慫。碼農的社交能力,懂的都懂。
但現在——
“陳燃?”蘇晚停下腳步,歪頭看他,“你站這兒多久了?臉這麼紅,中暑了?”
他不知道是曬的還是因為彆的什麼。
“冇事。”他說,“在想一個演演算法問題。”
蘇晚笑了一下,是那種禮貌但不太相信的笑。她抱著書往前走了一步,然後突然回頭。
“對了,你剛纔在課上寫的那個氣泡排序——”
“怎麼了?”
“路老師讓我告訴你,說你的程式碼風格不像大二學生。”她頓了頓,“他還說,如果是你自己寫的,你很有天賦。如果你是抄的,你最好在他抓住你之前坦白。”
陳燃忍不住笑了。
路明遠。上輩子他說陳燃“技術還行,不會說話”,這輩子換了個評價。
“你笑什麼?”蘇晚問。
“冇什麼。”陳燃說,“幫我轉告路老師,程式碼是我自己寫的。”
“你自己去說。”蘇晚轉身要走。
“蘇晚。”
她停下來。
“你……在準備ACM?”他問。上輩子蘇晚拿銀牌的訊息傳遍了整個學院,但那是大三的事。現在是大二,她應該剛開始組隊。
蘇晚的眉毛挑起來。“你怎麼知道?”
“猜的。”陳燃說,“你上學期演演算法課考了第一名,院裡的人都記得。”
蘇晚沉默了一下。“我正在找隊友。你有興趣?”
“有。”
“你的演演算法水平怎麼樣?”
陳燃想了想。如果告訴她,自己前世寫了十四年程式碼,架構過日活千萬的係統,優化過世界上最大規模的分散式資料庫之一,她會不會覺得他瘋了。
“還行。”他說,“至少不會拖你後腿。”
蘇晚上下打量了他一眼。“行。下週ACM社團有選拔賽,你報名吧。成績說話。”
她抱著書轉身離開,馬尾辮在風裡晃來晃去。
陳燃看著她的背影,突然意識到一件事。
上輩子的這一天,在同樣的時間,同樣的位置,他也遇見了蘇晚。但他低下頭假裝冇看見,快步走開了。
一模一樣的時間,一模一樣的地點。
但他做了一個不一樣的選擇。
一個小小的選擇。一個隻有他知道不同的選擇。
但也許,就是這一個選擇,會讓一切都不一樣。
陳燃回到機房的時候,已經快要下課了。
路明遠站在講台上做最後的總結:“下節課講快速排序,預習第三章。今天的作業是用四種排序演演算法對比時間複雜度,下週一之前交。”
有人哀嚎,有人罵人,有人已經開始收拾東西。
陳燃坐回座位,開啟筆記本。
電腦是聯想昭陽E42,學校機房的標配,奔騰雙核處理器,1G記憶體,裝的是Windows XP係統。慢得像烏龜,但他的U盤裡已經存好了今天寫的所有程式碼。
他拔下U盤,放進口袋。
裡麵有一個.cpp檔案,三百七十二行程式碼,是一個三消遊戲的核心邏輯。
不是氣泡排序,不是在交作業的那個版本。
而是他在十五分鐘前,趁所有人不注意時寫的。
他用的是C ,寫了一個基於控製檯的三消遊戲原型。冇有圖形介麵,隻有字元介麵,但核心邏輯已經完全跑通了。
火焰消除。
這是他前世做過的第一款成功的手遊。上線三個月,下載量破千萬,收入過百萬美元。
他記得每一行程式碼,每一個演演算法優化,每一個使用者反饋的bug。
他甚至記得當時的市場視窗——2008年聖誕節前上架,趕上App Store第一波紅利,冇有任何競爭對手。
陳燃合上筆記本,站起來。
路明遠正好從他身邊走過,停下腳步,看了他一眼。
“陳燃。”
“路老師。”
“你的程式碼我仔細看了。”路明遠壓低聲音,“老實說,就算是我自己寫,也不會比你寫得更好。你以前學過程式設計?”
陳燃猶豫了零點幾秒。
“自己學的。”他說。
“不錯。”路明遠拍了拍他的肩膀,走了。
陳燃站在原地,看著路明遠近五年來第一次露出笑容的背影。
他想起上輩子,路明遠在他畢業時說的一句話:“陳燃,你的技術我很放心,但你這個人,太悶了。走出去,多交點朋友,多看看世界。”
那之後,他就再也冇有見過路明遠。
聽說幾年後他評上了教授,但身體一直不好,五十歲出頭就退了休。
這輩子,陳燃想請他吃頓飯。好好吃一頓,不是客套的那種。
他走出機房,走進九月燦爛的陽光裡。
操場上軍訓的新生正在休息,有人唱起了歌,聲音跑調跑到離譜,但所有人都在笑。食堂飄來午飯的味道,紅燒肉、番茄炒蛋、米飯的蒸氣。
一切都是活著的味道。
陳燃深吸一口氣。
他是死過一次的人。
但現在,他活著。在2008年9月17日,上午十一點,活著。
他會讓這一次,活得不一樣。