近期。在交流羣裏經常有苦逼小白問如何學編程。對編程有興趣但無從下手。這是個龐大到讓大神們「無言以對」的命題。web
在知乎、CSDN等論壇上,不少同行也對此類問題進行了探討,小編就當中承認度較高的回答進行了整理,以望給糾結的菜鳥們一些幫助,也歡迎大神們補充和拍磚。算法
一、決定學,要有興趣並且是真正的下定決心數據庫
興趣和耐心是老生常談的話題,小編不在此嘮叨,僅僅要記住一點。現在程序猿工資差別很是大,有能力的程序猿享受高薪。但僅僅是略懂的僞程序猿可能找不到工做,假設想靠寫程序生存生活,就在興趣的基礎上認真學習。編程
二、學什麼,編程語言的選擇也是剛開始學習的人的困擾數據結構
語言僅僅是工具而已。假以時日,每個程序猿都能熟練掌握一門甚至多門語言。也會隨着技術的發展學習最新、最方便的新語言,相比語言解決這個問題的思路和方法更爲重要。編程語言
但做爲剛開始學習的人。C和Python是最被承認適合剛開始學習的人的編程語言,但由於它們自身的特色,這兩種語言也有必定程度上的對立性,固然其餘語言也有被選擇的理由。工具
C語言入門門檻較高,學習難度相對較大,但不少語言都受到C的影響。基本概念的東西理念通用,學會了C能打下紮實的編程基礎。也減小了之後學習其它語言的難度,總之學習C語言是先苦後甜,剛開始要對本身狠心。post
選擇C的緣由:學習
一、大部分的數據結構、算法都是C語言寫的; ui
二、藉助C能夠學習不少其它的計算機知識,瞭解計算機。瞭解底層;
三、C語言是永恆的,門檻高但是之後受用無窮;
四、C 的設計是 Unix 哲學的體現,薄封裝、透明、緊湊、一致等體現得淋漓盡致。
不選擇C的緣由:
1. C貼近底層, 因此可能會讓你過早地陷入底層的細節, 但是底層的細節並非普適的. 這與解決這個問題的思路學習相悖;
二、難度相對大。不easy看到成效,不利於剛開始學習的人堅持學習。
Python對剛開始學習的人比較友好,相對easy,功能也比較全面,easy看到效果。下降剛開始學習的人的厭煩情緒。
選擇Python的緣由:
一、功能很是強大拓展很是廣。上得web、下得腳本、畫得了gui、當得了server;
二、語法簡單什麼平臺都支持;
三、省略了很是多細枝末節。更easy理解;
四、Python基於清晰的語法和直觀的問題解決方式,還有其強大的跨平臺GUI工具,能激起不少剛開始學習的人的興趣。
不選Python的緣由:
easy形成基礎差,到後面會有很是多基礎底層的概念混亂。
三、怎麼學
編程是操做性很是強的一門知識,看書少不了,但僅僅有學習和實踐相結合才幹起到很是好的效果,一種學習方法是看書->研究書中樣例->本身作些東西->網上找資料->看書。
研究經典教程是學習不少知識的重要方法,但看書必定要看透,學C語言時一直看到所有C的入門書籍都沒有新語法。
非科班出生最好先閱讀一些計算機原理和基礎知識方面的書籍,利於之後各類知識的融會貫通。
編程語言的教程各類平臺上都有很是多介紹。也有各類推薦,小編建議多看一些推薦,每個人都推薦的效果應該不錯。
計算機導論類:
計算機科學技術導論》、《深刻理解計算機系統》、《現代操做系統》、《數據庫系統概念》、《數據結構》、《編譯原理》
C語言:《C Primer Plus》 《C程序設計語言》 《C語言程序設計:現代方法》 《C陷阱與缺陷》做者凱尼格 《編程精闢》做者Steve Maguire 《The C programming language》
C++(推薦博客):《Problem Solving with C++》
階段一
《C++ Primer》
本書對C++基本概念、技術、以及現代C++編程風格進行了全面而且權威的闡述,是C++剛開始學習的人的最佳指南;本書可以幫助你編寫有用的程序,而無需首先精通每個語言細節。對於中高級程序猿。本書也是不可或缺的參考書。
《Essential C++》