用心分享,共同成長
沒有什么比你每天進步一點點更實在了
本文已經收錄至我的github,歡迎大家踴躍star 和 issues。
https://github.com/midou-tech/articles
點關注,不迷路!!!
為什么會出這樣一篇文章?
本來想寫點最近學習的東西,但是最近好多粉絲再問我一個問題。

於是我決定把我這個過來人的一些建議給到你們,希望大家少一些不必要的迷茫,多花點時間去學習該學習的東西,去做一些重要的事情。
剛開始學習編程的困惑
在剛開始學習語言的時候我也很糾結學什么語言好?這個問題我相信很多人在最開始學習編程的時候都會糾結,到底選擇一門什么樣的語言才能使自己在千軍萬馬的工作大軍中出奇制勝呢?總害怕選錯了語言導致自己未來競爭不占優勢。
我把各個語言的熱度榜拉出來看了。


其實看來看去都差不多,主流語言就那些。像極了股票市場的漲跌圖,起起伏伏。不過編程語言的起伏波動沒那么大。
就這個問題,我還問了一些工作的學長學姐,看看他們這些過來人都有什么樣的見解。還好我人緣好,他們都很耐心的給我講了很多,以下是他們給我的建議。
過來人的一些建議
一個在京東做雲計算的學長語重心長的這樣和我說,學習語言要看你以后准備做什么? 和你未來工作方向有關。簡單列幾個未來方向供你參考
如果你想從事和你自己專業(我的專業是電子信息工程)相關的方向工作的話,你可以好好學習C語言,匯編語言。因為你的專業以后工作方向在嵌入式和硬件編程方面較多。嵌入式編程講究的是嵌入,所以一定要小巧和輕量,C語言符合這個場景需要。
如果未來工作做純軟件的行業的話,你不應該局限於選擇怎樣的語言,工作需要什么你就學習什么語言,或者說項目需要什么語言你就必須很快學習這個語言,不過在學校學習還是建議學好一門高級編程語言。學好指的是學到精通,精通就不用解釋了。你要對語言有所見解,而不是簡單會用。
如果你未來想算法一類的工作,你就應該把精力放在算法鑽研上,而不是語言本身。
語言只是工具,就好比計算器一樣的工具,用計算器算題和設計、制造計算器是完全不一樣的。
大多數都是計算器的使用者,而不是設計生產制造者。完成一件事情可以選擇很多種工具,就好比學生喜歡科學計算器,倉庫老板喜歡那種很大聲的簡單加減乘除計算器就OK了。
一個阿里的學長告訴我
- 主流語言隨便選
- 學一門精一門,其他的都是觸類旁通
- 注重工具思想,同時也要注意工具出了問題該如何處理
看了他們對我的話語,我得到的理解是,選擇語言之前你要確定好你的未來工作方向(工作還是很寬泛的一個詞語,人的一生大致可分為學習、生活和工作三件事,這三件事將伴隨我們一生。學習和生活我們都能很好的理解,但是工作這件事大家可能會覺得有些不符合,有些人就是一生不工作,其實不然,"一個人的工作是他在社會中所扮演的角色。"),這樣有目標的學習一門語言才能更好的幫助你未來工作,當然同時也不要局限於一門語言,畢竟技多不壓身。 求點贊👍 求關注❤️
還有一個問題,當我們不是很明確未來到底從事什么工作方向時,我們可以去找尋下自己的興趣,其實大學很重要的一點就是找到自己的興趣方向,盡量讓自己的興趣和自己工作方向相結合,能拿興趣作為工作方向是再好不過的了。就像兩個相愛的人在一起,每天都會是開開心的。如果是因為某些原因讓兩個沒有感情基礎的人在一起,那只能靠在一起之后才慢慢培養相愛的感覺。后者固然是不好的,但是為了生活很多人還是被迫選擇了后者,趁年輕,趁還有機會,我希望你能選擇前者。
當然還有很多其他的學長學姐給了我很多不一樣的建議,但是總結下來就如下幾點。
- 找一門和未來工作相關的語言開始學,一定要學到精通。
- 要有工具思想,語言只是工具,工具是用來解決問題的。我們要做的靈活運用工具,了解工具的特性,順便如果工具除了出了問題你會修理工具,那就再好不過了。
- 不要在選擇語言上浪費太多時間,而應該在選擇工作方向上找到自己的興趣。
- 多花時間在工作方向上需要的其他技能上。
結合過來人建議之后我的選擇
聽了過來人的建議之后,這幾句經典涌上我的心頭 "林盡水源,便得一山,山有小口,仿佛若有光。便舍船,從口入。初極狹,才通人。復行數十步,豁然開朗。"
我的工作方向是后端開發,我也比較喜歡后端開發,加上大學本來就會開設C語言和C++語言。於是我很順理成章的選擇了C語言作為我的編程入門首選語言。
現在作為過來人說說吧。
從學術研究上看,編程語言語法都差不多。
從原理上看,編程語言都類似,對一門編程語言掌握到透徹后,再學習其它編程語言可以觸類旁通。
針對的是學習能力較強的人。有一定基礎之后,可以快速的學習另一門技術。
選擇語言沒必要那么糾結,但是編程入門我首推C語言,既有低級語言的高效,又有高級語言的抽象。C語言有很多特性,比如小巧,對操作系統很友好特別是linux操作系統(不要害怕linux,你工作以后100%會接觸linux,不管你從事互聯網什么行業,你都會或多或少的接觸到linux),運行速度快,支持匯編級別優化,可移植性好等等其他特性。當然也有缺點,比如開源框架少、不是很適合寫業務系統,面向對象支持不是很好。C語言作為入門語言會有助於你去了解操作系統的運行原理,內存控制原理,對這些的了解有助於你學習其他任何高級編程語言。至於學完C語言之后,你不用糾結接下來學什么,接下來毫不猶豫用C語言把數據結構與算這本書學完並實現常用的數據結構與算法。
說下為什么學完C語言一定要去學習數據結構與算法,有以下幾點原因。
- 趁熱打鐵,剛好鞏固C語言的語法和一些特性。
- 數據結構與算法是一門必修課,與未來從事什么方向無關(不要拿一些特殊職業出來鑽牛角尖奧)。
為什么我首推C語言作為編程入門的語言,而不是其他語言,並不是我覺得其他語言怎么的。除了以上說到的C語言的特性之外,還有一個很重要的原因,C語言幾乎是所有計算機專業和相關專業都會開設的課程,作為入門語言,學習成本小,和同學、老師交流起來方便。這些因素會促使你很快學精C語言。
再陳述一段事實給大家。
linux操作系統是C語言寫的;流行的PHP、python只是C語言的一個擴展庫;Java和Go起初也是用C/C++編寫;以后會用到的mysql、redis、nginx都是yongC語言實現的。
網上看到一段有意思的評論,分享下。

