初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!
編程并不是說代碼怎么寫,框架怎么用,業務怎么轉換為代碼邏輯,這些都不是編程的要素(但卻是工作的剛需......)。我認為按照下面這個路線來學習編程,會使自己在學習的路途上少去很多問題(比如為啥會有多線程問題啊,什么是阻塞啊,為啥單線程模型反而更快啊,I/O為啥是阻塞的啊,為什么要報NPL錯誤啊等等等等,可能不太恰當,打個比方嘛)。
先學一門程序語言
首先得掌握編程的邏輯。
要學會把生活中的問題,用程序語言的方式來轉換。最簡單的學習就是直接學一門編程語言。可以是C/C++,Python,Go,Java, C#,Kotlin,Swift等等面向對象語言,隨便選一個喜歡的/以后會用到的都可以。
你會學習到變量、循環、條件判斷、類與對象、基本數據結構的一些用法甚至更深一些,獲取文件、控制欄輸入輸出等之類的東西。這是一門程序語言的基礎。
然后最好開始學習數據結構
因為此時掌握了基本編程語言的你,是完全可以把理論的數據結構轉換為代碼邏輯的。數據結構一般不需要了解一些底層復雜的機制,也暫時無需考慮并發問題。基本的線性表、樹狀結構、圖型結構、查找/排序算法,高級數據結構等等,慢慢學習并總結,嘗試用這些數據結構與算法去類比生活中的一些事務。那時你會發現,算法無處不在(就跟數學一樣)。
可以上LeetCode看看了
掌握了編程語言與數據結構,就去刷題吧。魯迅說過,刷題千萬遍寫代碼如有神。大膽地刷吧,不會就看答案,去理解答案,然后思考并總結其方法,最好是寫文章記錄下來。寫文章不要記流水賬,一定要你完全弄明白了再去寫,保證寫下來的都是自己所領會到的(雖然百分之九十九都是別人寫過的...承認吧這就是事實...)。LeetCode社區還會有一些比賽之類的,雖然我還沒去體驗過。
計算機是如何運作的?
如果你不知道計算機到底是怎么運作的,那你也很難去深刻理解你寫的那些涉及多線程、I/O、文件、網絡的代碼的原理。《計算機組成原理》《操作系統》《計算機》這兩本書也是計算機系學生的必修課。為啥要學這個,這不明擺著嘛。。
一開始挺枯燥的,慢慢看,有耐心一點。其中會有一些東西運用到數據結構,正好派上用場。
要理解處理器、磁盤、網絡、內存這些東西的基本運作方式,后面才能為你解決一些想不通的問題(比如讀取文件時為啥CPU可以暫時掛起啥都不干)。
看完這些知識后你也基本上理解了你寫的代碼到底是在干嘛了。
做一個網站或者手機App或者桌面App?
此時你應該基本掌握你學的這一門語言了。你想做一點什么,比如你學了Kotlin想開始做安卓應用?上google看開發文檔或者買本書照著學就行了。照著步驟一步一步來,不會難倒你的。也許會有一些疑問,為啥這個地方會這么設計啊,為啥這些東西可以這么用啊,此時去學一些設計模式,然后你也許就能理解為啥源代碼里一些東西會這么設計。
學網站的話,C#、Java、Python之類的都可以做到。另外由于網頁肯定是瀏覽器打開,所以你還得去學一學前端的東西(JS、Html、CSS)。難不到你的,只是做基礎網頁(基本的數據展示與輸入)的話用不了太多知識。網上各種資源都有,去照著做就是了。另外學一學基本的UI設計、平面設計知識會讓你寫出來的網頁更好看一些(起碼得配上自己帥氣的臉吧)。
后端比如Java(目前我只會這個),目前開發網站最需要的就是spring-boot了,百度去搜,或者掘金站內都有很多東西我就不講了,可以基于servlet也可以基于netty來開發,隨便你。甚至你還可以用kotlin來開發Java后臺項目。Kotlin你就理解為是Java語言的一種方言就好了,百分之百兼容Java,且某些方面更好用。在學這些框架的過程你也會更加深入地接觸到I/O、網絡、多線程的知識。學習一門語言到越后面就會發現知識都是相通的,前面學到的東西都能為你提供幫助。
桌面應用的話C#無疑是王者了。畢竟巨硬滿天下。但是也有一些其他方法可以開發桌面應用比如基于JS的Electron、還有基于C++的Qt。很多,我比較推薦C#(如果你沒學過C#可以去學一學,此時的你多學一門語言僅僅是一兩周就搞定的問題,當然我指的是能用而不是深入。多學一門語言也能讓你認識到不同的編程語言之間的差異與優缺點)。
繼續深入?服務器 or 客戶端
服務器自然就是指Java這類后端方向的領域了,而客戶端則代表了網頁前端、桌面/手機App這類方向。因為二者注重的方向出現了差別。所以深入工作的話,你就要在自己所擅長的領域多下功夫。
后端自然要去研究分布式、緩存、消息、SOA模型之類的東西,這些能讓你的后端網站擁有更健壯的體格,讓它們能夠長久地運行下去;你要多了解一下服務器Linux系統,因為以后會經常打交道的。后端的東西很深入,也許發展到一定程度你要根據具體的需求去創建輪子或者改造現有的輪子。任重而道遠吶~
前端則更加注重用戶體驗,界面交互邏輯、性能之類的,因為是用戶直接看到的、直接觸碰到的。畢竟客戶端就那么大(你面臨的可能是一臺十年以上的IE瀏覽器 / 一臺iPhone5 / 一臺小米2S,你懂的,如果人人都是Surface Laptop或者iPhone11Pro或者華為保時捷那就沒啥好擔心的了,不可能嘛),你要在有限的資源中不斷挖掘性能,具體我就不懂了咱暫時也不會~~
寫在最后
也許你需要學習一下英語,當然你會的話就當我沒說。編程畢竟源自國外,學的東西都是從國外傳來的,官方很多的資源都是英文版,所以英語格外重要。
也許不是很全面!但大概是一個比較正確的方向吧!希望對大家有幫助吧~而且我自己是一個C/C++的軟件開發工程師,如果你選擇的是C/C++的方向的話,自學C/C++編程難度很大,不妨和一些志同道合的小伙伴一起學習成長,也有一些源碼和資料分享!
筆者的C語言C++編程學習交流圈子,【點擊進入】微信公眾號:C語言編程學習基地
最后就以一份關于C/C++編程的學習路線來結束吧!
總結
以上是生活随笔為你收集整理的初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MapReduce算法形式四:mapjo
- 下一篇: 经典JS