“編程是一個(gè)很枯燥的過程,需要進(jìn)行周密的數(shù)學(xué)運(yùn)算,然后再把運(yùn)算出來的結(jié)果用編程語(yǔ)言編寫成計(jì)算機(jī)程序,想要實(shí)現(xiàn)高度的邏輯性,首先要做的就是確保你在編程之前的數(shù)學(xué)運(yùn)算不要出錯(cuò)。”
“簡(jiǎn)單的錯(cuò)誤可能不會(huì)影響程序的運(yùn)行,但重大的錯(cuò)誤卻一定會(huì)造成程序的崩潰。在這里我想用人腦和計(jì)算做一個(gè)比較,人類的大腦要是崩潰了,就會(huì)變成精神病,計(jì)算機(jī)程序要是崩潰了,則會(huì)得出兩種結(jié)果,第一是計(jì)算機(jī)徹底死機(jī),無法運(yùn)轉(zhuǎn),第二是計(jì)算機(jī)還能運(yùn)行,但無論你輸入什么指令,它得出的都會(huì)是錯(cuò)誤的結(jié)果。”
“從這里不難看出編程的重要性,我剛才提到了計(jì)算機(jī)算法這個(gè)概念,這個(gè)概念主要針對(duì)的是計(jì)算機(jī)編程,所謂的算法,指的就是編程時(shí)進(jìn)行的數(shù)學(xué)運(yùn)算。”
“任何程序在編寫之前,都需要確定它是用來干什么的,我管這個(gè)叫做‘程序的指向性’,說白了就是你需要先確定一個(gè)結(jié)果,然后通過數(shù)學(xué)運(yùn)算,在編程的時(shí)候把這個(gè)結(jié)果的運(yùn)算過程用計(jì)算機(jī)語(yǔ)言完整的展現(xiàn)出來,這其中數(shù)學(xué)運(yùn)算的過程,就是我所說的算法。”
牛小強(qiáng)說到這里稍作停頓,讓大家有消化和吸收的時(shí)間。
他剛才講的這些內(nèi)容來自計(jì)算機(jī)系的教授們?nèi)济靼祝惶靼椎氖悄切┙淌诜蛉撕推渌麑W(xué)科的教授。牛小強(qiáng)既然已經(jīng)承諾要讓大家都能盡量聽懂,當(dāng)然要照顧一下這些外行們了。
停頓了將近十秒,牛小強(qiáng)這才接著說道:“打個(gè)比方說,如果你想要在程序中輸入數(shù)字2這個(gè)結(jié)果,最簡(jiǎn)單的最直白的運(yùn)算過程應(yīng)該是1+1=2,如果你使用了其他的算法,比如說你的計(jì)算過程是0.75+1.25=2,這無疑將會(huì)大大增加程序的臃腫和復(fù)雜性,程序要是變得臃腫和復(fù)雜了,就很容易產(chǎn)生邏輯性漏洞。”
牛小強(qiáng)說到這里看向了泰格:“我剛才就是通過試探摸清楚了斯坦福大學(xué)在編程中使用了哪種算法,然后再根據(jù)自己得到的結(jié)果推導(dǎo)出了深藍(lán)后續(xù)的邏輯運(yùn)算過程,因此我才能如此精準(zhǔn)的提前預(yù)判后續(xù)的所有步驟,很遺憾,斯坦福大學(xué)使用的算法跟我剛才所說的后者差不多,你們沒有使用1+1=2這種最簡(jiǎn)單最科學(xué)的算法,而使用了0.75+1.25=2來進(jìn)行程序語(yǔ)言的匯編,所以我才會(huì)說你們的算法很落后,并被我找到了漏洞,這才發(fā)生了剛才那種看似不可思議的事情。”
牛小強(qiáng)打的這個(gè)比方通俗易懂,就算是不懂計(jì)算機(jī)的人,基本也都能夠聽懂。
在場(chǎng)的人全都露出恍然大悟的神色,紛紛點(diǎn)頭表示自己已經(jīng)明白了牛小強(qiáng)的意思。
牛小強(qiáng)并未就此打住,他接著說道:“編程算法是為編程服務(wù)的,在確保程序的功能性不受影響的前提條件下,越是簡(jiǎn)練的算法就越能提升程序的執(zhí)行效率,該如何做到這點(diǎn)呢?在我看來有兩個(gè)途徑。”
這話一說出口,在場(chǎng)的計(jì)算機(jī)系的教授們?nèi)即蚱鹆司瘛4丝痰乃麄円呀?jīng)全部擺正了自己的心態(tài),真的把牛小強(qiáng)當(dāng)成自己的老師看待。
牛小強(qiáng)雖然還是個(gè)大學(xué)生,但僅僅從他剛才的發(fā)言來看,他對(duì)于編程的理解已經(jīng)高深到了一個(gè)十分恐怖的地步。
【本章閱讀完畢,更多請(qǐng)搜索三五中文;http://m.gtgo.cn 閱讀更多精彩小說】