上個世紀 90 年代,對于信息類的學(xué)生來說,哪一門最難學(xué)?
大多數(shù)的答案可能是 C 語言或者是匯編。
為什么?
答案一:因為它是“機器語言”,非人類交流的語言,邏輯不通、語言不通,人機交流,談何容易?。
答案二:學(xué)習(xí)“機器語言”太“費力”,費財力、費人力。學(xué)習(xí) C 語言勞心傷神還在其次,關(guān)鍵是“僧多肉少”,唯一的機房,每次上機不超過 30 人,所以無論春夏秋冬,人氣最高的就是計算機系的機房。
如今回想起來當年的情景已經(jīng)歷歷在目:計算機的 CPU 是 286 的,操作系統(tǒng)是 DOS 的,上電之后是需要輸入指令才能進行操作的,所以擁有一張 C 語言的啟動盤,絕對是最亮的招牌之一。
C 語言,起初語法還簡單,但是越來越難學(xué):前腳剛剛把運算的邏輯理順,接下來數(shù)組、指針、結(jié)構(gòu)體,都來湊熱鬧,而且是混在一起使用,更是令人應(yīng)接不暇;最后當學(xué)到枚舉和遞歸的時候,才發(fā)現(xiàn)前面的簡直是小 case。在老師的嚴格要求下,在助教學(xué)長們的孜孜不倦指導(dǎo)下,戰(zhàn)戰(zhàn)兢兢地提交了機考試卷,當看到現(xiàn)場的考評成績是 80+的那一刻,如蒙大赦,如釋重負,暗自發(fā)誓:此生不再碰 C 語言半個指頭。
希望是美好的,現(xiàn)實是很殘酷的,F(xiàn)lag 是很邪性的,總是向著相反的方向發(fā)展。大四選擇畢業(yè)設(shè)計,80%的同學(xué)選擇了設(shè)計,而自己偏偏選擇了論文,選擇論文也就算了,偏偏選擇了一位沒有見過面、沒上過課的年輕博士做指導(dǎo)教師。
博士的研究課題很特別,分配到自己頭上的課題是一個基于神經(jīng)元網(wǎng)絡(luò)算法的某類化學(xué)反應(yīng)釜的數(shù)學(xué)模型的預(yù)測。拿到課題,如墜深淵:神經(jīng)元是什么鬼,連題目都沒讀懂,如何做畢業(yè)論文呢?但是木已成舟,反悔已經(jīng)來不及了。沒辦法,頂著大大的問號,在校期間泡圖書館、查資料,寒假在家里翻著英文字典,翻譯老師布置的假期作業(yè),所以在新學(xué)期開始的時候,總算讀懂了題目:不就是用 C 語言編一個程序,解一個一階的微分方程嗎?然后根據(jù)輸入變量的情況,調(diào)整相關(guān)的參數(shù),最終實現(xiàn)收斂的控制。
過程明確了,基礎(chǔ)算法明確了,編程也變得容易多了。但是時間久遠,編程只記得少許語法了,于是不得不遍歷了圖書館里的關(guān)于算法的書籍,重溫 C 語言,在同組同學(xué)的協(xié)助下,順利完成了基礎(chǔ)程序的編寫與調(diào)試,原以為會苦盡甘來,但殘酷的現(xiàn)實總是向著期望的方向反其道而行之,運算的結(jié)果總是發(fā)散的。
雖然可以在實驗室里暫時擁有屬于自己的計算機,雖然 286 已經(jīng)升級位 386,并且增加了 486 的協(xié)處理器,但是面對微分方程的運算和每次 100 組數(shù)據(jù)的處理,運算的時間是相當“可觀”的——每次半小時,半小時后發(fā)現(xiàn)數(shù)據(jù)的收斂性不好,再修改程序、修改參數(shù),繼續(xù)運算,周而復(fù)始。對于本科生,實驗室只開放半天,一個半天的時間,去掉修改程序和糾錯,能夠有多少“半個小時”進行“揮霍”呢?白天的時間不夠用,只好晚上加班,以至于被室友猜忌。
她們一邊云淡風(fēng)輕地繪制著圖紙,一邊“調(diào)笑”:“我們的付同學(xué)進入了白加黑的模式,難道是談戀愛了嗎?”
于是一臉嚴肅地回答:“是的,我在和我的論文談戀愛,我愛它,但是它不愛我。要不改天把它請到寢室來,大家開導(dǎo)一下?”
話音落地,笑聲一片,臉上的陰云散去。
夜不能寐:論文,想說愛你不容易。
我如此辛苦,為什么你給我的結(jié)果是錯誤的?發(fā)散的控制模型注定是失敗的!于是山窮水盡之時,導(dǎo)師指點迷津:如果確信自己的數(shù)據(jù)沒有錯誤,那么不妨換個角度思考一下,你見到的未必是正確的,印刷出來的公式也可能是錯誤的,追根溯源,找到數(shù)學(xué)模型最原始的出處。
導(dǎo)師指路,立即踐行。
于是冒雨跑到圖書館,再最安靜的一間資料室里,管理員遞過來一本比字典還厚的硬皮書,迅速地翻到數(shù)學(xué)模型的那一頁,只掃了一眼,便如釋重負,在原始的模型中,有一個變量的符號是相反的。
怎么辦?回實驗室來不及了,所以這里安靜,手工計算吧。好在是帶著記事本的,好在記事本里有程序的流程圖,沒有計算機,那么自己當一次計算機吧,選擇典型的參數(shù),帶入數(shù)據(jù),然后手工解微分方程,獲取一組結(jié)果。結(jié)果出來了,不用描圖也可以看到,那是一組收斂的數(shù)據(jù)。興奮之余,踩著積水,一路狂奔到實驗室。半小時之后,100 組數(shù)據(jù)在顯示器上呈現(xiàn)出期待依舊的收斂曲線。
難關(guān)攻破了,解決了自己的難題,也解決了同伴的難題,為了快速完成剩余的任務(wù),所以分工合作,坦誠相待,用現(xiàn)在的流行語來說,就是資源共享。資源共享的結(jié)果,事實再次證明:Two heads are better than one。
合作的結(jié)果也是 better:
4000 多行 C 語言代碼,構(gòu)建起來的數(shù)學(xué)模型幾乎是完美的,兩個人的論文成績都是良好;
4000 多行 C 語言代碼,構(gòu)建的過程是痛苦的,但是經(jīng)過痛苦的磨練,C 語言的編程通關(guān)了,以至于 4 年之后,僅憑 C 語言的優(yōu)勢,便敲開了上市公司研發(fā)部的大門。
與非網(wǎng)原創(chuàng)內(nèi)容,未經(jīng)允許,不得轉(zhuǎn)載!