? ? ?上周六參加了公司組織了java培訓(xùn)急黎。因為公司很多組件是用java寫的,所以打算好好學(xué)習(xí)一下java,這樣看組件相關(guān)代碼的時候闰集,就會減輕不少障礙。雖然之前已經(jīng)學(xué)過一段時間的java了般卑,但是都自己在網(wǎng)上找的資料武鲁。所以我期望能從專業(yè)講師那里了解到一些不一樣的東西,結(jié)果卻令我很失望蝠检。講師太啰嗦了沐鼠,而且講的東西也基本上是我已經(jīng)了解的基本的java語法。后面還有兩次課叹谁,還是打算去聽一下饲梭,希望不要像這次這樣失望。
? ? ?算上java焰檩,目前我接觸過的變成語言有8種了憔涉,分別是c,c++析苫,c#兜叨,erlang,javascript衩侥,html国旷,lua和java。所以今天我想來聊聊顿乒,我是如何學(xué)習(xí)了這么多種編程語言的议街。
? ? ?大學(xué)最先學(xué)習(xí)的是c語言。那時候c語言是計算機系的必修課璧榄,每周有兩節(jié)課特漩,我一節(jié)不落地上完的吧雹。c是我的程序入門語言,學(xué)習(xí)c語言主要是在大二和大三的時候涂身。那時候幾乎每天都去機房上機練習(xí)雄卷,還在網(wǎng)上逛各種c語言學(xué)習(xí)論壇,比如唯c論壇蛤售。那時候使用的編譯器是turbo C丁鹉,很老土吧。然后c語言學(xué)完后悴能,我自己還用c語言寫了個掃雷的游戲揣钦。
? ? ?大三快畢業(yè)的時候,學(xué)校安排了c++的學(xué)習(xí)漠酿。但其實我在學(xué)校開課之前冯凹,已經(jīng)自己買了書在學(xué)習(xí)了。c與c++的區(qū)別就是c++是面向?qū)ο缶幊陶Z言炒嘲。從c++的學(xué)習(xí)當(dāng)中宇姚,第一次了解了類,對象夫凸,繼承浑劳,多態(tài)等這些概念。c++也是目前為止夭拌,我用的是最久的一門編程語言魔熏。畢業(yè)后做游戲客戶端和桌面軟件的時候,都是用的c++√渲梗現(xiàn)在也在用c++道逗,不過比以前用得少些了。
? ? ?c#是在做游戲的時候接觸的献烦。那時候我們的游戲服務(wù)器程序是用c#寫的滓窍,所以就學(xué)習(xí)了c#。C#與Java非常相似巩那,它包括了諸如單一繼承吏夯,界面,與Java幾乎同樣的語法即横,和編譯成中間代碼再運行的過程噪生。另外, c#里面沒有指針东囚。c#學(xué)得不深跺嗽,用的時間不長,大概用了一年多。
? ? ?2013年打算要轉(zhuǎn)到平臺后桨嫁,學(xué)習(xí)了erlang語言植兰。那時候因為白天有工作要做,所以我都是早上6點起來學(xué)習(xí)的璃吧,學(xué)到8點楣导,然后去上班。我個人覺得erlang比c和c++要容易使用畜挨。是目前為止筒繁,我最喜歡用的一種語言。很多開源組件巴元,比如rabbitmq,ejabberd等毡咏,都是erlang寫的。現(xiàn)在我負(fù)責(zé)的系統(tǒng)的后臺也是erlang寫的务冕。
? ? ?轉(zhuǎn)到平臺組后血当,因為新系統(tǒng)設(shè)計成b/s架構(gòu),所以要做前端禀忆,于是我又學(xué)習(xí)了javascript和html。javascript和html我是在w3cschool這個網(wǎng)站上學(xué)習(xí)的落恼,它是個非常不錯的前端學(xué)習(xí)網(wǎng)站箩退,每個知識點都講得很詳細(xì),而且還有很有例子佳谦。這兩種語言我用的時間也不長戴涝,招了新人之后,前端主要就交給新人來做了钻蔑。
? ? ?我們的新系統(tǒng)在存儲方面使用了redis這個緩存系統(tǒng)啥刻。剛開始的時候,沒什么問題咪笑,后來隨著數(shù)據(jù)量的增加可帽,測試報bug說,數(shù)據(jù)查詢速度太慢窗怒。因為展示一個頁面經(jīng)常要查詢很多個表映跟,每查詢一個表就要進(jìn)行一次網(wǎng)絡(luò)通信,這就是查詢速度慢的主要原因扬虚。
? ? ? 于是我又學(xué)習(xí)了lua這個腳本語言努隙。因為redis服務(wù)器默認(rèn)是支持lua腳本的,redis服務(wù)器能解析lua腳本辜昵,然后根據(jù)腳本里面的邏輯進(jìn)行查詢荸镊。所以我的解決辦法就是把耗時的查詢都都放到lua腳本里面,每次查詢的時候只要把lua腳本傳到redis服務(wù)器,然后redis服務(wù)器按照lua腳本里面的邏輯查詢完畢后躬存,再把最終的結(jié)果返回收厨。也就是說每次查詢,只需要進(jìn)行一次網(wǎng)絡(luò)通信优构,從而大大加快了查詢速度诵叁。
? ? 去年的時候,新系統(tǒng)告一段落钦椭。所以領(lǐng)導(dǎo)就又分給了我另外一個項目拧额,就是公司目前使用的部署工具。因為部署工具是用java寫的彪腔,為了看懂里面的代碼侥锦,所以我就自己找資料學(xué)習(xí)了java語言。但是到目前為止德挣,我還沒有用java寫過任何東西恭垦。因為這個項目沒有什么新功能,只是有些Bug需要修改格嗅,所以后來這個項目就給一個新人去維護(hù)了番挺。
? ? ?雖然學(xué)習(xí)了那么多語言,但目前用得比較多的還是c和erlang屯掖。用什么語言是根據(jù)目前手頭上的工作來決定的玄柏。目前我手頭上的主要工作是新系統(tǒng)的后臺維護(hù)和老終端兼容模塊的開發(fā)。新系統(tǒng)的后臺是erlang寫的贴铜,老終端兼容模塊是用c寫的粪摘。其他的一些語言,因為相關(guān)的工作比較少绍坝,所以用得就比較少了徘意。
? ? ?學(xué)習(xí)學(xué)習(xí),學(xué)是學(xué)習(xí)知識轩褐,而習(xí)是習(xí)練技能椎咧。也就是說學(xué)完之后還要反復(fù)練習(xí),才能將知識轉(zhuǎn)化為實際工作中的技能灾挨。不管是語言還是技術(shù)邑退,我認(rèn)為需要的時候再學(xué)習(xí)比較好,因為如果學(xué)了不用劳澄,過一段時間就忘記了地技。以后要用的時候還得重新學(xué)習(xí)。浪費時間秒拔。有需要的時候莫矗,再學(xué)習(xí),學(xué)了立刻就會用,在用的時候作谚,會加深和強化剛剛學(xué)習(xí)的知識三娩。所謂學(xué)以致用,用學(xué)相長就是這個道理妹懒。