今天, 同事問我會不會Python, 我猶豫了一下:不會。
實際上我曾經學習過這個語言,當時還用它寫了些小工具, 可如今我對這個語言的印象只剩下它那特殊的縮進格式了。
由此思考怎樣纔算會一門語言?我想每一個程序員都接觸過多門語言 , 那麼究竟怎樣纔算會這門語言了呢?
會一門語言, 當須要它時, 應該能很快用該語言解決某個問題, 這個是最基本的。
若是深刻一點, 真正會一門語言, 我以爲須要知足如下幾點:
a. 有超過一年的實踐經驗
b. 理解語言背後的機制, 最好閱讀過該語言標準庫的部分源碼
c. 在最近一年裏還常用它
儘管我工做後只跳過一次槽,接觸的東西也比較有限, 可是細想一下, 也接觸過很多語言:
Masm: 有段時間玩破解, 研究了下
C/C++: 工組中一直用
Objective-C:有段時間想搞跨平臺的界面庫,研究過這個語言
C#: Win8 Metro下應用程序拿它作界面
VB:剛工做的2年,用它開發過發證系統和一些小工具
Java,JSP, HTML, JS: 學得都不深刻,當時邊學邊用, 單獨作一個B/S架構的電話會議系統
Python: 自學的, 可是後來沒怎麼用
au3:當時學得還挺深刻, 看了很多語言標準庫的源碼,用它寫過一套自動測試框架
發現本身除了函數式語言(Lisp, F#, Erlang, Haskell等), 其餘的編程範型語言都有接觸, 固然函數式編程思想其實也有接觸,由於C++模板元編程也有函數式編程的影子。
可是若是按照上面會一門語言的標準, 發現本身算的上"會"的語言只有一門C++, 其餘語言多則使用近2年,少則使用過3個月, 大部分是用完以後就扔了, 只有C++是在工做中持續使用的。
爲何我要定義上面的條件纔算會一門語言?
由於學習一門語言的語法其實很容易, 大部分語言語法能夠一個月內掌握, 若是從C++轉到C#, 學習語言的基本語法部分甚至只需一兩天。
學習一門語言最費時的部分是語言的框架和庫的學習, 這些部分沒有對該語言一兩年的編程實踐是很難深刻的。好比C#語法自己是很簡單的 ,可是創建在該語言之上的各類框架和庫卻很是龐大和複雜, 好比你要成爲WPF或是WCF的專家, 夠你研究三五年了。不少時候咱們所謂的"會"某個語言可能只是會用這個語言寫些"hello word"式的入門程序, 根本就不理解背後的機制,若是真正懂一門語言,這門語言應該對你的編程風格(思想)產生影響。另外編程是項實踐活動,須要一直使用纔不會生疏, 咱們發現一門語言若是一年沒有使用, 對該語言的印象就僅剩語法部分了,若是連續3年沒有使用,就僅剩該語言的名字了。不少開發人員轉管理一兩年後想轉回寫代碼, 發現很難再回去了, 沒有敲代碼的感受了。
因此若是你已經會了一門語言, 而且想一直會這門語言,
請在工做持續使用。若是沒有機會使用, 本身給本身創造機會。
做爲一名C++程序員, 應該掌握哪些語言?
我的以爲C++程序員除了C++以外,
最好再深刻掌握一門腳本語言,
一來做爲輔助工具,二來能夠理解動態語言的一些特性
。具體什麼腳本語言看本身選擇了。通常入若是是遊戲程序員, 固然首選Lua,由於它基本上是遊戲的內定腳本語言。隨着Html5的流行,原本僅僅是瀏覽器使用的JS如今也是愈來愈受歡迎了。JS自己不支持面向對象,可是如今已經比較成熟的JS面向對象解決方案了。儘管隨着V8 的成功, Node.js興起, JS庫也愈來愈強大,但也僅限於服務端, 若是JS做爲客戶端工具語言就不適合了。Python和Perl都是不錯的腳本語言, 若是你不是寫專業的字符處理腳本, 我的推薦學習Python, 由於它簡單易學, 格式清晰,面向對象,最重要的是它有強大的庫支持(包括GUI), 另外Python與C++ 交互也已經有很成熟的解決方案。
若是你有精力,能夠再學一門函數式編程語言 , 聽說它會顛覆你的編程思想。
簡單總結下, 語言不在多,在精。常用你以爲有價值的語言。深刻掌握一門腳本。