第一門編程語言選什麼好?

作者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。
轉載請註明出處。
原文:http://www.jianshu.com/p/c2b85495cea6

內容簡介


  1. 前言
  2. 建議
  3. 入門推薦
  4. 分析
  5. 總結

1. 前言


現在 IT 行業越來越火爆,許多朋友都願意入門「挨踢」,噢,不,當程序員。

那麼問題來了,對剛接觸這個領域的新人來說,選什麼語言作爲第一門語言呢?這是很關鍵的問題,因爲這很可能決定了這位新人是「從入門到繼續」還是「從入門到放棄」。

2. 建議


我推薦:或者從 C 語言入門,或者從 Python 入門。當然,也不排除從 Java 入門。

這裏又得分情況來說:

  1. 如果你只是想用編程來完成一些簡單的任務,目標不是深入技術,那麼選 Python。有很多好處,入門快,成就感來得快,高效好用。

  2. 如果你要深入編程,想成爲技術專家,那麼選 C 語言。

  3. 如果你還不清楚自己的未來發展方向,那請先弄清自己想要做什麼再來學編程。如果實在是前路迷茫,懵懂未知,那麼從 C 語言入門。因爲你把 C 語言學了,你會發現 Python 入門太簡單了;反之不然。

3. 入門推薦


  • 如果你選 Python 作爲第一門編程語言,請看我的 最近迫切應學的編程語言 這篇文章,說的就是 Python 的好處和入門建議。

  • 如果你選 C 語言作爲第一門入門語言,雖然開始會有些「疼痛」,但是至久必成爲你的幫助。請看我的 《C語言探索之旅》 系列教程來入門。也可以看《C Primer Plus》這本書來入門。

4. 分析


總結一下 C 語言作爲第一門編程語言的好處:

1. 基礎深厚

現在你看到的大部分編程語言都是借鑑了 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 丹尼斯.裏奇)真的是超級厲害,我這種程度實在連遠眺都看不到他們的項背啊。

2. 難度適中


C 語言比 Python,Java 之類難入門,但是比 C++ 簡單很多。

我覺得 C++ 不適合作第一門編程語言,太複雜,東西太多,基本就是「從入門到放棄」。要學 C++ 最好等入門編程之後。當然,如果你一定要用 C++ 作爲第一門編程語言,我也沒資格反對。

相比之下,C 語言的難度適中,也沒有那麼可怕。最讓人害怕的指針、位運算(嵌入式裏面比較多左移右移,需要數學功底還可以,不然那些十六進制,二進制會讓人頭暈的)、自定義數據結構、內存分配什麼的,其實也還好,熟能生巧。

3. 嵌入式的主要語言


C 語言在嵌入式領域算是舉足輕重了,特別是涉及到比較底層的嵌入式,當然你說 Python 也可以用於樹莓派這樣的開發板,但是你不會 C 語言的話,一般去應聘嵌入式的工作還是比較困難的。

現在這個時代,隨着可穿戴設備和其他設備日益普及,嵌入式的前景肯定不錯。

我個人認爲:人工智能和嵌入式(物聯網)是之後比較火熱的領域。

要入門和提高嵌入式,可以參看我的這篇文章:什麼是嵌入式編程?如何入門和提高?

4. 理解計算機


作爲程序員,如果你想要進階爲高級甚至偉大乃至史詩級別的程序員,一定得對計算機原理,編譯原理等等有所瞭解。

C 語言雖然也算是高層語言,但相對於 Python,Java 等,C 語言更接近底層。

入門了 C 語言,你會對計算機的內存、寄存器等原理有一定了解(推薦之後閱讀 《深入理解計算機系統》 這本書,裏面的示例代碼是用 C 語言寫的)。

如果有時間,最好也入門一下彙編語言,可以參看我寫的文章:學習彙編對編程有什麼幫助?如何學習

我學生時代就是先學了 C 語言,然後跟着清華大學王爽老師的《彙編語言》(那時是第二冊,現在已經是第三冊了吧)學了彙編,特別淺顯易懂,寫得很棒。學完之後,發現對內存,位移,寄存器等等操作都有了撥雲見霧的認識,會感覺自己慢慢地領悟了編程。

5. 學完 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 來寫的嘛。

5. 總結


有一點需要注意,就是學習編程語言,千萬不要貪多而不精。應該先學精一門語言,之後再去涉獵其他的。

畢竟編程語言之間,基本的邏輯,條件語句,循環語句,類或結構體,都是互通的。一般來說,一通則百通。

有些朋友可能一門編程語言還沒入門或精通呢,就想要蜻蜓點水般去學新的語言,這樣最後什麼也不能精通。

祝大家還沒入門編程的可以早日入門,已經入門的技術日益精進(需要學學面向對象思維,架構,設計模式,數據結構和算法,等)。

要知道現在 IT 行業可是薪資很不錯的,而且未來前景絕對不堪憂,畢竟人工智能還要我們來編寫和操控。

好了,我去繼續學習了,下次見~

才疏學淺,文章中若有錯繆或漏說的,歡迎留言指正補充。我也會更新文章。謝謝!


我是 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向着標杆直跑」

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