想提高編程能力,請大家評價這種學習方法是否可取?

IT相關的書,我分為工具書、理論書(又分為計算機各領域導論和數學各領域導論)。

1、在公司以實踐為主,遇到不懂的地方就查工具書。不需要一次性把工具書從頭到尾細細品讀。

2、業餘時間閱讀理論書(計算機各領域導論和數學各領域導論)有了各種導論就有了必備知識和方向感,以後需要往哪個領域深鑽,比較容易;

用下圖表示:

===============================================

理論書,主要是讀導論性質的書,因為我覺得實戰遇到的情況可能會像下圖:

===============================================

核心思想就是:做出越來越有水平的項目才是看書的根本目的,不要為了學習而學習(與做理論研究的做法不同)。導論是往領域深層研究的一扇門。學好導論,項目帶動深層的學習,深層的學習帶動項目往高水平發展。

以上就是我的全部觀點,請大家指導一下,歡迎提出不同見解。如果我的問題很無聊,希望看在我花了1小時左右畫圖的份上,不要對本人加以漫罵或抱怨,在下很玻璃心的,謝了。


與其把IT書籍分為理論和工具,我認為理論與實踐更貼切。有一些書籍則是理論與實踐兼顧的。

每本書的大綱結構不太一樣,難以簡單說這類書應該怎樣讀,那類書怎樣讀。有些書是適合順序閱讀,有些書可以只讀有興趣的部分。像問題中提到《C++ Primer》,編程語言的書籍通常不是實踐時再閱讀某些章節,而是應該完整地讀一遍(加上練習),理解到有什麼概念、語法、庫可用,才在實踐中使用的。重讀時只是為了重溫一些細節。

注意理論書籍不止於「導論」,導論只是入門而已,之後還有很多更專門的理論書籍。

我覺得「提高編程能力」要考慮到對編程的通用部分(編程語言、演算法、軟體工程等),並且要學習一些應用領域相關的部分(分散式系統、計算機圖形學、人工智慧??)。許多學生可能因為未找到職業發展方向,會較容易忽略後者。但當進入工作後,應該儘早選擇一些領域相關的部分深入學習。


我自學了一年半的計算機,對學習方法也只是知道點皮毛,但我感覺你這方法挺好。

邏輯很簡單,在項目中學習,知識是碎片化的,然後你通過讀理論書,將他們體系化,這不很好嗎?而導論書是最容易建立體系的。你要自信。


入錯行系列


直接讀書,不要逼逼。

讀多了自然就知道了。


光靠看書你不可能學會編程,更不用說提高能力。

做項目為主。看書為輔。

思考與總結為主。

你對於書的分類基本正確,在編程範圍內,在管理學範圍內。

類庫指南,入門教程,這些是工具書。我只看類庫作者寫的官方指南。二手資料不看。入門不看。寶典不看。講義?講義是什麼東西,能吃嗎?

除此,還有大牛博客,能幫你從另一個角度理解。

主題社區能讓你有更寬闊的視野,與時俱進。

開源社區也逛逛吧,多發現一些牛人,看看他們寫的程序,拿回來運行運行,玩玩。

對你感興趣的主題,找些開源項目,分析其中的代碼,逆向總結其中的模式,然後在其他的項目中借用。

經典名著(程序員必讀之類)大部分是實踐技巧,也有關於項目管理學的理論。然而,這些理論,是需要你有一定的編程經驗才能理解的,同一段話,經驗不一樣深,理解也不一樣深,常讀常新。

如果你想寫出牛逼的程序出來,任何一本書都幫不到你。因為:

你必然要用到任何書中都沒有講到的技術。

你必然要解決沒有第二個人解決過的問題。

你必然要具備任何書中都不曾告訴過你的,任何博客也沒講過的——嗅覺,就是潛意識告訴你,應該這樣做決定,沒有任何道理。

編程是一門手藝,記住這一點。

雖然我們有軟體工程,甚至有軟體工廠,都無法改變這個事實,忽略人的主觀因素的項目,都會失敗。


The only way to learn a new programming language is by writing program in it.

---- &


*首先聲明以下作答僅代表個人意見!!*

這個看人,像我看視頻多於看書,因為感覺看視頻比看書更容易接受到記憶里,但是國內一些視頻會出錯,於是需要用書輔助學習。。。

關於理論類的教學視頻可以在網易公開課中找到,比如MIT的演算法導論、斯坦福的抽象編程balabala…… 課上需要的課本都可以到網上買

工具書在前期學習基本語法時很有用,到後面學各種API時網路的效率會比工具書高很多


提高編程能力最有效的方法就是有一個有水平的產品經理和一個成長的項目

當你發現水平不夠的時候自然就知道往哪提高了,在項目中成長是最有效的


我總結在 http://blog.csdn.net/moon_prince2013/article/details/48323733

之所以提出學習計算機各領域導論,不是因為老師這麼教我就這麼說的。而是一方面我發現編譯器、手頭使用的各種第三方工具,這些在淺層意義上講,只是工具而已;但是從深層次來講,其實它們並不是工具,而是「建築材料」的一部分——混合在你寫的代碼之中。所以,如果我們想寫出功能更強大、更高質量、更高性能的代碼,必須知道編譯器或者其他工具對你的項目做了什麼,出了問題怎麼修改——這時容易涉及到各種計算機理論,而且此時就非常強調你的閱讀大型代碼的能力。如果不追求更高層次的技術境界,學那麼多理論就顯得不必要。本人也只是作個探討而已,不追求老師、父母耳提面命的所謂「標準答案」。

我對「什麼是程序(Program)」的理解


推薦閱讀:

考慮到未來人工智慧的發展,應該學習C++/C語言還是Python語言?
大學理科生零基礎自學計算機和編程有哪些書籍和方法比較好?
對於一個程序員來說,寫代碼用台式機好還是筆記本好?
如何系統的學習 Unity 3D 中的 shader 編寫(nvidia cg 編程)?
為什麼緩衝區能提升性能?

TAG:編程 | 計算機科學 | 應用計算機科學 |