放肆的學編程語言吧,讓10匹馬都拉不動你,一篇我的學習方法論

I think everybody in this country should learn how to program a computer, should learn a computer language, because it teaches you how to think
——Steven Jobs

這篇文章寫給每一個希望去學習編程的人,無論你的目的是為了當一個程序員改變世界,還是僅僅是一個工作之余陶冶情操的愛好。

不要怕

我的很多朋友都認為會編程的人很厲害,編程很難學,光是聽這個名詞就望而卻步,其實不然,學編程的第一步是學編程語言,既然是語言,那么就和英語、法語、德語、俄語這些自然語言一樣,但是難度絕對小于那些自然語言,如果你不相信,看完本文你就該相信了。

學前準備

學習一門編程語言之前需要有什么樣的準備呢?數學!哈哈~ 不要怕,這里的數學指的不是線性代數、離散數學、微積分,當然你要是會這些東西那就太好了,不會這些沒關系,你只需要會加、減、乘、除、取模運算,OK,你完全可以學編程了,而且絕對能學會,當然這個絕對是建立在你的恒心和毅力上的,最好有興趣驅動,否者學什么都難。

如何學—宏觀

首先你先必須知道什么是計算機,至少聽說過CPU、內存、外存等,大概知道它們是什么東西,還要會打字。

如果你是新手,那么我推薦的第一門上手的編程語言它應該長這樣:

1.有嚴格的數據類型判斷

為什么要這樣呢?因為有很多編程語言是弱類型的,意味著你聲明變量時不需要告訴編譯器它到底是什么類型,編譯器自動來推導,這樣一來對于新手來說就很難搞懂數據類型的概念,就容易出錯和疑惑。

2.語法結構大眾化

不要有太多花哨的語法,不然亂七八糟難以理解

3.抽象程度盡可能高

不要一上來就要求你懂硬件、操作系統等層面的知識,盡可能讓你感覺到寫程序就像寫文章一樣舒服

對于這樣的編程語言我還是推薦 Java 和 C#,他們滿足上面三個條件,Java的好處在于你可以寫個程序在任意操作系統上運行,因為這個語言是跨平臺的,C# 的好處是對于圖形用戶界面(GUI)的支持程度高于 Java,你可以寫任意的窗口程序,一定比寫命令行程序來的爽。總之無論你選擇哪一個,都是不錯的選擇。

很多大學一開始都是學C語言,這導致很多人都被誤導了,認為學計算機就得學C語言,當然C語言得會,但C語言和底層打交道很多,光是一個指針就足以讓剛開始學習的朋友看的兩眼一抹黑了,久而久之就堅持不下去了,不容易學好。我一開始學習編程就是從 Java 開始的,雖然我學完了 Java 甚至可以用 Java 寫一些不大不小的東西了,我還是不太懂底層的東西,但當我意識到這一點時,我開始搜索一些偏向于底層的東西時,我不用花太多時間就能多少了解一些,比如 Java 的引用類型,原來就是類似于指針這樣的概念,然后逐漸了解了內存的分配,什么是堆什么是棧,以及內存究竟是個什么玩意。這對我后來學 C 有很大的幫助,看到指針那一塊的時候,基本沒什么難理解的地方,只是遇到一些內存管理方面的東西時,稍微花點時間,因為在 Java 中你是不需要去關心內存上的事情的,有 GC 幫你,別疑惑GC是什么了,以后你就知道了。

綜上,所以我覺得起步時學 Java 或者 C# 是不錯的選擇,當然還有其他類似的語言,因為我不太熟悉其他的,所以就不亂推薦了,我推薦的都是我學習過的語言,保證靠譜。

那么怎么來學習呢?很多人說看視頻很LOW,對于新手來說,看書很難理解,看視頻才是最好的方式,當然如果你是大學生,有這個課,千萬別翹課,沒這個課就去旁聽,這樣下課不懂還能問老師,雖然老師可能行色匆匆,不要怕,攔住他~~

