代碼不過是表達

   這是一個表達的世界,任何人都可以通過各種途徑來表達自己的思想.思想是抽象的,途徑是技巧的,表達是現實的。

 

寫代碼 是什麼?

寫代碼就是通過代碼正確的把思想轉表達可運行的程序

就好象我現在用文字寫這篇文章一樣 難的不是寫 當學會了 中文文字和中文語法後 最難的就是寫這篇文章的思想的形成了 文字和語法是不變的(相對不變)

我如果可以用中文寫這篇文章  如果我還會其他語言的話 比如 英語 那麼把這篇文章寫成英語版的 有難度嗎? 沒有 呵呵

 

從上面看來 寫文章必須至少具備 2個條件(使用的紙,筆,電腦錄入這樣的工具這裏忽略)

必要條件 就是至少會用一種語言表達(包括熟悉文字和語法)

充分條件 就是有成型的思想

 

這樣看寫代碼和寫文章有區別嗎

 

完全沒有(當然 軟件的開發運行還要受到所處環境的制約)

 

說清楚了上面這段 我就可以很明確的肯定

各種需求的軟件開發 只要把需求分析 用文字陳述出來了 那麼在用代碼寫出來是沒有什麼難度的了(先要會一門編程語言)

這也是項目經理和程序員的一個區別 項目經理側重於思想的陳述 程序員更注重於代碼的運用

 

既然必要條件是會用語言來表達 那麼任何程序員 當務之急首先就是要先紮實的學會一種語言 你可以不會 這門語言擴展的東西

比如 DHTML我可以不會 JQUERY 不會 EXT  但只要JS足夠紮實 DOM有一些瞭解 那麼加上GOOGLE|BAIDU|問別人 基本可以實現絕大部分算法要求不高的需求?

 

現在我要用JS實現一個頁面中浮動層拖拉的簡單效果

思想陳述就是

前提這個能拖動的目標是浮動的

當鼠標點擊時 確認要拖拉的目標(被點擊目標和被拖拉目標可以不是一個) 記錄拖拉目標座標和鼠標的相對位置差

當鼠標移動後 當有確認要拖拉的目標那麼 目標根據當前鼠標的座標和確認時候的相對位置差來 重新設置座標

當鼠標點擊放開後 清除確認目標

呵呵 這樣一段陳述 會JS的把它轉成JS表達 會很難嗎?

 

以上整個難點就在思想的陳述上面

 

所以很多喜歡問怎麼寫要源代碼的人 我勸他還是先把 編程書在好好看看 看爛了 在出來問問題

因爲這樣大家就可以把問題固定在思想交流上

當你有足夠的能力用編程語言表達思想後 提問和回答的人都將大大減少時間

想想看 一個完全不瞭解DHTML的人 上面那段陳述有用嗎? JS 事件 DOM 你要說明多少語言層面的問題  你很上道給他源代碼 那麼下次他就會問你怎麼在指定的區域內實現拖拉 呵呵

 

總之想能寫好代碼的人 首先就要完全瞭解自己要使用的這門語言

我這裏完全瞭解指的是很基本的 關鍵字 語法 流程控制 其實不難把

這些個熟練

那麼接着就是用編程語言來表達思想的陳述了 這個就是純粹的編程語言的運用技巧和經驗了

 

當你能熟練的用某種語言寫代碼了

除了天才 這個時候你就應該去看設計模式了

設計模式是什麼?  設計模式也是思想 不過是代碼表達的思想

好象教你寫議論文一樣 老師會和你說 先寫出論點 在提出論據 然後是論證過程

設計模式也是這樣 它和任何語言都沒關係 它只是從無數的軟件開發設計的經驗教訓中 幫你總結和抽象了 什麼情況下該用什麼方式寫

當你設計模式看熟練了 這個時候你寫代碼的時候就會發出 哇 這個情況用這種模式來寫的激動

這個時候讀別人寫的好的源碼也簡單了 好的源碼 一般會有很多設計模式上的組合應用

 

算法也是寫代碼中要了解的東西(注意太深入這個東西要消耗大量的時間)

設計模式說的是流程描述

算法是一個輸入輸出過程中 過程包含的執行步驟次序 的描述

個人看法:優先把時間花在代碼的流程控制上 而一個算法完全可以通過設計封裝在一個過程中的 

比如程序中要排序 我只會 冒泡排序 其他什麼快速排序 插入排序我都不會 那有什麼關係呢? 只要這個方法保證 排序結果是正確的

程序可以正確運轉起來 那麼以後優化 也只是更改這個排序方法內部的步驟罷了 但是一旦你運行程序後發現需要調整整個程序結構的話

呵呵  會死人的


設計模式就好比寫文章時的整體結構 算法就是文章的文采 不管怎麼說好的文章首先要求是正確合理的結構 先讓人看的懂(能正確運行起來)纔是最重要的

 

當你有能力正確的用代碼來表達思想了

那麼就真正可以把時間關注在業務邏輯(思想陳述)上了 另外入軟件開發中調試也是一個重頭 不過都不是本篇文章想說的

 

希望本篇文章對開發的入門新手能有些幫助

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章