有一定基礎,如何快速學習程式語言

2021-06-09 17:44:24 字數 1476 閱讀 3741

對於有一定基礎的程式設計師,比如已經掌握了一門程式語言,對演算法有所了解了,怎麼繼續學習其他的程式語言?

方法的亮點不在於你用幾本書,更不在於你搜到了幾個tutorial和example,重要的是通過乙個特定的專案目標讓你有興趣去學、記得也特別牢,而方法的成敗關鍵在於你是否能夠把握由點及面的策略。就是說,雖然你是做乙個特定的目標,用到的程式語言的功能也有限,但你要學會從這些功能點,擴充套件到乙個功能面。有些抽象,舉個例子。比如你學php看到了foreach語句,你就用了,但你要學這門語言而不是做完這個專案完事的話,你就可以借這個機會把php的所有主流的迴圈語句都學一遍,什麼叫學呢?不是都寫一遍,而是記一下(至少記個索引),用雲筆記(evernote或有道雲筆記)記下來。你可能大腦記不住,可能做完這個專案就不用php了,但你n個月後又用php時候,直接翻開自己的雲筆記,就能迅速找到自己需要的知識了。為什麼這種筆記重要而且有效?懂暫存器的童鞋應該知道乙個針對最近使用的優化,用中文來說就是:你遇到的問題,你再次遇到的概率比你沒遇到的問題初次遇到的概率要大。可能說的有些絕對,但實踐表明是靠譜的。學語言中可能遇到的最痛苦的事莫過於你出現了個問題,但你記得你之前曾經花了大工夫把它解決了,但一時想不起來了又很難直接找到,又得重新再花大功夫解決一次。 

結束之前,我想說的是深入問題。其實,上面方法一直是我學習新語言的方法,證明還是比較有效的,雖然我不是哪門語言的專家(目前不是走這條路線),但是至少還是通過這些方法用了很少時間學到了不少語言。但問題在哪?深入!我想稍微接觸幾門高階程式語言的人都知道c/c++是相對最高效的。但還是需要很多優化,演算法的優化就不說了,你搞個冒泡來代替快排,這種程式就能出一些搞笑的效果,如排幾萬個數就卡半天;程式語言也是有不同的優化的,比如i/o、多執行緒、迴圈啥的,細節還是蠻多的,你如果單純做一些小專案,不苛刻自己,寫出來的卡卡卡但也能跑出結果你也不在意,或者pv沒高到讓你宕機的地步,這樣的後果就是不夠深入。那要怎麼才能真正深入呢?乙個更好的問題是:你怎麼知道自己是錯的!?這個問題有點彆扭,但其實是個很好的問題,**如果出錯了一般能被測試或實際使用測出來,那個叫做bug,我說的錯不是bug,是你沒做到最優化:比如你自己寫了個函式解決了乙個功能,但後來你自己又發現了當初那個方法可以用另一種方法來寫,效率更高,你就有開始想,你現在這個方法又有什麼「錯」呢?還有什麼更優化的方法已經存在但我不知道呢?這個問題是開放的,沒啥最好的解決方法吧,據我說知。可能的方法一方面是直接面對它的,但不一定有效,比如你做乙個專案,把你的專案跟開源專案的相比,就能看到大牛怎麼寫,你怎麼寫,另一種好一點的或許是你直接參加開源專案(你或許會想你自己搞乙個開源專案,但是你剛開始學乙個專案,我估計你的影響力還不至於把大牛吸引進來跟你一起fork),參與開源專案,如果社群夠活躍,你寫了乙個功能,但是大家發現你寫不好,就會重寫你的,這樣你就知道原來自己錯了;另一方面是間接解決這個問題,就是看一些「經典」的書或文章,當然,一般書是不會專門給你說某個具體的topic,有時候有,但比較少,可能只是某個章節有提到,或仔細講,你也很難帶著目的性去找他們,你就有空時候,翻一下那些書,增加一下自己對那些語言的理解,試想一下,如果你知道一門語言的迴圈語句是如何通過彙編實現的,你是不是更有可能寫出更高效的迴圈來呢? 

裝飾器基礎知識《須有一定函式基礎》

1 裝飾器本質是函式,功能是裝飾其他函式,即為其它函式新增附加功能。2 裝飾器需要遵循的原則 1 不能修改被裝飾函式的源 2 不能修改被裝飾函式的呼叫方式 即總結起來裝飾器對被裝飾的函式是完全透明的。3.特定場景 假如現在有10個函式,每個函式都有自己要完成的功能,呼叫的時候怎麼呼叫呢?即test1...

ubuntu下配置nfs服務《自己有一定的修改》

配置nfs服務用於共享檔案或者讓開發板掛載網路檔案系統 1 安裝nfs 伺服器 zhiyong beyond sudo apt get install nfs kernel server 2 配置 etc exports 在 etc exports中新增如下 nfsroot rw,sync,no r...

MySQL 購買商品價值超過一定值的人有哪些

有下列字段 姓名 name 商品 goods price 每個人都買了很多的商品,問 購買價值累計超過1w的人有哪些?如下 1 select name,group concat price sum price as sum from table name group by name group co...