一九七一年九月,哈爾濱的秋天來得早。林星遙返校的時候,校園裡的楊樹已經開始落葉了。她背著帆布包走進校門,看到教學樓門口貼著一張告示——「計算機課開課通知,二年級全體學員必修。」旁邊還貼著一張課程表,計算機課排在每周三下午,兩節連堂。
李抗美已經在宿舍了。她從上鋪探下頭,手裡拿著一本油印的講義,封面印著「電子計算機原理」幾個字。「林星遙,你看到告示了嗎?計算機課!咱們要學計算機了!」「看到了。」「你懂計算機嗎?」「不懂。」林星遙說的是實話。她在書上看過關於計算機的隻言片語——龐大的機器,成千上萬的電子管,能進行複雜的科學計算。但具體怎麼用,她一無所知。
計算機課的教室在主樓一層,門口掛著一塊牌子——「計算機房」。上課那天,林星遙推門進去,看到教室前面放著一台比她想像中還龐大的機器。好幾個鐵皮柜子並排立著,上面閃爍著密密麻麻的指示燈,電線從柜子後面伸出來,像章魚的觸手一樣盤根錯節。嗡嗡聲充滿了整個房間,那是電子管工作時發出的熱量和震動,站在旁邊能感覺到一股熱浪撲面而來。
「這是電子計算機。」講台上站著一個三十多歲的男老師,戴著眼鏡,穿著軍裝,領口的風紀扣扣得一絲不苟。「它是我國自行研製的小型電子管計算機,運算速度每秒三萬次。從今天起,你們要學習用它進行科學計算。」
教室里響起一陣低低的驚嘆。三萬次,每秒。林星遙在心裡默念這個數字。她用算盤打一道複雜的乘法需要十幾秒,這台機器一秒鐘能算三萬次。她盯著那排鐵皮柜子,第一次真切地感受到,她正在接觸一種全新的工具。不是算盤,不是紙筆,是電子的、自動的、能把她從繁瑣的計算中解放出來的東西。
「第一節課,我們先學習紙帶穿孔。」老師從抽屜里拿出一卷黑色的紙帶和一台穿孔機,像一台小型的打字機,上面有十幾個按鍵,每個按鍵對應一個數字或字母。老師按下一個鍵,穿孔機在紙帶上打出一排小孔。「計算機不認識數字,不認識字母,只認識孔。有孔代表1,無孔代表0。你們要把程序和數據變成紙帶上的孔,計算機才能讀進去。」
【記住本站域名 台灣小說網體驗棒,t̑̈̑̈w̑̈̑̈k̑̈̑̈̑̈ȃ̈̑̈n̑̈̑̈.c̑̈̑̈ȏ̈̑̈m̑̈̑̈超貼心 】
林星遙接過一捲紙帶,把它裝進穿孔機。老師教她怎樣按數字鍵,紙帶上打出一排排整齊的小孔。她按了「1」,穿孔機「咔」一聲打出一個孔。按了「0」,沒打孔。她按了一串數字——1,2,3,4,5。紙帶上留下五組孔,每組對應一個數字。她停下來,看了看自己的作品,又看了看旁邊李抗美的。李抗美按得太快,打歪了,紙帶上的孔不在一條直線上。
「你這個歪了,機器讀不出來。」林星遙指了指。
李抗美低頭看了看,哀嚎了一聲,換了一卷新的,重新打。
計算機課的作業是用機器語言編寫一個簡單的計算程序。林星遙拿到講義,翻到指令表那一頁,上面列著幾十條指令——加法、減法、乘法、除法、轉移、條件跳轉。每條指令都是一個數字代碼,要寫在一張程序單上,然後手工編譯成機器碼,最後在穿孔機上打孔。她花了一個晚上,把程序單寫好了。一共十幾條指令,每條指令她都反覆檢查,確認操作碼和地址碼沒有寫錯。第二天,她拿著程序單去計算機房,在穿孔機上一條一條地打孔。打完以後,她把紙帶拿到讀帶機前,小心翼翼地把紙帶放進讀帶槽。
老師走過來,幫她啟動了讀帶程序。讀帶機發出「咔咔咔」的聲音,紙帶緩緩移動,光電頭讀取紙帶上的孔,轉換成電信號送入計算機。指示燈閃爍,機器嗡嗡響了幾秒,然後停了下來。輸出設備上列印出一行數字——正確結果。
「對了。」老師看了一眼輸出結果,在作業本上打了一個勾。
林星遙把那捲紙帶從讀帶機上取下來,卷好,用橡皮筋扎住。她把它放進書包里,心裡有一種很奇怪的感覺——這台機器,比她快,比她准,不會算錯,不會偷懶。但它沒有她聰明,它只能執行指令。指令是她寫的,程序是她設計的,算法是她想的。機器只是工具,而她,是工具的主人。
李抗美在機器上調試了一下午。她的紙帶讀進去,計算機輸出的結果是錯的。她來回檢查程序單,發現少寫了一條轉移指令,程序進入死循環。她補上那條指令,重新打孔,重新讀帶。這次對了。
「林星遙,你一次就對了?」「嗯。」「你怎麼做到的?」「檢查了三遍。」
計算機課的開設,讓林星遙看到了一個新的世界。那些複雜的空氣動力學方程,那些需要大量疊代的數值計算,那些用算盤算起來頭疼欲裂的工程問題——都可以交給計算機。她要學的不是怎麼按按鍵,是怎麼讓機器替她幹活。程序就是指令,指令就是語言,她要用這種語言告訴計算機:我要算什麼,怎麼算。
晚上,林星遙把那本《電腦程式設計》從圖書館借出來。書不厚,油印的,封面已經磨得發白了。她翻到第一章,從二進位開始看起。0和1,是計算機的語言。她想起孫老師教她俄語的時候說過,「每一種語言都是一扇窗戶」。俄語讓她看到了蘇聯的航空技術,英語讓她讀懂了美國的學術文獻。現在,計算機語言讓她看到了一扇新的窗戶——通向一個更快、更准、更高效的世界。
她把那些指令一條一條地背下來。加法指令,代碼01;減法指令,02;乘法指令,03;除法指令,04。每背一條,就在紙上默寫一遍,旁邊註明功能和使用方法。
李抗美看到她在背指令,說了一句:「林星遙,你把計算機課當成外語課上了?」
「差不多。都是語言。」
李抗美也拿起講義,跟著背了起來。
計算機房的機器只有一台,全校好多專業共用。上機時間要預約,每人每周只能輪到一次,每次不超過一小時。林星遙每次上機都捨不得離開,把時間用到最後一秒。她把要調試的程序先在紙上寫好,指令一條一條列清楚,數據一個個算準確。上機的時候只做兩件事——打孔、讀帶、看結果。
有一次,她寫了一個計算激波前後參數的程序。輸入來流馬赫數和激波角,程序自動算出激波後的馬赫數、壓力比、密度比、溫度比。她在紙上驗證了好幾組數據,結果完全正確。
大二的課程比大一多了好幾門。計算機課是其中之一,還有自動控制原理、飛彈制導系統、概率論與數理統計。林星遙的課表排得滿滿當當,從周一到周六,每天都有課。她每天早上六點起床,跑步,早讀,上課,午飯,下午上課,晚飯,晚自習。熄燈以後,躺在床上,把今天學的內容在腦子裡過一遍。
十月中旬,哈爾濱下了第一場雪。比去年早了一些。林星遙站在教學樓的走廊上,看著雪花從灰濛濛的天空飄下來。她把手伸出去,雪花落在手心裡,涼絲絲的,很快融化了。她把手縮回來,放進口袋裡,摸到那枚子彈殼。銅已經被她的體溫捂熱了。
下午沒課,她去圖書館。從書架上抽出一本新書——《數值計算方法》。翻開第一章,講插值與逼近。她看了幾頁,用計算機課上學的東西在腦子裡模擬了一下。如果把這個算法寫成程序,用計算機算,幾分鐘就能出結果。手算的話,可能要幾天。她把那本書借了出來,放在書包里。
晚上,她坐在宿舍的書桌前,把那本《數值計算方法》翻開。李抗美在上鋪看書,王秀蘭在洗腳,陳小梅在背外語單詞。四個人各做各的事,誰也不吵誰。暖氣管里的水流聲咕嚕咕嚕的,像遠方的河。她在河的這頭,家人在河的那頭。計算機也在河的那頭——不是距離的河,是時間的河。她正在渡河,從手工計算的時代,渡到電子計算的時代。
她拿起筆,在草稿紙上寫下一行指令——加法指令,代碼01。她想起小時候用算盤幫工廠算公差,噼里啪啦打了一個小時,手指都磨紅了。現在,同樣的計算,計算機只要幾秒鐘。但她知道,算盤教會她的耐心、細心、不厭其煩地驗算,計算機教不了她。那些東西還在,只是工具換了。
她把計算機課的講義從書包里拿出來,翻到最後一頁。上面寫著結課作業的要求——「編寫一個計算飛彈飛行彈道的程序,考慮空氣阻力、地球自轉等因素,輸出彈道軌跡。」她看著那行字,在心裡想了一下程序的框架。輸入參數:初速、發射角、質量、阻力係數。疊代計算:每一步計算氣動力、加速度、速度增量、位置增量,直到落地點。輸出:射程、最大高度、飛行時間。
很難。但她不怕。難的題,她已經解過很多了。
窗外,雪還在下。她把講義合上,放在枕頭底下。枕頭底下已經有很多東西了——孫老師的信、沈明月的畫、林星野的子彈殼。現在又多了一樣,電腦程式。那些0和1,那些指令和地址,那些算法和疊代,是她通往未來的階梯。
她躺下來,閉上眼睛。耳邊仿佛還響著讀帶機「咔咔咔」的聲音。紙帶上的小孔,像一排排星星,指引著她走向更遠的地方。