精通java益处_你真的精通Java吗?
簡歷和自我介紹上經(jīng)常能夠讀到“精通Java”這樣的話,有人和我說,精通Java的人太多了,精通Java已經(jīng)不能算亮點(diǎn)、不能給自己加分了。可是事實(shí)真是這樣嗎?
對(duì)于語言的學(xué)習(xí),我有一種觀點(diǎn),一是縱向,即要選擇一門自己認(rèn)為合適的語言學(xué)到有相當(dāng)?shù)纳疃取6谟跈M向,即要學(xué)習(xí)不同類型、不同歷史和不同門派的語言:
既有底層的語言,也有高級(jí)語言;
接觸一些動(dòng)態(tài)語言、函數(shù)式語言;
了解一些不同語言的編程范型和編程方式,比如基于原型編程、面向切面編程、命令式編程等等;
最好能關(guān)注一門年紀(jì)尚淺,甚至小眾的語言,了解一門語言的發(fā)展。
橫向類比能夠帶來對(duì)一門語言的不同認(rèn)識(shí),但是,有廣度而沒有深度的專家是可笑的,深入地學(xué)習(xí)一門語言是不可缺少的。就以Java為例,依我看來,至少有這樣幾個(gè)遞進(jìn)的過程:
語法語義。
這是最基礎(chǔ)的部分,都說Java簡單,語法容易學(xué)習(xí),但是,真要細(xì)說起一些細(xì)節(jié)來,也真夠我啰嗦了。我見過一些所謂的“精通Java”的人,他們卻不知道strictfp關(guān)鍵字,說不清volatile和transient的作用,不知道怎么去定義一個(gè)注解(@interface)。你覺得這些要求苛刻嗎?對(duì)這些以“精通”要求自己的人。
熟悉語言的應(yīng)用范圍。
不同的語言有不同的擅長應(yīng)用領(lǐng)域。就像想用Java去寫操作系統(tǒng)或底層代碼是多么不靠譜一樣,在這個(gè)過程中應(yīng)當(dāng)熟悉語言的優(yōu)勢劣勢,這里你自己會(huì)提出自己的見解。譬如Java最NB的地方在哪里?
跨平臺(tái)?可是很多語言都可以跨平臺(tái);
開源?那開源的語言多了去了;
高性能的虛擬機(jī)?包括先進(jìn)的編譯解釋優(yōu)化技術(shù);
還是那么多用Java實(shí)現(xiàn)的類庫、框架呢?
把那些用Java實(shí)現(xiàn)的類庫和框架脫離出Java語言本身來歸類,未必是恰當(dāng)?shù)摹J煜ava就必須閱讀許多類庫和框架的源碼。
學(xué)習(xí)語言的實(shí)現(xiàn)機(jī)制。
就像精通Java的程序員需要了解Java虛擬機(jī)一樣,也許不需要對(duì)虛擬機(jī)規(guī)范一清二楚,但是起碼要知道CAFE BABE吧?起碼要了解JIT的機(jī)制吧?起碼要明白垃圾回收策略中的CMS吧?起碼要能嘗試自己編譯一把JDK吧?起碼要能去定位那些無響應(yīng)的Java程序問題吧?在這個(gè)過程中,從了解一門語言,將逐漸進(jìn)化到去了解一門語言所處的平臺(tái)。
整理語言發(fā)展的歷史。
為什么學(xué)習(xí)編程語言也要關(guān)注它的歷史?因?yàn)槿チ私庖婚T語言的發(fā)展歷史(比如這篇關(guān)于Java多線程編程的歷史),可以明白在這過程中碰了什么壁、犯過什么錯(cuò)、有哪些大的變更,學(xué)過別人家什么東西……這對(duì)于分析現(xiàn)今這門語言與其他語言的碰撞、展望一門語言的未來大有益處。在這個(gè)過程中,會(huì)不由自主地將其和不同時(shí)期的其他語言比較。如果給你一次重新設(shè)計(jì)這門語言的機(jī)會(huì),你一定能夠提出不少改善的意見來。
我從來不相信精通Java是一件容易實(shí)現(xiàn)的事情。有一股風(fēng)潮,說搞底層研究的人看不起搞上層業(yè)務(wù)的人,寫C的人認(rèn)為寫Java的人沒水平,做后臺(tái)的人覺得做前臺(tái)的沒技術(shù)含量……我說,何必呢?
技術(shù)無貴賤,只是專注的領(lǐng)域不同而已。
總結(jié)
以上是生活随笔為你收集整理的精通java益处_你真的精通Java吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像处理OpenCV(2)——OpenC
- 下一篇: xv6-zynq