一門編程語言如何理解?

是誰在死記硬背學編程?

沒錯,是我!

記得剛開始學編程那會兒,沒有任何計算機基礎,編程語法大多靠背——C++語法,操作系統各項定義,計算機網絡各種協議......

後來我發現,不只我一個人這樣學習,身邊不少同學都是如此,認爲學習一門編程語言最重要的就是掌握其語法。所以爲了將語法爛熟於心,最直接的方法就是記憶。

我們記憶了什麼是常量,什麼是作用域,什麼是多態......

看到這裏你可能覺得我會說:編程語言不重要,編程思維纔是最重要的,那麼問題來了,到底什麼纔是編程思維呢?我並不是來宣揚這句編程屆名言的,因爲它不適合一個初學者,初學者可能既不知道什麼是編程思維,也對編程語言比較生疏。

我想分享的是:學習編程語言的語法確實很重要,只有理解、熟悉了語法才能更好地應用一門編程語言,所以我們去背誦記憶編程語言的語法也是可以理解的,不過這可能不是最好的辦法。

光憑記憶語法,是很難學會編程的,反而是用這門編程語言一段時間之後再回過頭看看那些語法,說不定突然就理解了。

 

在學習python中有任何困難不懂的可以加入我的python交流學習QQ羣:932749660,多多交流問題,互幫互助,羣裏有不錯的學習教程和開發工具。資源分享

其實編程語言的語法也是可以通過理解來學習的。

舉一個我大學時剛學C++時遇到的一個語法問題:我們稱它爲const問題。

可能有同學沒有學過C++,我簡單解釋一下,const是一個C++的關鍵字,最常用來定義常量。譬如:

const int MAX_VAL = 23;

const string SCHOOL_NAME = “Peking University” ;

那麼我們把MAX_VAL稱爲整型常量,把SCHOOL_NAME稱爲字符串常量,這些常量在其生命週期內其值都不能被修改。

 

上面兩個語句是很好理解的,再看看下面的呢?

const int * p=&n;

int * const p;

const int *const p;

上面三個語句看起來就不是那麼好理解了吧?我剛學習const語句的時候也被這些複雜的語句給難到了,只能死記硬背,按順序,這三個語句分別是:

const int * p=&n; //指向整型常量的指針,它指向的值不能修改

int * const p; //指向整型的常量指針 ,它不能再指向別的變量,但指向(變量)的值可以修改

const int *const p; //指向整型常量的常量指針,它既不能再指向別的常量,指向的值也不能修改

很明顯,p是一個指針,並且指向常量,這兩點大家都能輕而易舉地看明白。難點就是const到底控制着誰,誰不能被修改?

之前遇到這種問題我也是死記硬背的,不過後來就慢慢地理解它了,因爲C++作爲一門流行了那麼久,那麼多人用的編程語言,這其中一定有它的設計哲學。

 

問題來了,如何去理解呢?

很簡單,const修飾誰,誰的值就不能變,這其實和英語中不同詞性單詞的位置排列一樣。對於一個名詞,我們找離它最近的const。

如下面飄紅的詞:

const int * p = &a;

int * const p = &a;

第一個const修飾的是 int ,int指代的是整型變量,也就意味着,指針p指向的值是不能修改的,也就是a的值不能變,但是p還可以指向別的變量,比如說指向b。

第二個const修飾的是p,p指代的是指針,也就意味着這個指針不能被修改,因爲指針變量存的是地址,也就是說p存了一個地址後就不能存其他地址了,換句話說就是它不能指向別的變量了,但是p指向的變量的值可以改變。比如p指向a,a原來等於1,現在我們可以把a的值改爲2,但是p在生命週期內只能指向a,不能指向b或者其他值。

那麼const int *const p 就很好理解了,它指向的值不能修改,也不能再指向別的變量。

感興趣的同學還可以用這個套路去理解一下 const this 指針,看看是不是適用呢?

以上用一個小例子分享了一下如何去理解一門編程語言,其實可以通過理解學習編程的地方還有很多,比如形參、實參、傳值、傳引用、函數指針、友元、多態、重載等等等等,大家都可以嘗試換種思路去理解,很多知識點一下子就能明白啦。

 

我們需要記住,學習編程的出發點不是應付考試。

當然,除了編程語言,很多其他的知識,如軟件分層、設計模式,都是水到渠成式的設計。

大家別忘了點個贊喲!
 

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