做者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。 轉載請註明出處。 原文:www.jianshu.com/p/c2b85495c…程序員
如今 IT 行業愈來愈火爆,許多朋友都願意入門「挨踢」,噢,不,當程序員。算法
那麼問題來了,對剛接觸這個領域的新人來講,選什麼語言做爲第一門語言呢?這是很關鍵的問題,由於這極可能決定了這位新人是「從入門到繼續」仍是「從入門到放棄」。編程
我推薦:或者從 C 語言入門,或者從 Python 入門。固然,也不排除從 Java 入門。設計模式
這裏又得分狀況來講:微信
若是你只是想用編程來完成一些簡單的任務,目標不是深刻技術,那麼選 Python。有不少好處,入門快,成就感來得快,高效好用。網絡
若是你要深刻編程,想成爲技術專家,那麼選 C 語言。數據結構
若是你還不清楚本身的將來發展方向,那請先弄清本身想要作什麼再來學編程。若是實在是前路迷茫,懵懂未知,那麼從 C 語言入門。由於你把 C 語言學了,你會發現 Python 入門太簡單了;反之否則。架構
若是你選 Python 做爲第一門編程語言,請看個人 最近迫切應學的編程語言 這篇文章,說的就是 Python 的好處和入門建議。數據結構和算法
若是你選 C 語言做爲第一門入門語言,雖然開始會有些「疼痛」,可是至久必成爲你的幫助。請看個人 《C語言探索之旅》 系列教程來入門。也能夠看《C Primer Plus》這本書來入門。編程語言
總結一下 C 語言做爲第一門編程語言的好處:
如今你看到的大部分編程語言都是借鑑了 C 語言或者用 C 語言寫成的,好比 Java,C++,C#,Python,Go,JavaScript,Objective-C,Swift,PHP,Perl,等等。
幾乎全部的操做系統都用到了 C 語言,好比 Windows,Unix,Linux,macOS,iOS,Android,等等。
能夠說,C 語言影響了全球的計算機系統和網絡。改編《指環王》的經典臺詞就是「One language to rule them all」(意思是「一門語言統領其餘語言」)(《指環王》原來的詩是「One ring to rule them all」(意思是「一枚戒指統領其餘戒指」))。
固然了,C 語言最初是用 B 語言寫的,但今天卻幾乎沒有人在用 B 語言了。可見 C 語言的飛躍,其源碼設計之精良。
當時的程序員(如 C 語言之父 Dennis Ritchie 丹尼斯.裏奇)真的是超級厲害,我這種程度實在連遠眺都看不到他們的項背啊。
C 語言比 Python,Java 之類難入門,可是比 C++ 簡單不少。
我以爲 C++ 不適合做第一門編程語言,太複雜,東西太多,基本就是「從入門到放棄」。要學 C++ 最好等入門編程以後。固然,若是你必定要用 C++ 做爲第一門編程語言,我也沒資格反對。
相比之下,C 語言的難度適中,也沒有那麼可怕。最讓人懼怕的指針、位運算(嵌入式裏面比較多左移右移,須要數學功底還能夠,否則那些十六進制,二進制會讓人頭暈的)、自定義數據結構、內存分配什麼的,其實也還好,熟能生巧。
C 語言在嵌入式領域算是舉足輕重了,特別是涉及到比較底層的嵌入式,固然你說 Python 也能夠用於樹莓派這樣的開發板,可是你不會 C 語言的話,通常去應聘嵌入式的工做仍是比較困難的。
如今這個時代,隨着可穿戴設備和其餘設備日益普及,嵌入式的前景確定不錯。
我我的認爲:人工智能和嵌入式(物聯網)是以後比較火熱的領域。
要入門和提升嵌入式,能夠參看個人這篇文章:什麼是嵌入式編程?如何入門和提升?
做爲程序員,若是你想要進階爲高級甚至偉大乃至史詩級別的程序員,必定得對計算機原理,編譯原理等等有所瞭解。
C 語言雖然也算是高層語言,但相對於 Python,Java 等,C 語言更接近底層。
入門了 C 語言,你會對計算機的內存、寄存器等原理有必定了解(推薦以後閱讀 《深刻理解計算機系統》 這本書,裏面的示例代碼是用 C 語言寫的)。
若是有時間,最好也入門一下彙編語言,能夠參看我寫的文章:學習彙編對編程有什麼幫助?如何學習
我學生時代就是先學了 C 語言,而後跟着清華大學王爽老師的《彙編語言》(那時是第二冊,如今已是第三冊了吧)學了彙編,特別淺顯易懂,寫得很棒。學完以後,發現對內存,位移,寄存器等等操做都有了撥雲見霧的認識,會感受本身慢慢地領悟了編程。
這點我深有體會,我自從借 C 語言入門了編程以後,後面再學習 Java,PHP,C++(仍是有點疼痛的,誰讓 C++ 這麼龐雜...),Python,Kotlin,等等就很容易了。
由於通過 C 語言的磨礪,你的編程思惟能力已經比較不錯,關於數據結構和算法等能夠經過作練習和我的項目來進行。
當年我一開始接觸 C 語言,感到比較難,就退避了,改去學 Java,結果也不得要領。直到我後來轉而去用 C 語言入門編程,學會了 C 語言以後,學 Java 變得順風順水。
以後你若是要進階 C 語言,推薦看看《C專家編程》,C 語言之父寫的《C程序設計語言》(不是譚浩強那本《C語言程序設計》,那本不推薦看),《C陷阱和缺陷》,中國人寫的《C語言深度解剖》。讀完這些,作完裏面的練習,你的 C 語言的水平就已經很不錯了。
固然了,若是你不是作嵌入式等對 C 語言水平要求比較高的領域,那不必把 C 語言學那麼深。
藉助 C 語言入門編程以後能夠學學 Java,Python,Kotlin,Go 語言(Go 語言被稱爲 21 世紀的 C 語言)等比較被看好的語言。
固然,PHP 這樣「世界上最好的語言」也是比較簡單的。PHP 的語法和 C 語言比較相似,畢竟 PHP 的解釋器是用 C 來寫的嘛。
有一點須要注意,就是學習編程語言,千萬不要貪多而不精。應該先學精一門語言,以後再去涉獵其餘的。
畢竟編程語言之間,基本的邏輯,條件語句,循環語句,類或結構體,都是互通的。通常來講,一通則百通。
有些朋友可能一門編程語言還沒入門或精通呢,就想要走馬觀花般去學新的語言,這樣最後什麼也不能精通。
祝你們還沒入門編程的能夠早日入門,已經入門的技術日益精進(須要學學面向對象思惟,架構,設計模式,數據結構和算法,等)。
要知道如今 IT 行業但是薪資很不錯的,並且將來前景絕對不堪憂,畢竟人工智能還要咱們來編寫和操控。
好了,我去繼續學習了,下次見~
才疏學淺,文章中如有錯繆或漏說的,歡迎留言指正補充。我也會更新文章。謝謝!
我是 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。 熱愛生活,喜歡游泳,略懂烹飪。 人生格言:「向着標杆直跑」