其實看不懂才是正常的,看懂才是不正常的。即使已經學習程式設計多年,即使做軟體開發多年。
總結一下你問題的核心——原始碼。
很多人在說多練習、多學習基本上都與原始碼有關。
但是,這對你軟體開發能力沒有太實質性的提高。
首先我們要清楚,程式設計或者程式語言的作用時什麼?它不是為了程式設計而程式設計。我們為了實現某種軟體功能,需要透過程式設計來實現。而軟體是為了解決實際人無法解決或花費很大成本的工作,由軟體可以很容易解決或成本比較低。
而程式設計和程式語言只是實現這個軟體的一種工具、方法。
為什麼說“看不懂才是正常的”?
現在隨便一款具有實際功能的軟體,就需要幾百、幾千甚至幾萬個原始碼檔案,而每個原始碼又有幾百、幾千甚至幾萬行原始碼。計算機原始碼不是小說,從頭看到尾就行了,原始碼內部會形成複雜的關係,函式之間互相呼叫、函式使用公共變數、類之間的繼承等等。在這麼複雜的系統裡,能把原始碼看懂是非常困難的。
同時透過閱讀原始碼來理解這個軟體的完整功能,這種方法效率低、收效低。
原始碼是透過某種程式語言書寫,而原始碼中必然包含與這種程式語言相關的語言特徵,而這些特徵往往與這款軟體的功能沒有實際上的關係。也就說,原始碼中包含了大量對我們理解軟體功能沒有用,甚至反作用的資訊。就好像我們要在一萬本書裡找一本我們需要的書中的一頁。想想效率多麼低。
軟體設計資源也是分層次,它是在不同的工作階段產生,例如前期有軟體需求資訊,之後有軟體設計資訊,而原始碼幾乎是最某端的產品。
而有時很多人要了解的是軟體設計資訊,但是我們卻要透過閱讀原始碼來了解軟體設計資訊,而在這個過程中閱讀者必須將原始碼中很多多餘的資訊給去掉,則能總結成軟體設計資訊。想了解軟體需求資訊也是同理。
總之很多時候我們在一個層次上去了解另外一個層次上的資訊,這難度是非常難的。看原始碼只應該解決與這個原始碼相關的細節問題。
宏觀問題由宏觀方面解決,微觀問題由微觀方面解決。而原始碼是微觀內容,而軟體設計資訊、設計意圖等屬於宏觀內容。
至於你看不懂原始碼沒有關係。
並且寫原始碼也不是問題,寫原始碼不是為了寫而寫。只要清楚你寫什麼,寫本身就不是難度。而軟體開發中需要寫什麼呢?就軟體開發前期階段的分析和設計。而分析和設計的結果就是軟體的解決方案,而這種解決方案就是寫原始碼的依據。
《UML2.0實戰教程(Trufun)》
《面向物件分析與設計(UML.2.0版)》
《UML與軟體建模》
不知道你有沒有看過UML語言(統一建模語言),它是現在面向物件設計理論方法最常見的語言。雖然它叫語言,但是它不是程式語言,它與軟體分析和設計有關的語言,是用於描述軟體解決方案的語言。
《UML2.0實戰教程(Trufun)》中就簡單的介紹了使用UML進行面向物件設計的方法。而它所形成的軟體解決方案,就可以透過某種方法轉換成程式語言。《UML與軟體建模》第十二章中有介紹。
其實看不懂才是正常的,看懂才是不正常的。即使已經學習程式設計多年,即使做軟體開發多年。
總結一下你問題的核心——原始碼。
很多人在說多練習、多學習基本上都與原始碼有關。
但是,這對你軟體開發能力沒有太實質性的提高。
首先我們要清楚,程式設計或者程式語言的作用時什麼?它不是為了程式設計而程式設計。我們為了實現某種軟體功能,需要透過程式設計來實現。而軟體是為了解決實際人無法解決或花費很大成本的工作,由軟體可以很容易解決或成本比較低。
而程式設計和程式語言只是實現這個軟體的一種工具、方法。
為什麼說“看不懂才是正常的”?
現在隨便一款具有實際功能的軟體,就需要幾百、幾千甚至幾萬個原始碼檔案,而每個原始碼又有幾百、幾千甚至幾萬行原始碼。計算機原始碼不是小說,從頭看到尾就行了,原始碼內部會形成複雜的關係,函式之間互相呼叫、函式使用公共變數、類之間的繼承等等。在這麼複雜的系統裡,能把原始碼看懂是非常困難的。
同時透過閱讀原始碼來理解這個軟體的完整功能,這種方法效率低、收效低。
原始碼是透過某種程式語言書寫,而原始碼中必然包含與這種程式語言相關的語言特徵,而這些特徵往往與這款軟體的功能沒有實際上的關係。也就說,原始碼中包含了大量對我們理解軟體功能沒有用,甚至反作用的資訊。就好像我們要在一萬本書裡找一本我們需要的書中的一頁。想想效率多麼低。
軟體設計資源也是分層次,它是在不同的工作階段產生,例如前期有軟體需求資訊,之後有軟體設計資訊,而原始碼幾乎是最某端的產品。
而有時很多人要了解的是軟體設計資訊,但是我們卻要透過閱讀原始碼來了解軟體設計資訊,而在這個過程中閱讀者必須將原始碼中很多多餘的資訊給去掉,則能總結成軟體設計資訊。想了解軟體需求資訊也是同理。
總之很多時候我們在一個層次上去了解另外一個層次上的資訊,這難度是非常難的。看原始碼只應該解決與這個原始碼相關的細節問題。
宏觀問題由宏觀方面解決,微觀問題由微觀方面解決。而原始碼是微觀內容,而軟體設計資訊、設計意圖等屬於宏觀內容。
至於你看不懂原始碼沒有關係。
並且寫原始碼也不是問題,寫原始碼不是為了寫而寫。只要清楚你寫什麼,寫本身就不是難度。而軟體開發中需要寫什麼呢?就軟體開發前期階段的分析和設計。而分析和設計的結果就是軟體的解決方案,而這種解決方案就是寫原始碼的依據。
《UML2.0實戰教程(Trufun)》
《面向物件分析與設計(UML.2.0版)》
《UML與軟體建模》
不知道你有沒有看過UML語言(統一建模語言),它是現在面向物件設計理論方法最常見的語言。雖然它叫語言,但是它不是程式語言,它與軟體分析和設計有關的語言,是用於描述軟體解決方案的語言。
《UML2.0實戰教程(Trufun)》中就簡單的介紹了使用UML進行面向物件設計的方法。而它所形成的軟體解決方案,就可以透過某種方法轉換成程式語言。《UML與軟體建模》第十二章中有介紹。