第2章 代碼的啟航
游戲開發(fā)化
2002年8月30日,南城的梧桐葉被曬得卷了邊,空氣里飄著老式電風(fēng)扇轉(zhuǎn)動時的嗡嗡聲。
科克蹲在自家樓下的花壇邊,手里捏著一張被汗水浸得發(fā)皺的紙——南城二中高一新生錄取通知書。
“科克!
吃飯了!”
三樓陽臺傳來母親方水蘭的聲音,帶著會計特有的精準(zhǔn)語調(diào),“再磨蹭黃花菜都涼了,下午還要去你表哥家呢。”
科克應(yīng)了一聲,把通知書小心翼翼地折成方塊塞進(jìn)褲兜。
布料***紙頁的觸感讓他想起初中畢業(yè)那天,**把同學(xué)錄塞進(jìn)他手里時的重量。
三個月的暑假像臺被按了快進(jìn)鍵的錄像機,拆解舊家電、和小區(qū)里的伙伴打街機、在新華書店蹭看《游戲雜志》,畫面一幀幀閃過,最后定格在這張印著“南城第二中學(xué)”字樣的紙上。
“爸呢?”
科克端著碗扒拉米飯,視線掃過餐桌對面的空位。
“還能在哪?”
方水蘭把一碟炒青菜推到他面前,“**那個脾氣,車間里的銑床出了點小毛病,非得盯著修好才肯回來?!?br>
她頓了頓,用筷子敲了敲科克的碗沿,“開學(xué)就是高中生了,別總想著搗鼓那些電線零件,聽說南城二中的升學(xué)率在全市都排得上號,你可得上點心。”
科克“嗯”了一聲,沒多說話。
他知道母親的心思,父親科研國在國營電子廠當(dāng)了半輩子技術(shù)員,從年輕時跟著老工程師畫圖紙,到現(xiàn)在升了車間主任,最大的遺憾就是沒考上重點大學(xué)。
母親在紡織廠做會計,每天對著賬本上的數(shù)字精打細(xì)算,更是把“讀書改變命運”掛在嘴邊。
吃完飯,科克騎著那輛除了鈴鐺不響哪兒都響的二手自行車,往表哥林振家趕。
林振是他姑姑的兒子,在省城讀大二,學(xué)的是計算機專業(yè)——這個詞在2002年的南城,還帶著點神秘的科技感。
林振家住在老城區(qū)的家屬院,紅磚樓的墻皮剝落了大半,樓道里堆著各家的雜物。
科克爬上三樓,敲了敲門,里面?zhèn)鱽礞I盤敲擊的噠噠聲。
“來了來了!”
林振拉開門,額前的碎發(fā)被汗水粘在皮膚上,T恤后背洇出一片深色,“喲,科克來了?
快進(jìn)來?!?br>
客廳里擺著一臺老式CRT顯示器,屏幕上跳動著綠色的字符,機箱嗡嗡作響,像只喘氣的鐵皮盒子。
“表哥,你這是在干嘛呢?”
科克湊過去看。
“寫作業(yè)呢,”林振揉了揉眼睛,指了指屏幕,“C語言編程題,老師要求用冒泡排序做個成績統(tǒng)計系統(tǒng)?!?br>
他順手從桌角扯過一張紙巾擦汗,“你錄取通知書拿到了?
南城二中不錯啊,我當(dāng)年差點就去那兒了?!?br>
“嗯,昨天剛收到的?!?br>
科克的目光被書架最上層的一本書吸引了。
那本書大概有兩塊磚頭厚,深藍(lán)色封面上印著燙金的書名——《基礎(chǔ)編程知識》,作者欄寫著“藍(lán)星編程協(xié)會”,書脊己經(jīng)被翻得有些磨損。
“對編程感興趣?”
林振順著他的視線看過去,笑了笑,“這書是我大一時買的,當(dāng)時覺得新鮮,翻了幾章就擱這兒了。
里面講的都是最基礎(chǔ)的東西,從二進(jìn)制原理講到循環(huán)語句,還有簡單的算法邏輯,就是太枯燥了,我這種學(xué)渣啃不動。”
科克踮起腳把書抽了下來,沉甸甸的分量壓得手腕微沉。
他翻開封面,扉頁上用鉛筆寫著幾行字,像是讀書筆記:“計算機只認(rèn)識0和1,所有的程序都是翻譯官——把人類的指令翻譯成機器能懂的語言。”
再往后翻,是密密麻麻的代碼示例,有的地方用紅筆標(biāo)注著“此處需注意變量類型轉(zhuǎn)換”,有的段落旁畫著簡易的流程圖。
“這書……”科克的指尖劃過印著“if-else語句”的頁面,心臟沒來由地跳快了幾拍。
他想起暑假在街機廳玩《拳皇97》時,總好奇那些角色是怎么動起來的,為什么搖桿推一下,屏幕上的人物就會出拳;想起拆解收音機時,電路板上的焊點像星星一樣排列,通電后就能傳出聲音。
原來這些背后,都藏著“程序”嗎?
“你要是喜歡,就拿去看吧?!?br>
林振看出他的心思,擺了擺手,“我反正也不看了,放著也是積灰。
這書雖然老,但基礎(chǔ)知識講得特別扎實,比我們課本還詳細(xì)?!?br>
“真的可以嗎?”
科克眼睛亮了起來,抬頭看向林振。
“當(dāng)然,”林振拍了拍他的肩膀,“不過提前說好,這玩意兒可比打游戲難多了。
你看這循環(huán)嵌套,繞來繞去的,我上次寫個九九乘法表都調(diào)試了半宿?!?br>
他指了指書里一段代碼:c++#include <stdio.h>int **in(){int i, j;for(i=1; i<=9; i++){for(j=1; j<=i; j++){printf("%d*%d=%d ", j, i, i*j);}printf(" ");}return 0;}“你看這段,外層循環(huán)控制行數(shù),內(nèi)層循環(huán)控制每行的列數(shù),‘ ’是制表符,用來對齊的?!?br>
林振簡單解釋了兩句,“說白了,編程就是用邏輯說話,你想讓電腦做什么,就得一步一步把規(guī)則講清楚,它可不會猜你的心思?!?br>
科克把書緊緊抱在懷里,像是捧著什么稀世珍寶。
“謝謝表哥!
我一定會好好看的!”
“客氣啥,”林振笑著揉了揉他的頭發(fā),“對了,這書里有一章講怎么在DOS系統(tǒng)下編譯程序,你要是看不懂,可以來問我。
不過我也就會點皮毛,真要學(xué)深了,還得靠你自己琢磨。”
那天下午,科克沒在表哥家多待。
他抱著書騎車回家,陽光透過梧桐樹葉的縫隙灑在書頁上,那些陌生的詞匯——變量、函數(shù)、數(shù)組、指針——仿佛變成了跳動的音符。
路過街機廳時,往常會忍不住進(jìn)去看兩眼的他,這次只是放慢了車速,很快又加快了蹬踏的頻率。
回到家,科克把書放進(jìn)自己房間的書桌抽屜里,小心翼翼地用舊報紙墊在下面。
他坐在椅子上,盯著抽屜看了半天,仿佛那里面藏著一個秘密通道。
晚飯時,方水蘭發(fā)現(xiàn)兒子有點不對勁。
“科克,今天怎么老走神?
是不是擔(dān)心高**課太難?”
“沒有,媽,”科克扒了口飯,“我就是在想,計算機是不是真的能像人腦一樣工作?!?br>
“你這孩子,一天到晚想些稀奇古怪的,”科研國放下筷子,拿起桌上的搪瓷杯喝了口水,“計算機就是機器,是人設(shè)計出來的工具。
我車間里的數(shù)控機床也帶電腦,輸入程序就能自動加工零件,但它能自己想出新的加工方法嗎?
不能?!?br>
他頓了頓,看著科克,“不過話說回來,現(xiàn)在學(xué)計算機是個好方向。
我聽說省城那邊,會編程的大學(xué)生沒畢業(yè)就被公司搶著要,工資比我這干了三十年的還高。”
科克沒說話,心里卻像被什么東西點燃了。
他想起《基礎(chǔ)編程知識》里的一句話:“代碼是構(gòu)建虛擬世界的磚塊,而想象力是建筑師的藍(lán)圖。”
夜深了,科克躺在床上,輾轉(zhuǎn)反側(cè)。
他起身走到書桌前,打開抽屜,借著窗外透進(jìn)來的月光,再次翻開那本書。
第一章節(jié)標(biāo)題是《從二進(jìn)制到十進(jìn)制》,里面畫著一個簡單的電路示意圖:兩個串聯(lián)的開關(guān)控制一盞燈,只有兩個開關(guān)都閉合時,燈才會亮——這就是“與邏輯”,也是計算機運算的基礎(chǔ)原理。
“原來這么簡單……”科克喃喃自語。
他突然想起初中物理課上學(xué)的串聯(lián)并聯(lián)電路,原來那些枯燥的電路圖,竟然和高深的計算機有著千絲萬縷的聯(lián)系。
他拿出筆記本和鉛筆,照著書上的樣子畫起了真值表:表格A開關(guān) *開關(guān) 燈開 開 亮開 關(guān) 滅關(guān) 開 滅關(guān) 關(guān) 滅“這就是‘與運算’,”他在筆記本上寫下,“只有兩個條件都滿足時,結(jié)果才為真?!?br>
寫完后,他又試著畫“或運算”的真值表,畫著畫著,嘴角忍不住向上揚。
窗外的蟬鳴漸漸稀疏,月光透過樹葉的縫隙,在書頁上投下斑駁的影子。
科克合上書,心里充滿了前所未有的期待。
他知道,從明天起,他的世界將變得不一樣。
南城二中的高一生活即將開始,但科克己經(jīng)隱約感覺到,他的課堂,或許不止在教室里。
科克蹲在自家樓下的花壇邊,手里捏著一張被汗水浸得發(fā)皺的紙——南城二中高一新生錄取通知書。
“科克!
吃飯了!”
三樓陽臺傳來母親方水蘭的聲音,帶著會計特有的精準(zhǔn)語調(diào),“再磨蹭黃花菜都涼了,下午還要去你表哥家呢。”
科克應(yīng)了一聲,把通知書小心翼翼地折成方塊塞進(jìn)褲兜。
布料***紙頁的觸感讓他想起初中畢業(yè)那天,**把同學(xué)錄塞進(jìn)他手里時的重量。
三個月的暑假像臺被按了快進(jìn)鍵的錄像機,拆解舊家電、和小區(qū)里的伙伴打街機、在新華書店蹭看《游戲雜志》,畫面一幀幀閃過,最后定格在這張印著“南城第二中學(xué)”字樣的紙上。
“爸呢?”
科克端著碗扒拉米飯,視線掃過餐桌對面的空位。
“還能在哪?”
方水蘭把一碟炒青菜推到他面前,“**那個脾氣,車間里的銑床出了點小毛病,非得盯著修好才肯回來?!?br>
她頓了頓,用筷子敲了敲科克的碗沿,“開學(xué)就是高中生了,別總想著搗鼓那些電線零件,聽說南城二中的升學(xué)率在全市都排得上號,你可得上點心。”
科克“嗯”了一聲,沒多說話。
他知道母親的心思,父親科研國在國營電子廠當(dāng)了半輩子技術(shù)員,從年輕時跟著老工程師畫圖紙,到現(xiàn)在升了車間主任,最大的遺憾就是沒考上重點大學(xué)。
母親在紡織廠做會計,每天對著賬本上的數(shù)字精打細(xì)算,更是把“讀書改變命運”掛在嘴邊。
吃完飯,科克騎著那輛除了鈴鐺不響哪兒都響的二手自行車,往表哥林振家趕。
林振是他姑姑的兒子,在省城讀大二,學(xué)的是計算機專業(yè)——這個詞在2002年的南城,還帶著點神秘的科技感。
林振家住在老城區(qū)的家屬院,紅磚樓的墻皮剝落了大半,樓道里堆著各家的雜物。
科克爬上三樓,敲了敲門,里面?zhèn)鱽礞I盤敲擊的噠噠聲。
“來了來了!”
林振拉開門,額前的碎發(fā)被汗水粘在皮膚上,T恤后背洇出一片深色,“喲,科克來了?
快進(jìn)來?!?br>
客廳里擺著一臺老式CRT顯示器,屏幕上跳動著綠色的字符,機箱嗡嗡作響,像只喘氣的鐵皮盒子。
“表哥,你這是在干嘛呢?”
科克湊過去看。
“寫作業(yè)呢,”林振揉了揉眼睛,指了指屏幕,“C語言編程題,老師要求用冒泡排序做個成績統(tǒng)計系統(tǒng)?!?br>
他順手從桌角扯過一張紙巾擦汗,“你錄取通知書拿到了?
南城二中不錯啊,我當(dāng)年差點就去那兒了?!?br>
“嗯,昨天剛收到的?!?br>
科克的目光被書架最上層的一本書吸引了。
那本書大概有兩塊磚頭厚,深藍(lán)色封面上印著燙金的書名——《基礎(chǔ)編程知識》,作者欄寫著“藍(lán)星編程協(xié)會”,書脊己經(jīng)被翻得有些磨損。
“對編程感興趣?”
林振順著他的視線看過去,笑了笑,“這書是我大一時買的,當(dāng)時覺得新鮮,翻了幾章就擱這兒了。
里面講的都是最基礎(chǔ)的東西,從二進(jìn)制原理講到循環(huán)語句,還有簡單的算法邏輯,就是太枯燥了,我這種學(xué)渣啃不動。”
科克踮起腳把書抽了下來,沉甸甸的分量壓得手腕微沉。
他翻開封面,扉頁上用鉛筆寫著幾行字,像是讀書筆記:“計算機只認(rèn)識0和1,所有的程序都是翻譯官——把人類的指令翻譯成機器能懂的語言。”
再往后翻,是密密麻麻的代碼示例,有的地方用紅筆標(biāo)注著“此處需注意變量類型轉(zhuǎn)換”,有的段落旁畫著簡易的流程圖。
“這書……”科克的指尖劃過印著“if-else語句”的頁面,心臟沒來由地跳快了幾拍。
他想起暑假在街機廳玩《拳皇97》時,總好奇那些角色是怎么動起來的,為什么搖桿推一下,屏幕上的人物就會出拳;想起拆解收音機時,電路板上的焊點像星星一樣排列,通電后就能傳出聲音。
原來這些背后,都藏著“程序”嗎?
“你要是喜歡,就拿去看吧?!?br>
林振看出他的心思,擺了擺手,“我反正也不看了,放著也是積灰。
這書雖然老,但基礎(chǔ)知識講得特別扎實,比我們課本還詳細(xì)?!?br>
“真的可以嗎?”
科克眼睛亮了起來,抬頭看向林振。
“當(dāng)然,”林振拍了拍他的肩膀,“不過提前說好,這玩意兒可比打游戲難多了。
你看這循環(huán)嵌套,繞來繞去的,我上次寫個九九乘法表都調(diào)試了半宿?!?br>
他指了指書里一段代碼:c++#include <stdio.h>int **in(){int i, j;for(i=1; i<=9; i++){for(j=1; j<=i; j++){printf("%d*%d=%d ", j, i, i*j);}printf(" ");}return 0;}“你看這段,外層循環(huán)控制行數(shù),內(nèi)層循環(huán)控制每行的列數(shù),‘ ’是制表符,用來對齊的?!?br>
林振簡單解釋了兩句,“說白了,編程就是用邏輯說話,你想讓電腦做什么,就得一步一步把規(guī)則講清楚,它可不會猜你的心思?!?br>
科克把書緊緊抱在懷里,像是捧著什么稀世珍寶。
“謝謝表哥!
我一定會好好看的!”
“客氣啥,”林振笑著揉了揉他的頭發(fā),“對了,這書里有一章講怎么在DOS系統(tǒng)下編譯程序,你要是看不懂,可以來問我。
不過我也就會點皮毛,真要學(xué)深了,還得靠你自己琢磨。”
那天下午,科克沒在表哥家多待。
他抱著書騎車回家,陽光透過梧桐樹葉的縫隙灑在書頁上,那些陌生的詞匯——變量、函數(shù)、數(shù)組、指針——仿佛變成了跳動的音符。
路過街機廳時,往常會忍不住進(jìn)去看兩眼的他,這次只是放慢了車速,很快又加快了蹬踏的頻率。
回到家,科克把書放進(jìn)自己房間的書桌抽屜里,小心翼翼地用舊報紙墊在下面。
他坐在椅子上,盯著抽屜看了半天,仿佛那里面藏著一個秘密通道。
晚飯時,方水蘭發(fā)現(xiàn)兒子有點不對勁。
“科克,今天怎么老走神?
是不是擔(dān)心高**課太難?”
“沒有,媽,”科克扒了口飯,“我就是在想,計算機是不是真的能像人腦一樣工作?!?br>
“你這孩子,一天到晚想些稀奇古怪的,”科研國放下筷子,拿起桌上的搪瓷杯喝了口水,“計算機就是機器,是人設(shè)計出來的工具。
我車間里的數(shù)控機床也帶電腦,輸入程序就能自動加工零件,但它能自己想出新的加工方法嗎?
不能?!?br>
他頓了頓,看著科克,“不過話說回來,現(xiàn)在學(xué)計算機是個好方向。
我聽說省城那邊,會編程的大學(xué)生沒畢業(yè)就被公司搶著要,工資比我這干了三十年的還高。”
科克沒說話,心里卻像被什么東西點燃了。
他想起《基礎(chǔ)編程知識》里的一句話:“代碼是構(gòu)建虛擬世界的磚塊,而想象力是建筑師的藍(lán)圖。”
夜深了,科克躺在床上,輾轉(zhuǎn)反側(cè)。
他起身走到書桌前,打開抽屜,借著窗外透進(jìn)來的月光,再次翻開那本書。
第一章節(jié)標(biāo)題是《從二進(jìn)制到十進(jìn)制》,里面畫著一個簡單的電路示意圖:兩個串聯(lián)的開關(guān)控制一盞燈,只有兩個開關(guān)都閉合時,燈才會亮——這就是“與邏輯”,也是計算機運算的基礎(chǔ)原理。
“原來這么簡單……”科克喃喃自語。
他突然想起初中物理課上學(xué)的串聯(lián)并聯(lián)電路,原來那些枯燥的電路圖,竟然和高深的計算機有著千絲萬縷的聯(lián)系。
他拿出筆記本和鉛筆,照著書上的樣子畫起了真值表:表格A開關(guān) *開關(guān) 燈開 開 亮開 關(guān) 滅關(guān) 開 滅關(guān) 關(guān) 滅“這就是‘與運算’,”他在筆記本上寫下,“只有兩個條件都滿足時,結(jié)果才為真?!?br>
寫完后,他又試著畫“或運算”的真值表,畫著畫著,嘴角忍不住向上揚。
窗外的蟬鳴漸漸稀疏,月光透過樹葉的縫隙,在書頁上投下斑駁的影子。
科克合上書,心里充滿了前所未有的期待。
他知道,從明天起,他的世界將變得不一樣。
南城二中的高一生活即將開始,但科克己經(jīng)隱約感覺到,他的課堂,或許不止在教室里。