來源:嘀嗒嘀嗒 作者:朱赟 2018-06-14 11:16:47
避免看到最后說我誆你,這篇其實應該是《我是如何學習一門程序語言的》。
對我而言,不同的語言,學習的方法似乎也不太一樣。
最早的時候都是在學校里學的,比如 Fortran、C、C++、Java、OCaml 等。通過正式的課程去學習一門語言,方式會比較固定和統(tǒng)一,都是上課、做作業(yè)、以及編程作業(yè)。這種方式通常可以比較系統(tǒng)地了解語言各方面的特性,而實際實踐還是要看各人的機遇和選擇。所以有一些語言,上完課之后,卻是很少再用了。
離開學校后,很多工作中再接觸到的語言就屬于自學了?偟恼f來有三點感觸。
一是不要為了學習一門語言而學習。至少你知道自己在不遠的將來有很大可能性會用再去學。因為學了一門語言而不去實踐,除了對語言特性能有些了解,其實不會有什么用。因為很多東西肯定會忘掉。這有的時候和一門說話的語言一樣。大學的時候覺得好玩學了日語和德語,然而從來沒有真正的應用場景,所以都忘的差不多了。都不好意思跟別人說我學過。不過以后需要用的時候可能學起來還是比從頭開始快些吧。
二是不同語言別人口中的學習的難度和你自己學起來覺得的難度會很不一樣。原因就在于你已經(jīng)熟悉掌握的語言其實是你的底子。比如一個已經(jīng)熟悉 OO 編程的人,再學另一門 OO 語言就會相對輕松;一個已經(jīng)熟悉函數(shù)式編程的人,再學習另一門函數(shù)式語言也會比從沒接觸過的人容易的多。
但這僅限于相對輕松。每門語言都還是有很多區(qū)別于同類語言的特性。還有很多語言,是綜合了多個類型語言的特性,再做了不同的權衡。即使是看似語法很相近的語言,可能實際使用起來卻又有很大的區(qū)別。一個眾而周知的例子就是 C++ 和 Java。二者都是典型的 OO 語言,然而使用起來很多思維方式卻是有著極大的差異。因此,學習一門語言很忌諱膚淺的覺得 “這個和我知道的 X 語言差不多”,然后想當然的在使用中套用一些 X 語言的思維。
三是因為工作時候?qū)W習語言通常都是邊用邊學。一方面,這比在學校時候能夠?qū)W的更快,因為你有使用的場景,可以不斷練習。而且周圍很多高手可以討論,還有別人的代碼可以參考,更容易積累實戰(zhàn)經(jīng)驗。而另一方面,直接上手沒有系統(tǒng)學習很容易想當然,很容易以偏概全。這又必須在工作以外自己主動學習理論知識來彌補。
說幾個我工作中學習語言的例子。
首先說 Scala。需要用 Scala 的時候,是一個別組的項目有特別緊的 Deadline,我因為一向比較 “手快” 且對業(yè)務邏輯比較熟,所以被借調(diào)過去幫忙。那時候我并沒有學過 Scala,但是因為時間關系,必須立馬上手。好在面向?qū)ο笳Z言和函數(shù)式設計語言我都有比較好的底子。所以在已有代碼庫的基礎上寫一些新的函數(shù),而不需要我去寫架構代碼,總的來說還是比較輕松的。
相關推薦:
小升初試題、期中期末題、小學奧數(shù)題
盡在奧數(shù)網(wǎng)公眾號
歡迎使用手機、平板等移動設備訪問幼教網(wǎng),幼兒教育我們一路陪伴同行!>>點擊查看