
無論在生活中,學(xué)習(xí)中,還是工作中,我們都會(huì)遇到各種各樣的問題,每個(gè)人都有自己的一套處理辦法,每種處理辦法都有其特定的內(nèi)在思維邏輯,最近學(xué)習(xí)python編程語言,在解答各種題目的過程中,讓我清晰的認(rèn)識(shí)到,編程是有一套固定的思維方式的,而這種思維方式,讓我在其他方面也獲益良多,于是就迫不及待的分享給大家。
1.問題本身是什么?
必須先明確問題本身,并對(duì)問題有一個(gè)清晰的認(rèn)識(shí),才能更好的去解決問題。
舉個(gè)我在進(jìn)行python編程語言學(xué)習(xí)的過程中遇到的題目:用天數(shù)計(jì)算年齡。怎么去理解這個(gè)題目呢?用天數(shù)計(jì)算年齡,是不是只需要知道這個(gè)人多少歲,然后把年齡和每年的365天做個(gè)乘法呢?顯然不應(yīng)該是這樣的,這個(gè)題目的含義是需要一個(gè)明確的天數(shù),是從一個(gè)人從出生開始到今天的這個(gè)時(shí)間段內(nèi)有多少天。
在工作中,就經(jīng)常會(huì)碰到某些人,急急燥燥,領(lǐng)導(dǎo)布置一個(gè)任務(wù),還沒搞清楚具體要做什么,就忙著答應(yīng)沒問題,結(jié)果事情完不成,還要其他人給他擦屁股。比如,我有一個(gè)同事,領(lǐng)導(dǎo)讓他幫著寫一個(gè)總結(jié),他立刻滿口答應(yīng)下來,他的文筆確實(shí)不錯(cuò),對(duì)這種總結(jié)那是得心應(yīng)手,僅僅一天之后,一篇聲情并茂的總結(jié)就出爐了。里面以領(lǐng)導(dǎo)自己的口吻,把對(duì)生活、工作、學(xué)習(xí)、管理等多個(gè)方面都做了簡要的介紹,基本都是一些大家常見的但又不影響大局的問題,還有一些冠冕堂皇的收獲之類。領(lǐng)導(dǎo)看了之后就立刻不高興了。為啥?領(lǐng)導(dǎo)想讓他寫的是一篇客觀純粹的工作總結(jié),而不是個(gè)人年度總結(jié)報(bào)告!他完全就沒理解對(duì),浪費(fèi)了功夫不說,還給領(lǐng)導(dǎo)留下了辦事毛躁的印象。
所以遇到問題,一定要先搞明白問題的本身是什么,再去考慮怎么解決怎么做,不要盲目的開始,最后費(fèi)時(shí)費(fèi)力卻事倍功半。
2、明確輸入
只要明確問題本身就行了么?當(dāng)然不夠。
還是繼續(xù)說我的編程題目:用天數(shù)計(jì)算年齡。是不是只要寫個(gè)程序,輸入一個(gè)生日,計(jì)算一下到今天的天數(shù)就可以了?如果你這么想,恭喜你,掉坑里了。用天數(shù)計(jì)算年齡,本身沒有規(guī)定是到今天的年齡,可能是到昨天,也可能是到下個(gè)月的某一天,可以是任何一天。
這個(gè)時(shí)候,我們應(yīng)該意識(shí)到,輸入的不僅僅是一個(gè)生日,還應(yīng)該有另一個(gè)日期來確定年齡,也就是有兩個(gè)輸入?,F(xiàn)在問題明確了,是輸入兩個(gè)日期,來確定兩個(gè)日期間的天數(shù)。
在學(xué)習(xí)中,我們常常忽略明確輸入的重要性。很多人家里都會(huì)買很多本書,擺滿一面墻,但基本不看,偶爾想看了,面對(duì)一墻的圖書,也不知道怎么選擇,往往是隨便拿一本,還美其名曰:“開卷有益!”
我們的時(shí)間是有限的,所以在學(xué)習(xí)過程中一定要有選擇的輸入,要有明確的輸入。比如,我要學(xué)習(xí)哲學(xué),那就明確看什么書,什么時(shí)間看,在哪里看。而不能說,我今天要學(xué)習(xí)的東西有哲學(xué)、心理學(xué)、數(shù)學(xué)、經(jīng)濟(jì)學(xué)、英語……這樣的結(jié)果往往是什么都學(xué)不到,時(shí)間都浪費(fèi)在選擇上了。
最重要的事情只有一件,明確的輸入也就只有一件,只有輸入明確了,我們才有可能得到我們想要的輸出。
3、明確輸出
輸出和輸入是相輔相成的,輸出倒逼輸入是目前一種非常流行的方法,也確實(shí)挺好用,只有有了輸出我們的輸入才更有意義。
我的編程題目中的輸出就應(yīng)該是一個(gè)具體的天數(shù)了。那這個(gè)天數(shù)應(yīng)該是幾呢?怎樣由輸入運(yùn)算得出呢?這就需要一個(gè)明確的算法了,我得統(tǒng)計(jì)兩個(gè)日期之間有多少完整的年,得出一個(gè)天數(shù),再計(jì)算不完整的年的天數(shù),加到一起得出一個(gè)總天數(shù)。
其實(shí)生活中更應(yīng)該明確輸出。輸出就是我們想要達(dá)到的狀態(tài),用一個(gè)美好的詞來解釋就是夢(mèng)想,我們的輸出就是我們的夢(mèng)想。輸出是我們輸入的源動(dòng)力,是我們成長的啟明星。
我們明白生活問題的本身就是衣食住行,去選擇明確的學(xué)習(xí)內(nèi)容是輸入,而我們想要達(dá)到的目標(biāo)就是我們的輸出,但,這還不夠,還需要對(duì)我們輸入和輸出的關(guān)系進(jìn)行測試。
4、用例測試。
用例測試就是拿一些明確的答案去檢測我們的程序的運(yùn)算結(jié)果是否正確。
我上面那個(gè)程序運(yùn)行之后的結(jié)果就是錯(cuò)的。哪里錯(cuò)了?沒考慮閏年問題。普通的年份是365天,閏年是366天。這就是我用例子測試出來的,我發(fā)現(xiàn)我的程序計(jì)算的兩個(gè)日期之間的天數(shù)和實(shí)際答案總是差那么幾天,才發(fā)現(xiàn)忘記考慮閏年了。
其實(shí)在我們的成長歷程中,測試會(huì)更加的重要。程序錯(cuò)了我可以改,甚至可以重寫,人生可以么?我們的生命只有一次,我們只有一次機(jī)會(huì),那我們?cè)趺礈y試呢?靠想!也許你會(huì)覺得不靠譜,但這其實(shí)是一種絕佳的自我成長的方式。
比如,我們都應(yīng)該知道,很多偉大的人之所以成功,是因?yàn)樗麄冏銐蚺?,付出了足夠多的汗水,這就是一個(gè)有固定結(jié)果的用例。把它帶入到我們的人生里,如果我們努力,就可能成功,而如果我們不努力,那就一定不會(huì)成功。
其實(shí)編程思維就是一種明確的目的性思維方式。我們要先對(duì)問題有一個(gè)清晰的認(rèn)識(shí),然后有明確的輸入和輸出,再用測試用例對(duì)我們的過程進(jìn)行測試,得到和預(yù)期相同的結(jié)果。
其實(shí)人生也是一樣,先要理解我們的生存環(huán)境和社會(huì)地位,然后明確自己應(yīng)該怎么努力怎么學(xué)習(xí)才能達(dá)到自己想要的目標(biāo),為了明確我們的做法是否能更接近目標(biāo),就要拿那些已經(jīng)明確結(jié)果的例子去比較分析,最后進(jìn)行自我的迭代成長。
希望這套思維方式對(duì)你有用!