• 歡迎來到高博應諾!
    0512-62955981
    高博應諾

    我適合學習哪種編程語言?

    2019-02-20 3779

    入門編程語言選擇的一個需要考慮的因素是初學者的背景與動機。

    不同的編程語言有著不同的抽象層次, 有些更偏向硬件的工作原理,有些更貼近人類的思維方式。以Python和C為例,

    更像英語,基本的思維方式也更類似自然語言,而C則更類似于計算機硬件本身的工作原理。 對于初學者而言,如果你的背景屬于對計算機底層原理不熟悉的一類的話,學習C會帶來一些困擾。如果與此同時,你的動機是要使用編程語言來解決你的領域知識,而不想了解更底層的細節,Python會比C更適合。

    需要澄清的是,這并不是說Python簡單,我覺得Python遠比C要復雜,C語言本身的所有細節都在K&R一本書中說得清楚,而卻從未見過一本Python的書籍能涵蓋這門語言的所有細節。

    其實主流的語言C/C++, Python, Pascal,Basic, JAVA, C#都可以作為入門的編程語言。因為它們都存在一個具有足夠表達能力的語言子集,優秀的入門書籍,成熟的庫,以及強大的社區的支持。所謂選擇最好的入門語言可能是一個偽問題,而真正的問題是當你選擇了其中一門語言后,如何選擇合適的學習方法。

    學習一門編程語言,應該是容易的,因為計算機語言本身的特性只是它的語法。而計算機語言的語法無外乎是表達以下幾個方面的概念:

    1. 數據的表達 常量的定義 變量的定義 結構體的定義 類的定義

    2. 控制流的表達 順序語句 條件語句 循環語句

    3. 封裝和抽象 函數的定義和調用 類的定義和調用 庫,模塊,命名空間的定義和調用

    而當對這些概念有了基本的印象并學會了用一門計算機語言表達這些概念之后,接下來對于初學者來說最為重要的應該就是三件事情,掌握:

    編程范式基本的數據結構,算法對應語言系統庫常用的API

    常見的編程范式有:

    面向過程的范式,這個應該是對于初學者而言最為容易理解的方式,幾乎所有的主流語言都支持這一范式,初學者應當首先學會這種范式面向對象的范式,這個應當是最為主流的編程范式,從軟件開發的角度看, 它的優點在于能夠用面向對象的方式貫穿軟件開發的整個生命周期,包括軟件的設計、編碼、測試函數式編程,在并行計算的時代,函數式編程的范式將會成為另一大主流,推薦對其做一些了解。

    算法是計算機科學的靈魂,它的意義在于讓你理解計算機的工作方式的本質。對于初學者而言,不需要掌握過于復雜的算法,但是應當熟練地掌握基本的排序、檢索、遍歷的算法。數據結構亦是類似,初期掌握數組,鏈表,棧,隊列,哈希表,棧即可。

    系統庫的意義在于可以大幅提高你的開發效率,雖然重造輪子是程序員的一大樂趣。但是在實際工作中,我們可能更多地需要追求效率,而系統庫是過去優秀的程序員的經驗的結晶,往往在性能和強壯性上都做了大量的優化,一般來講都會比我們自己的實現要好得多。正因如此,學習和掌握系統庫雖然枯燥(初期要記憶大量的API細節),但是卻是一筆非常值得的投資。

    以下想說說關于學習曲線的問題,初學者最大的障礙可能就是遇到問題得不到解答。不過,如今的學習條件跟當年互聯網不發達的時候相比已經好得多了,有這么多優秀的問答網站,學習資源,百科全書可供使用,比如: 1. 百度知乎 2. stackoverflow 3. wikipedia 4. 美國一流大學的開放式課程。

    我推薦的學習方法是: 1. 選擇一套優秀的學習資料,它可以是書亦可以是視頻 堅持從頭到尾學習下來,遇到問題通過google來尋找答案或者上問答網站提問

    部分語言的優秀的入門教材 C: C Programming Language JAVA: Java Programming Language, Stanford's the programming methodology C++: C++ How to Program Python: Dive into Python, Learn Python the Hard Way,A Byte of Python

    2. Practice Makes Perfect,提高編程水平一定要勤加練習,推薦使用在線測評網站練習。 比較適合新手的在線測評網站: USACO Euler ProjectTopCoder

    當你成功地寫出自己的程序并通過測試之后,停下來,想想是否還會有更好的實現方法,總結自己在實現過程中遇到的困難,并且閱讀比你更聰明的那些程序員的方法,閱讀優秀的代碼會讓你學到很多。然后再嘗試用更好的方法去實現。

    3. 多分享,寫博客或者來知乎,SO上回答他人的問答,幫助別人不但讓你感到有成就感,其實也是提升自己的手段,因為只有當你能解答他人的問題之后你才是真正地理解了這個問題。

    相關閱讀

    ?9.9元?Java開發、PS設計7天挑戰班,火爆搶座中...
    国产大全2019最新国产