心態這不但是學習一門新的語言最重要的,而是對任何的學習都是最重要的。下面是書中的描述,非常的精彩,特別是那個比喻:學習一門新的語言的時候,要利用以前所學的語言的功底,但是也要保持開放的心態。有些人執著於一種理念:這就是寫所有程式必須遵循的方法。我不是說那種語言,但是某些語言,令人執著於這樣的理念。當開始學習新語言的時候,他們會批評這種語言跟真正神的語言的所有的不同之處。當使用新語言時,他們極力使用神的語言的方法去寫。這樣,你就會錯過這個新語言真正的獨特之處。
這就像你本來只有乙個榔頭,有人給了你乙個螺絲刀,你說哎,這不是一把好榔頭,但是我應該可以倒著拿螺絲刀,用螺絲刀來砸東西。你得到了乙個很爛的榔頭,但事實上它確實一把很不錯的螺絲刀。所以你應該對所有的事物保持開放和積極的心態。
如果你的杯子滿了,那他永遠再也裝不進水了。如果你認為你找到了銀彈,那麼你可能就要固步自封了。
對新的事物,方法保持乙個開發而積極的心態,才能真正了解他,了解他的獨特之處。
了解他的歷史,哲學觀
那python來說,他的設計哲學是用一種方法,最好是只有一種方法來做一件事,而perl的設計哲學是總有多種方法來做同一件事。所以,我選擇的是python。
**,**,還是**
**是學習一門語言的必經之路,可能也是最快的一種方法。
社群多去這個語言的社群逛逛吧,這裡有很多人在討論這種語言,和他們一起討論你能夠學到更多。
出發點:工作兩到三年內,我的主要開發語言是c。後來由於工作的需要,要實現乙個流程引擎(屬於預研專案)。在研究的過程中發現使用c語言處理這種邏輯比較複雜的程式有些力不從心,我想嘗試使用物件導向的方式處理這個問題,所以我想到了c++。現在回想起來,其實當時自己也就是想使用c++的物件導向特性,我現在也基本只使用了c++的乙個子集:物件導向。
起步:當時我們公司沒有人使用過c++,我也是在大學的時候接觸過,後來也沒有用過,所以整個過程困難還是比較多的。因為有c的基礎,所以我沒有看c++的入門資料,比如《c++primer》(其實我到現在也沒有從頭到尾讀過這本書,c++的很多特性我也沒有使用過。),我直接使用c++來編寫程式。中間遇到很多低階的問題,比如如何定義乙個類的static成員變數;虛函式如何定義,如何使用;stl中string,list如何使用;c++如何呼叫c的庫等等。這些問題都比較好解決。
最大的障礙:從c到c++,最大的障礙不是語法的障礙,而是思維方式的轉變:
由面向過程到物件導向的轉變
。這個轉變時乙個漫長的過程,我現在仍在進行。當時開發是為了更好的使用物件導向,快速的瀏覽了一下《設計模式》中的23個設計模式。現在想想,如果能夠找乙份開源的c++**看看也許效果更好。
深入與提高:最終我還是用c++實現了我的目標。不過,這個程式在高層設計上採用的是物件導向,在中層和底層設計上仍然使用的是面向過程的思路。在這個過程中,我對c++和物件導向有了更深入的理解,也積累了一些經驗。這個時候我沒有選擇全面的學習一些c++的語法,而是選擇學習《effective c++》。這本書對外影響很大,讓我知道如何去更有效的使用c++。學習的過程中也許會遇到一些不會的語法知識,查一下資料就可以解決了。後來又在幾個專案中使用了c++,慢慢的有些得心應手了。
下一步計畫:對於c++的語法,我的觀點是用到了在學。我下一步的計畫是學習《more effective c++》,《c++ 沉思錄》,《深入理解c++物件模型》,以求對c++有更深入的理解。另外,再深入的學習一下《設計模式》。還有就是google的c++程式設計規範。對於是否要涉及c++的其他子集,比如模板,我會繼續觀察,看有沒有這樣的需求。當然,有一點很重要,就是要在工作中去用它解決問題。
關於python學習出發點:這門語言我剛開始學,還沒有學多長時間。我沒有想完全拋棄c++,但是我想找乙個更加方便高效的工具來完成某些任務。我以後可能會考慮將python和c++混合使用。選擇python的另乙個原因是google也在用它。
起步:找了乙個入門的資料《簡明python教程》學習了一下,對python語法有了乙個基本的了解。然後選擇《diveintopython》深入學習,目前還沒有學完。不過現在感覺有些問題,自己好像陷入到了這些細枝末節中。所以準備做一些調整。
1)快速預覽《diveintopython》;2)找乙個開源**學習一下;3)開始使用python來解決問題;4)後面深入提高。
最後總結一下:
3、開始行動,而非等待準備就緒:不要等你把一門語言完全掌握了再開始行動。把握重點之後,馬上開始行動,用它來解決問題,在解決問題的過程中,完成對語言的完善和更深入一步的學習。
以Rust為例,看如何學習一門新語言?
我是一名ruby程式設計師,rubyist,眾所周知ruby是一門物件導向語言,所以我就一直和物件導向打交道了好多年,雖然ruby語言也吸收了函式式語言的特性,但並不純粹,總的來說,ruby還是一門物件導向語言,它的抽象程度很高。我個人也不是乙個對程式語言有特別偏好的那種人,我認為每種語言都有其適用...
程式人生 學習一門新語言的方法
有一套自己的學習方法,不管好壞,都比沒有好 因為有了學習方法後,你就會按照這個方法來給自己安排任務,任何時候都知道自己該做什麼 沒有目標,在你迷茫,猶豫該學什麼,怎麼學,甚至是因為沒有具體規劃而變得閒散的時候,很快一兩年都已經浪費了 而有學習方法的人,有目標督促他去行動,即使方法不是很好,兩年下來肯...
前言 為什麼我們需要一門新語言
網際網路時代的語言 go,需要考慮的關鍵問題 並行與分布式支援 go在語言級別支援協程,其他語言多數需要庫的支援。執行體間的通訊,分為以下兩種 互斥或同步 go在語言層面不支援。軟體工程支援 風格規範 識別符號首字母大寫時,為public變數。對大括號的規範。go fmt工具。錯誤處理規範 包管理契...