编程语言学习之我见
自04年畢業以來,從事的工作中,接觸的語言各類很多,有C++,Delphi,C#,Java,(Javascript,Html,css這三者基本是一體的)。竊以為語言其實只是一種實現你想法的工具而已,不要有門戶派別之見。每種語言都有它的長處與缺點。以已之長較彼之短是自欺欺人,以已之短較彼之長屬妄自菲薄。結合實際情況,選擇合適的語言來做適合的事情才是上上之策。
要學習一種編程語言,首先一定要有興趣才行,魯迅說過“興趣是最好的老師”。只有你對它感興趣,想(或者說需要)學才可以。
我自高中學習Basic語言開始,在大學里除了老師講授的c++,Java基礎知識外,基本上Delphi,vc++,c++Builder,Java都是我利用業余時間自學的。而學一門語言不是簡單的了解它的語法就可以了。還要學習相當一部分的函數庫或類庫才行,雖說不用全部記信其用法,但大部分常用的函數或類還是要相當熟悉的,這就需要在實踐中多練習了,這個我記得國外有篇博文說的很好,要想快速的學習一門語言的類庫的方法就是應用它方法有二,
其一,將其直接應用到你的真實項目中,只有這樣你才會有足夠的壓力與動力去學習它,
其二,將其應用到你的周末項目中,這個概念很好,因為與工作相對應的是周末,你可以利用周末或者業余時間來做一個簡單的小項目,可以是一個簡單的***系統。
個人認為,一個優秀的程序員不應該只學一種語言,至少應該精通兩種語言,并且熟悉其它語言,而這兩種語言中,至少要有一種直接訪問內存語言(就是不用虛擬機來管理內存,而是程序員在程序中用來管理內存),學習它是為了讓你了解計算機是怎樣來管理資源的以及養成一種有申請必有釋放資源的好習慣,另一種語言最好應為托管語言(c#或java)是為了更高效的完成工作,而這種工作大部分是在服務端。
而一門語言中包含的入門信息,主要分為以下幾大部分:
? 1 基本數據類型
? 2 基本語法格式
? 3 流程控制
? 4 I/O控制
? 5 數據庫與網絡
前四種是屬于語言的基礎知識,而最后一種往往以函數庫或類庫的方式來實現。而了解這些知識,基本上一周左右就夠了(每天的練習,再加上周末項目,基本上可以讓你一窺該語言的門徑,而要登堂入室,則還需下功夫才行)。
要想登堂入室,則還需接著往下看,
開源是個好東西,你在項目里所需要的東西,往往在開源項目里可以找到。但它也是把雙刃劍,用好了可以省去你不少功夫,但是有時出的錯誤也會讓你無所適從,摸不著頭腦。所以你在項目中應用開源項目時,一定要慎重,最好利用時間把它的代碼大概過一遍,這樣就算項目出錯時,也會心里有底,知道錯誤大概是什么原因造成的。
6,做一個真正實用的軟件
要學習一種編程語言,首先一定要有興趣才行,魯迅說過“興趣是最好的老師”。只有你對它感興趣,想(或者說需要)學才可以。
我自高中學習Basic語言開始,在大學里除了老師講授的c++,Java基礎知識外,基本上Delphi,vc++,c++Builder,Java都是我利用業余時間自學的。而學一門語言不是簡單的了解它的語法就可以了。還要學習相當一部分的函數庫或類庫才行,雖說不用全部記信其用法,但大部分常用的函數或類還是要相當熟悉的,這就需要在實踐中多練習了,這個我記得國外有篇博文說的很好,要想快速的學習一門語言的類庫的方法就是應用它方法有二,
其一,將其直接應用到你的真實項目中,只有這樣你才會有足夠的壓力與動力去學習它,
其二,將其應用到你的周末項目中,這個概念很好,因為與工作相對應的是周末,你可以利用周末或者業余時間來做一個簡單的小項目,可以是一個簡單的***系統。
個人認為,一個優秀的程序員不應該只學一種語言,至少應該精通兩種語言,并且熟悉其它語言,而這兩種語言中,至少要有一種直接訪問內存語言(就是不用虛擬機來管理內存,而是程序員在程序中用來管理內存),學習它是為了讓你了解計算機是怎樣來管理資源的以及養成一種有申請必有釋放資源的好習慣,另一種語言最好應為托管語言(c#或java)是為了更高效的完成工作,而這種工作大部分是在服務端。
而一門語言中包含的入門信息,主要分為以下幾大部分:
? 1 基本數據類型
? 2 基本語法格式
? 3 流程控制
? 4 I/O控制
? 5 數據庫與網絡
前四種是屬于語言的基礎知識,而最后一種往往以函數庫或類庫的方式來實現。而了解這些知識,基本上一周左右就夠了(每天的練習,再加上周末項目,基本上可以讓你一窺該語言的門徑,而要登堂入室,則還需下功夫才行)。
要想登堂入室,則還需接著往下看,
開源是個好東西,你在項目里所需要的東西,往往在開源項目里可以找到。但它也是把雙刃劍,用好了可以省去你不少功夫,但是有時出的錯誤也會讓你無所適從,摸不著頭腦。所以你在項目中應用開源項目時,一定要慎重,最好利用時間把它的代碼大概過一遍,這樣就算項目出錯時,也會心里有底,知道錯誤大概是什么原因造成的。
6,做一個真正實用的軟件
? ? ? ?學到這一步,相信你對這一門語言已經有了一定的了解了。編程語言主要就是用來解決問題的,如果沒有問題,那就創建一個問題。你可以寫一個你平時可以用得上的軟件,例如一個類似lanchy的可以簡化你打開程序步驟的軟件,也可以是一個彩票選號軟件(如果你喜歡買彩票的話,我在09年曾經用delphi寫過一個與500wan類似的彩票選號軟件,用著還行,不比它的運行效率差。現在也一直在用著它,只是很少更新了),然后要堅持更新它,直到你覺得滿意為止。 ? ? ?
? ? 至于學習多門語言的問題,讓我想到了《天龍八部》中的鳩摩智,其人天賦異稟,也很用功。內功修為也很強,只是很貪心,各種奇門武功都想學,不想著使自己的內功更上一層樓。而喬峰內功修為與他差不多,但他只修降龍十八掌,并將其運用到隨心所欲的境界。所以鳩摩智一直打不過喬峰。其實武功與編程有相通之處。內功就好比編程中的編程思想(其由設計模式+編程經驗等組成),外功就好比實現編程思想的編程語言,可以多學一兩門語言,但不可貪多,因為人的精力是有限的。再深一步講軟件中的項目管理與武俠中的一派掌門或者教主管理門中事務也有相似之處,關于這些的討論詳見我的另一篇博文《閑談武俠與軟件開發》。
總結
- 上一篇: 一次二次开发中的经验与教训(一)
- 下一篇: 『飞秋』Windows7新功能体验(1)