看視頻或者聽課的好處在于,你是以聽的方式來學習,而且還能看到老師現場敲代碼,能最大可能保證你不會略過代碼的任何一個細節,這個對于你的理解是有絕對性的幫助的,反之看書就不是那么回事了,首先你得要閱讀,可能還有讀不通讀不懂的地方,實例代碼也是直接就打印出來的,會導致很多細節你會不小心忽略掉,最重要的,就是當你遇到看不懂的地方時,你會發生兩種情況,死命的要看懂或者是略過,無論你采用哪一種方式,你最終都會昏昏欲睡,然后合上書本出去嗨了,至于在哪里看視頻,現在那么多慕課網站還怕找不到?

但是還是得買上一本書,當做上完課以后的參考,或者你整個課程結束以后再速看一邊,這個時候大多數概念都差不多了解了,讀不通讀不懂的問題就少了,這個時候就是查漏補缺的時候了。

最后,不要去刷書本后面的題了,去做項目,隨便找東西做,不用太大的項目,就想想自己有沒有需要的軟件,市場上沒有或者收費價格太高的,自己寫一個,相信你寫完一個項目之后,你對整個編程語言的了解會大大提高,水平能上升一個層次。

微觀

講完了宏觀的學習方法,再來講講微觀的。

無論你選了上述的哪一個語言,你都應該重點了解以下幾個內容:

1.基本數據類型

這是一個很基礎的概念,不懂這些沒法玩。

2.基本語法

基本的語法,包括怎么定義變量,循環語句,條件分支,方法/函數定義等,不懂這些也沒法玩

3.面向對象

這是一種思想,你會花很長時間去理解它,適應它,在這之前你會認為傳統的面向過程的編程方式是最好的方式,直到一個月后你會發現,臥槽,上個月我是SB嗎??

4.該語言自帶的數據結構

數組怎么用?集合怎么用?怎么遍歷它們,了解這些很重要,它們的使用率幾乎在120%以上。

暫時就想到這么多了,了解以上四個東西,之后你就平步青云了。

然后你可以在未來半年或者一年的時間里都用這個語言來做東西,學基于這個語言的技術,比如 Java 你可以開始去學 Java EE 、Struts2
Spring、Hibernate,學完這些,了解一些 HTML CSS 的知識,你就可以做動態網站了,然后看看 Android ,你就可以做移動開發了。一定要記住,多用這個編程語言寫項目,越多越好。到了一定程度就可以深入這門語言,比如 Java 買本 《Java編程思想》來看看,了解一下 JVM ,等等。

之后,你可以考慮學其他語言了,C啊 Python啊 Swift啊,有了前面的基礎,就學的很快了,這時候就不用看視頻了,因為你會發現,看視頻太慢了,根本不能自己把握時間,這時候買書或者直接看文檔會來的更有效率。

最后

學習是沒有止境的,希望從本文開始,能夠幫助作為新手的你順利入坑,我可能寫的還沒有很全面,盡管我盡可能的總結我幾年學習下來的經驗了,但總會有漏掉的地方,我想到新的東西我會第一時間更新文字,也歡迎各位大牛的補充和指點。

最后的最后,我最想說的是,學好一門語言,最重要的就是:做項目做項目 做項目 (國際慣例說三遍)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,581評論 25 708
  • TITLE: 編程語言亂燉 碼農最大的煩惱——編程語言太多。不是我不學習,這世界變化快! 有時候還是蠻懷念十幾、二...
    碼園老農閱讀 5,375評論 2 35
  • 人究竟是怎樣一種生物? 我走在人海中, 停下了自己的步伐。 一張張面孔, 迎面走來, 憂愁,喜悅,呆滯,銳利,慈祥...
    海王星1984閱讀 260評論 0 1
  • 飛云千里客京華,紅葉秋山共晚霞。 欲枕清風長醉夢,離歌一曲繞天涯。
    紫風鈴_閱讀 965評論 42 59