第十二章 程序哲學(xué)
「老媽說跟老爹你談戀愛的時(shí)候,常被你鋼鐵直男的本性氣得咬牙切齒。一開始我還有點(diǎn)不相信,畢竟認(rèn)識(shí)你快十年了,感覺和老媽描述的不怎么符合。
現(xiàn)在看來老媽應(yīng)該沒有說錯(cuò),有道是近朱者赤,近墨者黑。老爹你整天和電腦這種直來直往,絲毫不會(huì)變通的機(jī)器朝夕相處,不是個(gè)鋼鐵直男才怪呢!」
我沒有接著老爹的話說,而是自顧自地感嘆了一句。
「……」
老爹聞言后臉上的笑容驟然凝固,想說點(diǎn)什么卻欲言又止。
「不過老媽也是心大,時(shí)常郁悶得吐血,但還是堅(jiān)持嫁給了老爹你呀。有句話怎么說來著?不是一家人,他不進(jìn)一家門,果然有道理?!?p> 我打趣道。
「任靈玥,你夠了?。∥液湍銒屩g的愛恨糾葛、恩怨情仇豈是你個(gè)小孩子能夠明白的?要是拍成電視劇,八十集都難以敘述清楚!你在這兒給我胡說八道嘛,要是被你媽聽到了,保管揍得你爹我都不認(rèn)識(shí)你!」
老爹惡狠狠地說道。
畢竟我這算是戳中了老爹的軟肋了,當(dāng)年老爹追我媽的時(shí)候鬧了老多笑話。有時(shí)候我跟老媽聊天的時(shí)候她就會(huì)跟我講這些往事,常常讓我們倆笑得前俯后仰。
不過直也不算什么缺點(diǎn)吧,畢竟整天猜來猜去不累么?
在付出「慘痛」的代價(jià)后,我總算是知道了電腦的愚笨程度,它在我心里的崇高度和神秘度猝然崩塌。以前在使用電腦的時(shí)候心里多多少少還有一點(diǎn)敬畏感,現(xiàn)在已經(jīng)全都化為烏有。
和老爹斗完嘴后,我又做了一會(huì)兒練習(xí)。老爹一直陪在我身邊,靜享時(shí)光。
和老爹去公交站臺(tái)接老媽下班,順帶去超市買了些零食。由于后天就是除夕夜了,超市里面準(zhǔn)備年貨的人還真不少。
在走到超市入口的時(shí)候,老爹和老媽的目光變得柔和了起來,他們兩人相互看了對(duì)方一眼,臉上露出了會(huì)心的笑容。
「有問題!」
我敏銳地捕捉到兩人的笑容富含深意,但此時(shí)顯然不是詢問的好時(shí)機(jī)。得等到他們不在一塊兒,并且防備松懈的時(shí)候再一探究竟。
我和老媽選購了大半個(gè)購物車,這才戀戀不舍地跟著老爹去收銀處買單。
老媽終于可以休年假了,于是我們約定明天下午全家出動(dòng),去超市掃蕩年貨。
至于為什么是下午,當(dāng)然是因?yàn)槟承┤藴?zhǔn)備要睡個(gè)懶覺咯。
老媽的休假并沒有影響老爹和我的課程,于是第二天上午,課程繼續(xù)。
「玥玥啊,經(jīng)過這幾天的課程,相信你對(duì)C語言程序已經(jīng)有一個(gè)基本了解了吧?」
「嗯嗯~」
「好,今天我們不寫代碼,來探討一些本質(zhì)性的東西。上午的課程上完,年前對(duì)于C語言的學(xué)習(xí)就暫時(shí)告一段落。不過老爹希望你在觀察生活的方方面面時(shí),能夠有意無意地將其與老爹和你講過的知識(shí)聯(lián)系起來。這樣不但會(huì)加深這些知識(shí)在你腦中的印象,也會(huì)讓你更深刻地理解這些知識(shí)。
在開始教你的時(shí)候老爹就說過,不求你以后成為程序員,只希望能夠給帶來一些積極的影響,老爹就心滿意足了。」
「好的,我知道了~」
我點(diǎn)了點(diǎn)頭說道。
「今天我們從人生的哲學(xué)方面來說明程序的本質(zhì)。」
「老爹,我們昨天剛從神學(xué)的角度來學(xué)習(xí)了C語言,今天就轉(zhuǎn)到哲學(xué)了?這跨度也太大了吧?」
「科學(xué)源于哲學(xué),哲學(xué)源于神學(xué),我們這是在追本溯源,沒有毛病?!?p> 老爹笑了笑說道。
「這都行?」
「其實(shí)無論用什么語言寫程序,有很多理念都是相同的。
設(shè)計(jì)程序,無非就是要弄清楚四個(gè)哲學(xué)問題:我是誰?我從哪里來?我要干什么?我要到哪兒去?」
「這個(gè)我知道,不是表情包的懵逼四連問么?」
老爹的話一下就勾起了我的興趣。
「哈哈,的確是有很多網(wǎng)友將這幾個(gè)問題配圖做成了表情包,但這四個(gè)問題看上去雖然簡單,卻極難回答。那么這么高深的哲學(xué)問題又如何與程序設(shè)計(jì)聯(lián)系到一起呢?
首先要弄清楚一件事,問題中的我并不是指的設(shè)計(jì)程序的人。」
「那是指的誰呢?」
「是數(shù)據(jù),準(zhǔn)確的說是二進(jìn)制數(shù)據(jù)。
我是誰?這個(gè)問題是指數(shù)據(jù)的意義,比如對(duì)一個(gè)銀行賬戶來說,數(shù)據(jù)就是賬戶信息,如姓名、密碼和余額。而對(duì)一個(gè)游戲來說,數(shù)據(jù)就是血量、法力值和攻擊力等。用一個(gè)專業(yè)的詞匯來說,叫做數(shù)據(jù)模型?!?p> 「聽上去有點(diǎn)繞,但是我大概能夠明白是什么意思?!?p> 「那就行,我們?cè)僬f我從哪里來這個(gè)問題。
這個(gè)問題說的是數(shù)據(jù)的來源,你現(xiàn)在寫的程序比較簡單,數(shù)據(jù)來自于寫程序時(shí)給變量賦的值,或者來自小黑屏中鍵盤輸入的值。其實(shí)數(shù)據(jù)的來源有很多,比如說可以從文件中讀取,或者通過網(wǎng)絡(luò)等方式得到。
弄清楚了前面兩個(gè)問題,就相當(dāng)理清了應(yīng)用題中的已知條件?!?p> 「哈哈,老爹你這么一說,我就明白了?!?p> 「至于我要干什么,這個(gè)問題就是字面意思,最好理解,就是我們要對(duì)數(shù)據(jù)進(jìn)行什么樣的操作。而最后一個(gè)問題我要去哪兒,則是在對(duì)數(shù)據(jù)進(jìn)行處理后數(shù)據(jù)的歸屬地,比如說你現(xiàn)在寫的練習(xí)一般都是將數(shù)據(jù)顯示在小黑屏上。
除此之外,可能要將數(shù)據(jù)保存在文件中,或者通過某種方式,如網(wǎng)絡(luò)傳送給其他程序。例如微信,你收到消息后回復(fù)消息。」
「嗯……要干什么就類似應(yīng)用題的求解問題吧?至于要去哪兒,我暫時(shí)想不到什么與之對(duì)應(yīng)……」
我撓了撓頭說道。
「沒關(guān)系,讓你把這些知識(shí)和生活中熟悉事物聯(lián)系起來是為了加深理解,如果你本就可以理解就沒必要了。下面老爹通過一個(gè)簡單的例子來說明。
比如說現(xiàn)在有一個(gè)聯(lián)系題:從小黑屏中獲取鍵盤輸入的兩個(gè)整數(shù),將它們的和輸出在小黑屏上。
這個(gè)例子中數(shù)據(jù)就是兩個(gè)加數(shù),并且是從小黑屏中輸入的。我是誰,從哪兒來這兩個(gè)問題弄清楚了?!?p> 「將兩個(gè)加數(shù)做加法,這是要干什么,將做加法的結(jié)果顯示在小黑屏上,這是要去哪兒?!?