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

程式設計師聯盟發表於2017-09-16

作者 謝恩銘 轉載請註明出處
微信公眾號「程式設計師聯盟」ProgrammerLeague
原文:www.jianshu.com/p/c2b85495c…

內容簡介


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

1. 前言


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

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

2. 建議


我推薦:或者從 C 語言入門,或者從 Python 入門。

這裡又得分情況來說:

  1. 如果你只是想用程式設計來完成一些簡單的任務,目標不是深入技術,那麼選 Python。有很多好處,入門快,成就感來得快,高效好用。
  2. 如果你要深入程式設計,想成為技術專家,特別是做嵌入式這樣對技術要求比較高的行業,那麼選 C 語言。
  3. 如果你還不清楚自己的未來發展方向,那請先弄清自己想要做什麼再來學程式設計。如果實在是前路迷茫,懵懂未知,那麼從 C 語言入門。因為你把 C 語言學了,你會發現 Python 入門太簡單了;反之不然。

3. 入門推薦


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

  • 如果你選 C 語言作為第一門入門語言,雖然開始會有些「疼痛」,但是至久必成為你的幫助。請看我的 《C語言探索之旅》 來入門。

4. 分析


當年我大學時才接觸程式設計,但一直沒入門(可以參看我的經歷:關於我)。

總結一下 C 語言作為第一門程式語言的好處:

  1. 基礎深厚

現在你看到的大部分程式語言都是借鑑了 C 語言或者用 C 語言寫成的,比如 Java,C++,C#,Python,Go,JavaScript,Objective-C,Swift,PHP,Perl,等等。

可見 C 語言在被設計出來時是多麼具有劃時代意義。大部分現在所用的作業系統也用到了 C 語言,比如 Unix,Linux,Windows,Mac OS X,iOS,Android,等等。

可以說,C 語言影響了全球的計算機系統,套用指環王的經典臺詞就是「One language to rule them all」(意思是:一門語言統領其他語言)。

當然了,C 語言最初是用 B 語言寫的,但今天卻幾乎沒有人在用 B 語言了。可見 C 語言的飛躍,其原始碼設計之精良。

當時的程式設計師(如 C 語言之父 Dennis Ritchie)真的是超級厲害,我這種程度實在連遠眺都看不到他們的項背啊。


  1. 難度適中

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

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

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


  1. 嵌入式的主要語言

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

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

我個人認為:人工智慧和嵌入式是之後比較火熱的領域。

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


  1. 理解計算機

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

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

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

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

我那時就是先學了 C 語言,然後跟著清華大學王爽老師的《組合語言》(那時是第二冊,現在好像已經是第三冊了吧)學了彙編,超級淺顯易懂,寫得很棒。學完之後,發現對記憶體,位移,暫存器等等操作都有了撥雲見霧的認識,會感覺自己慢慢地領悟了程式設計。


  1. 學完 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 語言比較類似。

5. 總結


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

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

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

祝大家還沒入門程式設計的可以早日入門,已經入門的技術日益精進(需要學學物件導向思維,架構,設計模式,演算法等)。

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

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

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


微信公眾號「程式設計師聯盟」ProgrammerLeague
我是 謝恩銘,在巴黎奮鬥的軟體工程師。
我建立了程式設計師聯盟的 知識星球,歡迎加入。
關於我
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標杆直跑」

相關文章