IT人如何修煉程式設計的內功[1]

才智咖 人氣:4.48K

很多年以前,我還是一個學建築的學生,但是很喜歡學計算機。不過呢,由於專業限制,我沒有計算機用的。學校只開了一個學期的Fortran語言,上機時間只有可憐的5節課,那會把我憋壞了,呵呵。

IT人如何修煉程式設計的內功[1]

大家不要笑啊,90年那會,生活不富裕,PC機還是一個很貴的東東,一般家庭都還停留在18吋電視機的時代,大學生又是最窮的,物質條件更為匱乏,我當時有個小收錄機,京華牌的,呵呵,在同學中已經很牛叉了。因此,像現在的同學們,一考上大學,MP3、MP4、膝上型電腦家裡給配齊的,在當時是根本不可能想象的事情。我作為過來人,還是要說大家一句,大家真是生在好時代了,很幸福的。

不過呢,我很喜歡程式設計,就養成一個習慣,想象程式設計,找一個題目,自己在腦子裡把程式構思出來,寫在紙上,然後自己模擬電腦的run,把程式過一遍,看能不能執行正確。這個習慣現在都還有。呵呵,我老是勸大家寫簡單的程式,其實和這個習慣有很大關係,因為我比較笨,稍微複雜的程式,腦子就想不過來了,就暈了。

也正因為有了這個經歷,我就開始思考一個問題,程式設計究竟是什麼?呵呵,當時我在學校,也是小有名氣,大家都知道有這麼個程式瘋子,沒事喜歡發呆,喜歡想程式。在一次舞會上(別激動,我也是過來人,也會跳舞的,雖然很難看哈,呵呵),一個計算機專業的`師姐就考我,問我程式設計是什麼?

我當時想了一下,很鄭重地回答她,我的理解,程式設計就是拆解任務,把一個任務,拆解成很細很細的步驟,一步步教計算機去做。計算機很笨的,舉個例子,我們說早上起來去上課,是個人都知道做什麼,但是它不知道,因此,我們要告訴它:

起床--穿衣--拿飯盒--去食堂--買早飯--吃飯--洗飯盒--回宿舍--放飯盒--拿書--出門--如果人都走完,要記得鎖門--去教室--推門--找到自己的座位--走過去--坐下來--等待上課--上課。

 

說到這裡,我突然自己有點明悟了,程式設計,就是把複雜的問題簡單化,簡化到每個動作都是1+1=2那麼簡單,然後計算機照做就好了。這就是我理解程式設計的真諦。我師姐聽到了,也若有所悟,這個話題就沒有再說了。

我們來分析一下計算機的特點,準確的講,目前我們這個社會的計算技術,還很原始,說它是計算機,正確,它確實只能計算,說它是電腦,太抬舉它了,它不可能有思考能力。

在馮諾依曼體系架構中,計算裝置就是具有一定計算能力,有能力和外界做出IO互動,並且能高速重複動作的這麼一種裝置,這可能和大家在教科書裡面學到的不太一樣啊,不過,我是這麼理解的。

因此,我從一開始,就沒有把計算機作為一個夥伴,一個可以幫助我出主意,或者代替我思考的夥伴,僅僅是看做一種工具,這種工具有什麼用呢?我認為它最重要的,有兩個作用:

1、無限可重複性,一個動作序列,一旦編訂程式,計算機就可以無數次重複這個序列,不會感到累。這特別適合於那些乏味的,不斷重複的勞動,比如,我們一個學校每天要敲鐘,打上課鈴,如果讓人來做,這個人會很乏味,做久了,就可能出錯,但是讓計算機來做,它可沒有什麼思想,不會覺得累,而且做的很好。計算機特別適合做重複性工作。

2、服務品質的穩定性。計算機適合做重複工作,還有個有點,就是每次執行結果都是一樣的。這體現了工業化時代最重要的一個思想:量產思維,大家可以看到,現在的社會,不可重複的藝術固然很好,但公眾需要的是量產的產品,因為質量穩定,產量穩定,能滿足大眾需求。勞斯萊斯雖然很美,但絕大多數人在開大眾、豐田等低端車。就是這個道理。還是打鈴那個例子,如果是人,可能會生病,可能會請假,或者乾脆搞忘了,但計算機不會,只要有電在正確工作,打鈴就不會出錯。

這樣,我就慢慢理解到了,計算機其實就是能以恆定品質不斷重複輸出服務的機器而已。