程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 庖丁解羊--閒談編程思想(轉)

庖丁解羊--閒談編程思想(轉)

編輯:關於JSP

庖丁解羊
                            ----閒談編程思想
作者:HolyFire
經過多年的編程,我發現編程的思想對一個程序員是至關重要的,以前拿到一個問題,馬上就開始考慮如何來一點一點把他用代碼來實現,於是啃啊啃啊於愁眉籠罩千辛萬苦下每完成了一點就欣喜若狂。編著編著發現這裡不足,那裡沒考慮到於是東補補西湊湊,異常蹩腳的完成了一個小程序,當時的感覺就像我完成了全世界,或許那個時代是我最開心的。
完成了四五個程序的我,開始發現我做了很多重復的勞動,於是乎開始做我的程序庫,編寫功能型模塊。想到了這些模塊只要寫一遍就可以受用無窮不禁得意洋洋,或許那個時代我是聰明。
當我寫了五六千行代碼的時候,我發現我寫的功能模塊已經記不清什麼是干什麼的了,而我已經習慣使用別人寫的比我好的模塊時,我開始迷茫,我做的一切究竟是為了什麼。這時我開始研究別人的代碼,開始懂得什麼是優化,什麼是數據結構,什麼是數學建模,我開始研究應用數學和軟件工程。這時我開始使用C++用類來寫程序,或許那個年代我是明智的。
當我寫了四五十個*.h和*.cpp後,開始發現我寫的類一點都不通用,無法再利用。我開始深入學習類以及面向對象,明白了繼承和封裝,這時的我才開始深深思考什麼是重要的,於是我開始分析問題而不是一上手就開始編代碼。或許以前的我是個傻瓜^_^。
我足足花了三年多的時間來浪費我的青春做了別人僅需一年的事情(當然著三年中我積累的經驗不可能是一年能做到的,但是對於編程上的修養,我浪費的時間已太多),如果你們沒有意識到這點,或許也會浪費很多時間。
分析能力對一個程序員來說是一個重要的屬性,它直接關系到你對事物的理解能力和組織能力,程序員做的工作就是將一個事物分解成數學元素然後重新組織在計算機裡重現,所以如何處理事物是個要點。
我們了解一個事物並進行描述的時候,往往是先處理它的一部分,接著處理另一部分,然後等所有的部分都處理完的時候,具體的事物就重現了。比如給一個不知道山羊的人介紹山羊,如果你對他說山羊就是山羊,他是無論如何都不會明白的。如果你說山羊是一種有四只腳的腦袋上有兩只角,還有短短的尾巴,那他模模糊糊會有些形象在腦海裡了,如果加上有絨絨的毛,可笑的胡子,咩咩的叫的食草動物,至少他不會和牛混淆起來,如果你能描述的更詳細更好,那他有九成知道山羊是什麼樣子了,當他看見山羊的時候就會立刻明白。對於什麼都不懂得計算機你不用說明什麼,但是要是別人或者幾年以後的你自己能看明白你的文檔,詳細的說明是必須的。而從上面的過程看來,將事物分成小塊來處理是個好辦法,我們把這個過程叫做劃分。當然劃分是可以繼續下去,將劃分的小塊繼續劃分直到不能劃分為止。當然要對一只山羊劃分需要一個對山羊有著全面了解的人,所以劃分你的問題的時候要對問題有全面的了解。看上去這對一個還沒有了解這個問題的人是一個矛盾,劃分一個事物有助於了解這個事物而要很好的劃分卻需要對事物充分的了解。於是我們要有所改變,要改變的是我們的做法。我們先粗略的了解問題,然後粗略的劃分一下,將劃分的模塊再粗略的了解一下,然後將它粗略的劃分,等到都成為不可劃分的小塊時,我們再來組織它。而且這個時候,我們對問題已經有全面的了解了,這時候我們將小塊的重復部分扔掉(一般一定會有重復的部分),然後將這些小塊重新將問題組合起來,想一下將一只大卸八塊的山羊組合起來,哈哈,一定是活不過來了,不過有羊肉吃也不錯。如果你很順利的組合起來了,表示你很好的劃分了這個問題而且了解的很透徹,以後的事將會一帆風順,你這時腦袋裡一定充滿了解決這個問題的方案,已經躍躍欲試了。不要急,聰明的人會仔細的將劃分的過程多看幾遍,重組的方法多試幾種,這不但對以後和編程有好處,也是更好解決方案的起點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved