剛剛入學的學弟們總會抱怨本身的學校差,不是211,不是重點,甚至不是本科,不得不認可,學歷有時候會決定你的起點,不過相對比較起來,來到計算機專業是你最幸運的事情,若是你學的是物理,數學,那麼在一個校風不好,老師不怎麼負責的學校裏恐怕很難成長起來,若是你是一個電子專業的,那些昂貴的電子設備可能一個普通學校不可能會有。可是學計算機就不同了,All you need is an computer.由於互聯網就是這些搞計算機的人發明的,天然互聯網上的計算機自學資源也是最豐富的,你能夠隨意瀏覽牛人的博客,Stand on the giant`s shouder.
//todo:extending this程序員
這是一顆計算機樹,咱們基本上都是關注與計算機樹的枝葉部分,我記得以前有一句話,程序 = 算法 + 數據結構
但是如今實際開發中,程序 = 業務邏輯 + API。
隨着高級語言的興起,爲咱們簡化和封裝了大部分數據結構和算法。這提升了生產力,也讓許多人忽視了計算機的根基,侯捷曾說過,勿在浮砂築高臺,說的就是如今的開發者過於浮躁,只流於頂層api和framework的使用,不知其因此然。因此中國有大量的低端程序員,而中高端程序員廣泛少於印度等國家。
若是以將來的職業分類,我想大部分人之後的工做能夠分爲兩大類。算法
他們天天都在看最新的論文,寫代碼不多,可是內涵大量算法知識,工做主要在調整算法參數。
他們的做品以論文居多,一般寫出算法給出文檔,就交給程序員去實現啦。segmentfault
他們大部分在編寫企業內部應用,如erp系統,企業管理系統,等等。
還有作手機APP開發的,開發各種APP和遊戲。
還有給程序員作開發的,各種的IDE,Framework,Language,Library。
還有作Web開發的,如 作網站,作Web Application,作Web 2.0的東西,作電子商務,作Web服務。api
給各類手機開發底層驅動,給電子設備開發程序,如路由器,電視。
各類各行各業的電子設備的內部軟件。
todo:extending this數據結構
語言入門數據結構和算法
關於語言入門,一提及來程序員們的口水戰就開始了,支持最多的是C,其次C++,而後就是各類高級語言了,Java,Python等等。
我這裏更傾向於Java語言,由於都是類C語言,語法上大同小異,初學者須要創建一些基本的語法概念,而C的東西Trick太多了,容易讓初學者迷糊,打消初學者的積極性,並且Java如今不論是學術界仍是工業上,都有普遍應用,入門足夠簡單,不會有C裏面那麼多不規範,或者說Trick,讓初學者犯迷糊,其次,對於一個初學者,學會了C,基本上啥也幹不了,我指想要編寫一般意義上的應用程序根本無從下手,而Java入手則很是容易,想搞ACM,沒問題,寫圖形界面程序,沒問題,寫安卓,能夠,作網站,能夠。
Java入門推薦書籍:Think in Java
Java入門在線學習系統推薦 http://www.fenby.com/course/list/1003學習