如何學(xué)會(huì)600多種編程語言

幾周前,做為8th Light 公司的實(shí)習(xí)生,我從 CEO 那里拿到了我的工作成績(jī)報(bào)告。在與 CEO 的會(huì)見期間,我發(fā)現(xiàn)了一個(gè)對(duì)如何做一個(gè)程序員的認(rèn)識(shí)上的盲區(qū)。起初我以為,想擴(kuò)展自己的軟件職業(yè)道路,那就要學(xué)很多各種的語言。我現(xiàn)在就要告訴你,事情不是這樣的。
我們一共有多少種編程語言?你只需看一下維基百科上的清單,600 多種!說實(shí)話,就我個(gè)人的情況,我不相信我能學(xué)會(huì)數(shù)百種語言。因?yàn)橛刑嗟奈臋n需要看,它們之間有太多的差異需要注意。它們很多都是相似的,例如那些面向?qū)ο蟮恼Z言:C++,Java,Ruby,Python 等。然而,我們卻有一種更高效的方法學(xué)習(xí)它們,那就是對(duì)它們歸納分類。
在美國(guó)德銳大學(xué),每個(gè)畢業(yè)生要接受的一門必修課程教育就是如何有效的學(xué)習(xí)。我很幸運(yùn)遇到一位非常好的教授,Sugarman 先生,我才有機(jī)會(huì)學(xué)到學(xué)習(xí)方法。盡管這個(gè)方法非常的基礎(chǔ),但它幾乎能應(yīng)用到任何事情上——不論它們的數(shù)量看起來是多么不可思議。
面向?qū)ο缶幊陶Z言的基礎(chǔ)理論要點(diǎn):
學(xué)習(xí)基礎(chǔ)理論要點(diǎn),例如設(shè)計(jì)模式/范式,這樣你就知道了在所有面向?qū)ο蟮木幊陶Z言中共同的知識(shí),而不是只提高了一種語言水平。這是學(xué)習(xí)編程語言最有效的方法。
編程語言的類型有很多種,例如函數(shù)式語言,面向?qū)ο笳Z言,面向數(shù)據(jù)語言(更多)。通過把各種語言歸納分類,這 600 種語言大概可以分成 50 類。通過學(xué)習(xí)每種分類的基礎(chǔ)理論要點(diǎn),再學(xué)習(xí)分類中的不同語言就變得容易多了。這里我給出一個(gè)例子。
對(duì)于面向?qū)ο缶幊陶Z言,有 5 個(gè)基本原則能幫助你寫出整潔優(yōu)秀的代碼。這些原則由 Bob Martin 總結(jié),叫做 SOLID 原則。這里有一篇文章用圖片形式很好的對(duì)這些原則進(jìn)行了解釋說明。這些原則是:
- 一個(gè)對(duì)象只承擔(dān)一種責(zé)任,所有服務(wù)接口只通過它來執(zhí)行這種任務(wù)。
 - 程序?qū)嶓w,比如類和對(duì)象,向擴(kuò)展行為開放,向修改行為關(guān)閉。
 - 子類應(yīng)該可以用來替代它所繼承的類。
 - 一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該限制在最小化的接口上。
 - 依賴抽象層(接口),而不是具體類。
 
通過學(xué)習(xí)這些原則,你可以在所有面向?qū)ο笳Z言里更有效的進(jìn)行編程。當(dāng)然,你需要學(xué)會(huì)一門這種類型的語言來練習(xí)這些原則,但這是完全值得的。
各種面向?qū)ο笳Z言間的不同之處:
同屬于面向?qū)ο笳Z言,它們之間存在大量不同之處:
- 語法:了解各種語言在語法句式上的差異有很多好處,其中之一能幫助優(yōu)化你的編碼。通過讓一個(gè)方法或類跟它的行為在特征是保持相似,這能讓程序更容易懂。
 - 獨(dú)特性:每種編程語言跟其它種比起來都有自己的獨(dú)特之處。Java 有私有方法和數(shù)據(jù)自定義上的特點(diǎn),Ruby 在 Web 應(yīng)用上有很強(qiáng)的優(yōu)勢(shì)。
 
總之,學(xué)習(xí)各種語言之間的區(qū)別很重要。這種語言可能比那種語言中某些方面更容易使用或更強(qiáng)大。
總結(jié)
學(xué)習(xí)編程語言最有效的方法是學(xué)習(xí)它們的基礎(chǔ)性的模式/范式,這比單獨(dú)學(xué)習(xí)每種語言更高效。通過學(xué)習(xí)這些基礎(chǔ)原理,你可以把它們應(yīng)用到很多其它類似的語言里。學(xué)習(xí)各種語言之間的差異,這能幫助我們?cè)诿鎸?duì)各種情況時(shí)選擇更合適的語言。
英文原文:What it means to know Programming Languages
譯文鏈接:http://www.aqee.net/what-it-means-to-know-programming-languages/















 
 
 








 
 
 
 