非科班零基礎轉行計算機

博主先說一下自身條件:
211本碩,機械專業,因興趣驅動學習計算機相關知識8個月,目前已經可以用python語言進行web後端開發,熟悉計算機網絡、操作系統、計算機組成原理、算法等cs專業知識。
零基礎自學要把握住一個原則:編程語言與相應的類庫、框架都只是工具,cs基礎纔是真正的原理。只有理解了原理之後,纔可能去學習各種類庫,並進一步學習框架。所以cs的很多知識是相互交錯的,學習時建議幾個方面一起開始,不要沉迷GUI這種東西,也不要糾結編程語言的選擇。
下面說學習路線:
1、c語言。對於編程語言的爭論從來都沒有停息過。但是個人認爲只有學習了c語言,掌握了指針、結構體、宏這些東西之後,纔有可能進一步學習操作系統以及linux內核函數調用。這裏推薦的學習資料:k&r的c語言教程,網易雲課堂的老九學堂c語言課程(免費)。
2、數據結構。學完c語言之後,其實編程基礎還是十分薄弱的。這裏需要學習數據結構與算法進行進一步的強化。這裏推薦大話數據結構這本書,讀起來比較輕鬆。但這本書風格個人不是很喜歡,而且書上有地方有點小錯誤。但目前沒找到更好的選擇。
3、操作系統。推薦csapp、linux命令行與shell腳本編程大全。csapp不需要多講,中文版的翻譯還是很不錯的,很值得一讀。當然讀的時候很可能會卡住。這時候不要氣餒,可以學學別的調節一下。linux命令行的話,推薦裝centos7雙操作系統進行實戰,命令行的書照着學就行。中間有些涉及到硬盤的操作可以先跳過,後續用到了再學。
4、python語言。這裏可能會有朋友問爲什麼不是java。java當初也學過,但個人感覺java是編譯型、靜態類型語言,而且面向對象的程度也要強於python,寫個helloworld都要定義class,一般適合組織大型項目。但python類庫豐富,而且是解釋型語言,設計哲學也是爲了優雅與快速。這些特性個人感覺十分適合小項目的快速開發。學的時候順便看看html的相關的東西比如文檔,或者各種視頻就可以開發一個爬蟲了。當然也要懂一點http協議,這個配合網絡一起看。
5、計算機網絡。推薦自頂向下那本書,stevens的真的很難,不適合入門。這裏差不多用python寫個socket,然後wireshark或者瀏覽器F12抓個包看一下就差不多了。建議還是反覆讀,並且配合項目實戰,不然真的記不住。
6、計算機組成原理。推薦編碼那本書,難得的佳作。
7、到這裏基本上有很多可以選擇的方向了,比如機器學習,web前後端框架,或者linux內核,算法,數據庫,也可以學java、c++。推薦書籍:數據庫系統概念,或者算法導論與leetcode進一步學習高級數據結構與算法,stevens的apue來學習linux內核函數調用。如果網站開發的話,javascript必須要會一點,後端的話推薦django吧。java的話推薦java核心技術吧,比較友好,版本也很新。到這裏已經可以跟企業合作進行項目開發了,也可以根據這些進行以後方向的選擇。
本博客僅個人觀點,歡迎留言指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章