語言只是工具,更重要的是在於使用工具的人。C語言在大牛手里可以寫出來一個操作系統,在小白手里只能寫Hello World。
學完這些之后,你需要學習和你未來方向相關的技能了,比如未來是做前端、后台、算法、AL等大領域里面的小領域。扯遠了😁,繼續說選語言的事,作為一個過來人很正式的告訴你,你需要學好一門面向對象語言即可,其他的語言只需要在工作中用到的情況下花幾天時間就可以搞定,或者現學現用。因為你只要把握了一門C語言+一門面向對象的高級語言,其他語言的學習會觸類旁通,學習成本會非常小。學通了C語言,意味着你對變量類型、邏輯結構、函數棧、內存模型,程序編譯原理、匯編級別優化都會掌握(看我的關鍵詞"學通",不是簡單的學個hello world)。學完一門面向對象的高級語言,意味着你對面向對象的三大特性(繼承、封裝、多態)、抽象、設計模式有了很好的把握,這個時候工具使用已經到了很熟練的狀態了,可以試着用工具去創造內容了,比如去github找幾個項目練練手,或者用編程解決日常生活中遇到的問題。 求點贊👍 求關注❤️
只要你是方向上沒錯,選擇語言很so easy。

我總結了一份C語言的知識點思維導圖,后期的文章會寫一寫關於C語言中的難點內容,比如程序的編譯運行原理、函數棧調用過程、指針、內存管理等。github上有我的寫作大綱,喜歡的可以star 和 issues。github:https://github.com/midou-tech/articles。大家在看的過程中遇到任何問題都可以給我發mail:2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com 我會每周三和周六的時候回復大家的郵件問題(工作繁忙,自己也需要沉淀,多理解下)。

我喜歡那些閃光的東西,比如冬日的雪花,天上的星星,還有你的眼睛。
都看到這里了,奮斗中的你還不為同行點個贊, 求點贊👍 求關注❤️
求點贊👍 求關注❤️
龍躍十二更多精彩文章:
如果有人想發文章,我這里有償征稿(具體細則請微信聯系),歡迎投稿或推薦你的項目。提供以下幾種方式投稿
去我的github提交 issue:
https://github.com/midou-tech/articles發送到郵箱:
2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com微信發送: 掃描下面二維碼,公眾號里面有作者微信號。
精選文章都同步在公眾號里面,公眾號看起會更方便,隨時隨地想看就看。微信搜索 龍躍十二 或者掃碼即可訂閱。
