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