經過多年的編程,吾發(fā)現編程的思想對一個程序員是至關重要的,以前拿到一個問題,馬上就開始考慮如何來一點一點把他用代碼來實現,于是啃啊啃啊與愁眉籠罩千辛萬苦下每完成了一點就欣喜若狂,編著編著發(fā)現這里不足,那里沒考慮到于是東補補西湊湊,異常蹩腳的完成了一個小程序,當時的感覺就像我完成了全世界,或許那個時代是我最開心的。 ?
? 完成了四五個程序的我,開始發(fā)現我做了很多重復的勞動,于是乎開始做我的程序庫,編寫功能型模塊,想到了這些模塊只要寫一遍就可以受用無窮不禁得意洋洋,或許那個時代我是聰明。 ?
? ? ? ? ? 當我寫了五六千行代碼的時候,我發(fā)現我寫的功能模塊已經記不清什么是干什么的了,而我已經習慣使用別人寫的比我好的模塊時,我開始迷茫,我做的一切究竟是為了什么,這時我開始研究別人的代碼,開始懂得什么是優(yōu)化,什么是數據結構,什么是數學建模,我開始研究應用數學和軟件工程,這時我開始使用C++用類來寫程序,或許那個年代我是明智的。 ?
? ? ? ? ? 當我寫了四五十個*.h和*.cpp后,開始發(fā)現我寫的類狗屁不通,一點都組合不起來,我開始深入學習類以及面向對象,明白了繼承和封裝,這時的我才開始深深思考什么是重要的,于是我開始分析問題而不是以上手就開始編代碼。或許以前的我是個白癡^_^。 ?
? 我足足花了三年多的時間來浪費我的青春做了別人僅需一年的事情(當然著三年中我積累的經驗不可能是一年能做到的,但是對于編程上的修養(yǎng),我浪費的時間已太多),如果你們沒有意識到這點,或許也會浪費很多時間。 ?
? ? ? ? ? 過場白已說的太多,大家重視的是我這三年犧牲換回來的經驗而不是對愚蠢的人的同情。 ?
? ? ? ? ? 分析能力對一個程序員來說是一個重要的屬性,它直接關系到你對事物的理解能力和組織能力,程序員做的工作就是將一個事物和它的運動(物質和運動,這是組成世界的要素)分解成數學元素然后重新組織在計算機里重現,所以如何處理事物是個要點,運動稍后再說。 ?
? 事物的理解,我們了解一個事物并進行描述的時候,往往是先處理它的一部分,然后等所有的部分都處理完的時候,具體的事物就重現了,比如給一個不知道山羊的人介紹山羊,如果你對他說山羊就是山羊,他是無論如何都不會明白的,最后你只會說你真是個白癡,山羊都不知道,而他說你算老幾啊,連山羊都說不清。如果你說山羊是一種有四只腳的腦袋上有兩只角,還有短短的尾巴,那他模模糊糊會有些形象在腦海里了,如果加上有絨絨的毛,可笑的胡子,咩咩的叫的食草動物,至少他不會和牛混淆起來,如果你能描述的更詳細更好,那他有九成知道山羊是什么樣子了,當他看見山羊的時候就會立刻明白,對于什么都不懂得計算機你不用說明什么,但是要是別人或者幾年以后的你能看明白你的文檔,詳細的說明是必須的,而從上面的過程看來,將事物分成小塊來處理是個好辦法,我們把這個過程叫做劃分,當然劃分是可以繼續(xù)下去,將劃分的小塊繼續(xù)劃分直到不能劃分為止。當然要不一只山羊劃分需要一個對山羊有著全面了解的人,所以劃分你的問題的時候要對問題有全面的了解,看上去這對一個還沒有了解這個問題的人是一個矛盾,劃分一個事物有助于了解這個事物而要很好的劃分卻需要對事物充分的了解,于是我們要有所改變,要改變的是我們的做法,我們先粗略的了解問題,然后粗略的劃分一下,將劃分的模塊再粗略的了解一下,然后將它粗略的劃分,等到都成為不可劃分的小塊時,我們再來組織它,而且之個時候,我們對問題已經有全面的了解了,這時候我們將小塊的重復部分扔掉(一般一定會有重復的部分),然后將這些小塊重新將問題組合起來,想想一下將一只大卸八塊的山羊組合起來,哈哈一定是活不過來了,不過有羊肉吃也不錯,如果你很順利的組合起來了,表示你很好的劃分了這個問題而且了解的很透徹,以后的事將會一帆風順,你這時腦袋里一定充滿了解決這個問題的方案,已經躍躍欲試了,不要急,聰明的人會仔細的將劃分的過程多看幾遍,重組的方法多試幾種,這不但對以后和編程有好處,也是更好解決方案的起點。 ?
? ? ? ? ? 現在我們來解剖一只山羊,如果你愿意還可以細分,動物愛好者請回避。 ?
? ?
? 山羊 ? -> ? 腦袋 ?
? -> ? 軀體 ?
? ? ? ? ? ? -> ? 四肢 ?
? -> ? 尾部 ?
? ?
? 腦袋 ? -> ? 五官 ?
? -> ? 胡子 ?
? -> ? 絨毛 ?
? -> ? 骨架 ?
? ?
? 軀體 -> ? 胸 ?
? -> ? 腹 ?
? -> ? 背 ?
? -> ? 內臟 ?
? -> ? 絨毛 ?
? -> ? 骨架 ?
? ?
? 四肢 -> ? 兩只前肢 ?
? -> ? 兩只后肢 ?
? ?
? 尾部 -> ? 尾巴 ?
? -> ? 絨毛 ?
? -> ? 骨架 ?
? ?
? 五官 -> ? 耳朵 ?
? -> ? 眼睛 ?
? -> ? 鼻子 ?
? -> ? 嘴巴 ?
? ?
? 內臟 -> ? 心 ?
? -> ? 脾 ?
? -> ? 肝 ?
? -> ? 肺 ?
? -> ? 胃 ?
? -> ? 腸 ?
? ?
? 前肢 -> ? 腳 ?
? -> ? 絨毛 ?
? -> ? 骨架 ?
? ?
? 后肢 -> ? 腳 ?
? -> ? 絨毛 ?
? -> ? 骨架 ?
? ?
? 最后我們得到的是: ?
? 山羊 ? 腦袋 ? 軀體 ? 四肢 ? 尾部 ? 腦袋 ? 五官 ? 胡子 ? 絨毛 ? 骨架 ? 軀體 ? 胸 ? 腹 ? 背 ? 內臟 ? 絨毛 ? 骨架 ? 四肢 ? 兩只前肢 ? 兩只后肢 ? 尾部 ? 尾巴 ? 絨毛 ? 骨架 ? 五官 ? 耳朵 ? 眼睛 ? 鼻子 ? 嘴巴 ? 內臟 ? 心 ? 脾 ? 肝 ? 肺 ? 胃 ? 腸 ? 前肢 ? 腳 ? 絨毛 ? 骨架 ? 后肢 ? 腳 ? 絨毛 ? 骨架 ?
? ?
? 去掉重復的部分: ?
? 山羊 ? 腦袋 ? 軀體 ? 四肢 ? 尾部 ? 五官 ? 胡子 ? 絨毛 ? 骨架 ? 胸 ? 腹 ? 背 ? 內臟 ? 兩只前肢 ? 兩只后肢 ? 尾巴 ? 耳朵 ? 眼睛 ? 鼻子 ? 嘴巴 ? 心 ? 脾 ? 肝 ? 肺 ? 胃 ? 腸 ? 腳 ? 腳 ?
? ?
? 最終的不可劃分的子模塊: ?
? 胡子 ? 絨毛 ? 骨架 ? 胸 ? 腹 ? 背 ? 尾巴 ? 耳朵 ? 眼睛 ? 鼻子 ? 嘴巴 ? 心 ? 脾 ? 肝 ? 肺 ? 胃 ? 腸 ? 腳 ?
? ?
? 現在我們將它重新組合一下,是不是很簡單的就完成了。而且我們需要處理的東西并不多。現在我們來用數學元素來描述一下 ?
? ?
? 胡子: 數量不多的多種形狀的輪廓,有各種顏色 ?
? 絨毛: 非常多的多種形狀的輪廓,有各種顏色 ?
? 骨架: 多種形狀的輪廓,有一種顏色 ?
? 胸: 某形狀的輪廓,有一種顏色 ?
? 腹: 某形狀的輪廓,有各種顏色 ?
? 背: 某形狀的輪廓,有各種顏色 ?
? 尾巴: 某形狀的輪廓,有各種顏色 ?
? 耳朵: 最多兩個的某形狀的輪廓,有各種顏色 ?
? 眼睛: 最多兩個的某形狀的輪廓,有各種顏色 ?
? 鼻子: 最多一個的某形狀的輪廓,有各種顏色 ?
? 嘴巴: 某形狀的輪廓,有各種顏色 ?
? 心: 某形狀的輪廓,有各一顏色 ?
? 脾: 某形狀的輪廓,有各一顏色 ?
? 肝: 某形狀的輪廓,有各一顏色 ?
? 肺: 某形狀的輪廓,有各一顏色 ?
? 胃: 某形狀的輪廓,有各一顏色 ?
? 腸: 多種形狀的輪廓,有一種顏色 ?
? 腳: 多種形狀的輪廓,有各種顏色 ?
? ?
? 現在我們又得出了數量、輪廓和顏色這個三個元素,他們是所有元素都有的共性,我們找到了組合山羊的最小劃分,雖然在科學上這不是正確答案,但粗略的表達一只山羊這一足夠。好,雖然歷時不多,我們大腦海里已經解決了這個問題。??
Thanks for?:
holyfire ? (
誰最衰啊你最衰,誰最帥啊我最帥)
posted on 2006-11-16 09:37
喬棟 閱讀(117)
評論(0) 編輯 收藏 引用