首頁(yè) 都市

我的青春不下線(xiàn)

第十九章 岳書(shū)記的難題

我的青春不下線(xiàn) 白衣渡 3384 2022-09-19 08:24:39

  經(jīng)過(guò)一段時(shí)間的修煉,孫一波的C語(yǔ)言編程能力大幅度提高,這也和他扎實(shí)的編程基礎(chǔ)息息相關(guān),就像習(xí)武之人有了底子之后,什么梅花掌、五行拳、無(wú)影腿等套路,都可以觸類(lèi)旁通。

  他深深地知道,編程序主要依仗強(qiáng)大的邏輯思維能力,碰到一道題,首先要把程序框架搭好,源頭是什么,目的是什么,一定要搞清楚,至于中間過(guò)程,那就是八仙過(guò)海,各顯神通了。

  隨著中南區(qū)軟件設(shè)計(jì)大賽日漸臨近,比賽規(guī)則也浮出水面,即兩小時(shí)內(nèi)用擅長(zhǎng)的編程語(yǔ)言解出難易程度不等的三道題,評(píng)委根據(jù)選手的完成時(shí)間和完成質(zhì)量進(jìn)行打分,得分高者獲勝。

  另外,大賽還規(guī)定每一名導(dǎo)師只能帶兩名學(xué)生參賽,這意味著岳書(shū)記麾下的三員大將(求勝、李佳浩和孫一波)之中,有一個(gè)人將面臨內(nèi)部淘汰。

  孫一波清醒地認(rèn)識(shí)到,“最強(qiáng)大腦”求勝的編程能力在自己和李佳浩之上,而自己的強(qiáng)項(xiàng)在于計(jì)算機(jī)應(yīng)用方面的綜合能力,包括網(wǎng)絡(luò)技術(shù)的綜合運(yùn)用,這和他平時(shí)在計(jì)算機(jī)各個(gè)領(lǐng)域的廣泛涉獵是分不開(kāi)的。

  所以,當(dāng)遇到單一的程序題,孫一波可能不占優(yōu)勢(shì),水平和李佳浩大抵相當(dāng),略遜于求勝。

  但如果碰到綜合能力題,比如需要用到網(wǎng)絡(luò)技術(shù)、計(jì)算機(jī)硬件技術(shù)和各項(xiàng)應(yīng)用軟件技術(shù),他有信心能在三人中勝出。

  孫一波擅長(zhǎng)的匯編語(yǔ)言恰是一切計(jì)算機(jī)語(yǔ)言之母,其重要性不言而喻。

  岳書(shū)記如同“中國(guó)好聲音”中的導(dǎo)師一樣,要在自己的學(xué)員中艱難做出抉擇,無(wú)論最終選了誰(shuí)和誰(shuí),必定是對(duì)第三人殘忍的傷害。

  為此,他很慎重,經(jīng)過(guò)深思熟慮,決定利用五一長(zhǎng)假的七天時(shí)間,給三人出一道考驗(yàn)計(jì)算機(jī)綜合水平的程序題,原則上要求獨(dú)立完成。

  岳書(shū)記也知道,在一周時(shí)間里,答題者或多或少,會(huì)借助一些外部力量,也會(huì)通過(guò)閱讀參考書(shū)和網(wǎng)上搜索資料來(lái)輔助答題。

  在布置題目的時(shí)候,岳書(shū)記并沒(méi)有明確指出該次測(cè)試結(jié)果就是三選二的唯一標(biāo)準(zhǔn),他怕給三人增添巨大壓力而影響其正常水平發(fā)揮。

  但三人還是明顯感受到,完成題目的質(zhì)量高低,將決定他們能否參加中南區(qū)的程序設(shè)計(jì)大賽。

  一九九九年有一款非常流行的RPG(角色扮演類(lèi))游戲,叫做《仙劍奇?zhèn)b傳》,里面的人物李逍遙、林月如和趙靈兒共同演繹了一段凄美的愛(ài)情故事,最贊的莫過(guò)于里面的背景音樂(lè),確實(shí)是游戲中的佳品。

  岳書(shū)記也知道這個(gè)游戲,他雖然年屆五十,有時(shí)候也玩玩游戲,計(jì)算機(jī)人的思維總是年輕化、超前化。

  他出題目的靈感就來(lái)源于《仙劍奇?zhèn)b傳》,即模擬開(kāi)發(fā)出《仙劍奇?zhèn)b傳》的核心程序。

  這個(gè)課題可以說(shuō)是相當(dāng)難,等同于一部幾萬(wàn)壯丁共同修筑長(zhǎng)城的巨作。

  游戲核心程序又叫游戲引擎,是貫穿整個(gè)游戲的靈魂,把所有的元素融合在一起,并在后臺(tái)指引各個(gè)元素同時(shí)、有序地工作,包括了劇情、關(guān)卡、美工、音樂(lè)、操作等各方面的控制。

  由十?dāng)?shù)人組成的項(xiàng)目組開(kāi)發(fā)這么一個(gè)游戲核心程序,尚且需要數(shù)以年計(jì)的時(shí)間,要讓三個(gè)人各自在七天時(shí)間完成如此巨大的工程,顯然是不可能完成的任務(wù)。

  可這道題確實(shí)是岳書(shū)記精心策劃的一道題,為什么這么說(shuō)呢?

  因?yàn)樗肋@道題不可能完成,只能夠無(wú)限接近。

  不能夠完成的題目就是好題目?!

  也未必。就像當(dāng)下最流行的《羊了個(gè)羊》游戲,有些關(guān)卡就是無(wú)解,程序員偷懶,設(shè)置了一系列隨機(jī)數(shù),牌的放置會(huì)產(chǎn)生死結(jié),而并不是程序故意刁難你。你讓程序員去玩,他也過(guò)不了關(guān)。

  同樣,微軟的程序員也會(huì)偷懶,《紙牌》游戲也有很多局無(wú)解。

  言歸正傳。

  但岳書(shū)記有他的判斷依據(jù),有他設(shè)置的底線(xiàn),即程序執(zhí)行后,能用鼠標(biāo)和鍵盤(pán)做到輸入輸出控制,能夠在電腦顯示器上顯示出人物的行蹤。

  也就是說(shuō),輸入輸出控制和顯示這兩項(xiàng)是基本評(píng)分項(xiàng),另外的元素則是錦上添花。

  能順利解答出這道題的人,需要極高的計(jì)算機(jī)綜合素質(zhì),不僅具有資料查閱和消化的能力,更要有設(shè)計(jì)程序框架的大局觀(guān)和精湛的編程水平。

  對(duì)三人而言,岳書(shū)記的這道程序題無(wú)疑是一塊難啃的骨頭,誰(shuí)都沒(méi)預(yù)料到是一道綜合能力要求如此之高的實(shí)際應(yīng)用題。

  三位計(jì)算機(jī)專(zhuān)業(yè)翹楚,已閉關(guān)修煉了很久,這一次終于要推開(kāi)山門(mén),面對(duì)險(xiǎn)惡的江湖,在實(shí)戰(zhàn)中決定優(yōu)勝劣汰。

  孫一波樂(lè)觀(guān)地認(rèn)為是岳書(shū)記給他開(kāi)了扇小窗,因?yàn)樗膮R編語(yǔ)言終于有了用武之地,能在實(shí)現(xiàn)軟件與硬件交互中得到良好的運(yùn)用。

  求勝向來(lái)對(duì)自己編程水平充滿(mǎn)信心,倒也和往日一般平靜。

  李佳浩有些坐立不安,他沒(méi)有碰到過(guò)這種類(lèi)型的題目,無(wú)從下手,認(rèn)為同一個(gè)戰(zhàn)壕里的兩位戰(zhàn)友都不是自己的炮灰,而自己,倒可能成為陪太子讀書(shū)那人。

  急于求成的李佳浩決定先使用一些旁門(mén)左道的手段,利用反編譯工具對(duì)《仙劍》的執(zhí)行程序進(jìn)行反編譯,這個(gè)工具對(duì)一些簡(jiǎn)單的執(zhí)行程序有作用,可以把執(zhí)行程序逆轉(zhuǎn)換成程序源代碼,但對(duì)于這些龐大的執(zhí)行程序,即使能逆轉(zhuǎn)換成源代碼,也是一本永遠(yuǎn)都看不懂的梵文字典。

  就象操作系統(tǒng)Linux,雖然公開(kāi)了源代碼,但總共有一千萬(wàn)行之多,普通人根本無(wú)法進(jìn)行解讀和修改,所以,這個(gè)辦法沒(méi)有用。

  一個(gè)善于編程的程序員,也很難去修改別人寫(xiě)的代碼行,他更愿意中規(guī)中矩地編寫(xiě)源代碼,實(shí)現(xiàn)目標(biāo)會(huì)更容易一些。

  求勝的編程基本功非常扎實(shí),同樣,他的程序構(gòu)架能力也很突出。

  他把主程序的各個(gè)功能分解成一個(gè)個(gè)模塊,對(duì)各個(gè)模塊進(jìn)行程序編寫(xiě)并封裝,這樣就可在主程序中直接調(diào)用各個(gè)模塊。

  三天下來(lái),他已經(jīng)完成了動(dòng)畫(huà)人物的前后左右控制和存儲(chǔ)進(jìn)度等兩個(gè)單元的程序編寫(xiě),共計(jì)兩千多行源代碼。

  相比其他兩位,孫一波顯得更為靈巧,他先從之前積累的源碼庫(kù)中找了一些類(lèi)似游戲的源碼,選擇可讀性比較強(qiáng)的,有釋義的源碼,并在此基礎(chǔ)上進(jìn)行修改,這個(gè)過(guò)程對(duì)程序員的理解能力要求非常高。

  還好,這些公開(kāi)代碼者確實(shí)具有大公無(wú)私精神,源代碼段后的中文注釋非常到位。

  孫一波通過(guò)對(duì)其理解,重新對(duì)資源進(jìn)行了整合,這樣一來(lái),程序修改就方便很多。

  三天下來(lái),孫一波完成了三個(gè)模塊的編寫(xiě)。

  兩天后,求勝和孫一波的程序都達(dá)到或接近岳書(shū)記心理底線(xiàn)的預(yù)期效果。

  沒(méi)有對(duì)比就沒(méi)有傷害,此時(shí)最心焦的是李佳浩,他的完成質(zhì)量明顯落后兩位師弟。

  病急亂投醫(yī),他沒(méi)有去找系里的計(jì)算機(jī)高手指點(diǎn)迷津,卻想到了他的女朋友,學(xué)數(shù)學(xué)的岳融,讓其從數(shù)學(xué)建模的角度幫他優(yōu)化一些算法。

  岳融欣然接受,能替男朋友分擔(dān)一些壓力,她覺(jué)得很幸福。

  她也知道,從數(shù)學(xué)的角度去化解這道綜合能力要求極高的程序題,無(wú)異于蚍蜉撼樹(shù),也許,對(duì)李佳浩而言,精神上的安慰比物質(zhì)上的幫助更重要。

  五一長(zhǎng)假期間,學(xué)生情侶們紛紛外出游玩,岳融一點(diǎn)也不在乎這個(gè),她不會(huì)給李佳浩添亂,寧可犧牲休息時(shí)間,也要換取李佳浩的學(xué)業(yè)成功。

  她一直認(rèn)為,陪伴在男朋友身邊是最長(zhǎng)情的告白。

  求勝這個(gè)“最強(qiáng)大腦”稱(chēng)號(hào)絕不是蓋的。

  他能夠在關(guān)鍵時(shí)刻靜下心來(lái),發(fā)動(dòng)所有的腦細(xì)胞專(zhuān)注于一樣事情,這是常人無(wú)法企及的高度。他的過(guò)人之處,不僅在于超高強(qiáng)度的腦力勞動(dòng),更在于與世隔絕、不食人間煙火的處世態(tài)度。

  除了吃飯、睡覺(jué)、上廁所,他的屁股如同強(qiáng)力膠般粘在椅子上,眼簾低垂,一幅沉思羅漢的模樣,讓人懷疑其已經(jīng)睡著時(shí),他的雙手突然抬起,飛快地在鍵盤(pán)上敲擊起來(lái),屏幕上頓現(xiàn)幾十行代碼,稱(chēng)得上是沙州大學(xué)IT界大神級(jí)人物,就像閱文的白金作者。

  像他這樣一位獨(dú)孤求敗、笑傲江湖的高手在解題時(shí),自然不需要幫手,只需要對(duì)手,如果沒(méi)有對(duì)手,只有靠“雙手互博”的自我進(jìn)化了。

  孫一波既沒(méi)有女朋友的陪伴分憂(yōu),也不能像求勝一樣不食人間煙火。

  兩三天之后,他的煩躁情緒就上來(lái)了,難以繼續(xù)高效率的腦力運(yùn)轉(zhuǎn),感到身心疲憊。

  屏幕上密密麻麻的代碼行,特別是大量繁瑣的中間程序式,冗長(zhǎng)而枯燥,令人眼花。

  但這些中間程序式不得不存在,他的主要作用是把游戲里的劇情代碼化,通常由假設(shè)判定組成。

  比方說(shuō),計(jì)算機(jī)語(yǔ)言和人的語(yǔ)言在所處不同環(huán)境里,表達(dá)方式不盡相同,計(jì)算機(jī)語(yǔ)言在計(jì)算數(shù)字和循環(huán)計(jì)數(shù)方面有著得天獨(dú)厚的優(yōu)勢(shì),當(dāng)人的思維認(rèn)為是一種重復(fù)計(jì)算的時(shí)候,對(duì)計(jì)算機(jī)來(lái)說(shuō)恰巧是一段簡(jiǎn)單的循環(huán)程序式。

  同樣,當(dāng)人在判別簡(jiǎn)單的劇情理念時(shí),可以在瞬間作出判斷,而轉(zhuǎn)化成計(jì)算機(jī)語(yǔ)言,卻是一段非常冗長(zhǎng)的代碼,因?yàn)闊o(wú)論選哪個(gè),都會(huì)產(chǎn)生不同的后果,沒(méi)有對(duì)錯(cuò)之分。

  而當(dāng)出現(xiàn)三選一或者四選一的時(shí)候,更是一堆數(shù)以倍計(jì)的程序代碼。

  孫一波不想耗費(fèi)過(guò)多的精力去處理這些中間程序,他認(rèn)為這些選擇性代碼行比純粹打字難不了多少,此時(shí)如果有人能幫他做這些繁雜的事,他將會(huì)事半功倍。

  偏偏六零二的室友們都很珍惜這個(gè)長(zhǎng)假,他們要不陪女友外出旅游,要不就回老家探親,沒(méi)人能夠幫助孫一波。班長(zhǎng)戴鳴雖身在學(xué)校,但每天外出參加社會(huì)活動(dòng)。

  孫一波認(rèn)為戴鳴以后會(huì)從政,現(xiàn)在所做的一切都是為以后的政治生涯做鋪墊,加砝碼。

  未來(lái)的政治家才不屑于做這些雞零狗碎的小事。

按 “鍵盤(pán)左鍵←” 返回上一章  按 “鍵盤(pán)右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書(shū)架
加入書(shū)架
書(shū)頁(yè)
返回書(shū)頁(yè)
指南