精通java需要多長時(shí)間 把Java編程語言精通到底有多難?
把Java編程語言精通到底有多難?作為一名程序員,我已經(jīng)出版了很多Java編程書籍,所以讓我來回答這個(gè)問題。隨著互聯(lián)網(wǎng)的發(fā)展,Java語言自身的生態(tài)系統(tǒng)不斷完善,應(yīng)用邊界不斷擴(kuò)大。目前廣泛應(yīng)用于web
把Java編程語言精通到底有多難?
作為一名程序員,我已經(jīng)出版了很多Java編程書籍,所以讓我來回答這個(gè)問題。
隨著互聯(lián)網(wǎng)的發(fā)展,Java語言自身的生態(tài)系統(tǒng)不斷完善,應(yīng)用邊界不斷擴(kuò)大。目前廣泛應(yīng)用于web開發(fā)、大數(shù)據(jù)開發(fā)、移動(dòng)終端開發(fā)等領(lǐng)域??梢哉f,不同的應(yīng)用方向也需要有不同的知識(shí)結(jié)構(gòu),因此很難掌握J(rèn)ava。
Java語言本身的組成分為兩部分,一部分是Java虛擬機(jī),另一部分是Java語言本身的語法。根據(jù)Java語法要求編寫的程序需要通過Java虛擬機(jī)進(jìn)行加載、驗(yàn)證、編譯和運(yùn)行,Java虛擬機(jī)的作用相當(dāng)于Java運(yùn)行環(huán)境(container)。它需要完成很多操作,包括代碼安全、垃圾處理、事件處理、資源管理等。因此,精通java開發(fā)一方面需要清晰的java語法,另一方面需要了解java虛擬機(jī)的運(yùn)行機(jī)制。
對(duì)于初學(xué)者來說,學(xué)習(xí)java編程從學(xué)習(xí)java語法開始,然后學(xué)習(xí)java web開發(fā)、數(shù)據(jù)庫開發(fā)、分布式開發(fā)等。這個(gè)過程通常是大多數(shù)學(xué)習(xí)者的學(xué)習(xí)路線。難點(diǎn)在于對(duì)java面向?qū)ο蟾拍畹睦斫?,即?duì)各種“抽象”的理解。這一部分雖然有一定的難度,但大多數(shù)學(xué)習(xí)者都是能夠?qū)W習(xí)的,差異往往在于學(xué)習(xí)時(shí)間上。
對(duì)于從事平臺(tái)開發(fā)的研發(fā)級(jí)程序員來說,還需要系統(tǒng)地學(xué)習(xí)Java虛擬機(jī)的內(nèi)部機(jī)制。通過深入了解Java虛擬機(jī)的組成,可以輔助平臺(tái)產(chǎn)品的研發(fā),注重性能的提高。通常,我們需要了解Java虛擬機(jī)的體系結(jié)構(gòu)和核心算法,這是比較困難的。當(dāng)然,如果您想了解Java虛擬機(jī)的整體結(jié)構(gòu),通常需要閱讀大量的源代碼。
python、C、Java都會(huì),但都不精通,如何把一門語言學(xué)到精通?
這是一個(gè)非常好的問題。作為一名程序員和教育家,我將回答這個(gè)問題。
編程語言歸根結(jié)底只是一種工具,因此為了深入了解編程語言,它通常需要由開發(fā)任務(wù)驅(qū)動(dòng)。根據(jù)歷史經(jīng)驗(yàn)分析,研發(fā)級(jí)程序員對(duì)編程語言的理解往往比較深入,而應(yīng)用級(jí)程序員往往不需要太在意編程語言的底層實(shí)現(xiàn)機(jī)制,這是由工作性質(zhì)決定的。
要想全面掌握編程語言,一方面需要系統(tǒng)的學(xué)習(xí)計(jì)劃,另一方面也需要后期開發(fā)任務(wù)的驅(qū)動(dòng)。事實(shí)上,很多程序員為了提高對(duì)編程語言的理解,都會(huì)提升自己的開發(fā)地位來達(dá)到這個(gè)目的。
以Java編程語言為例,如果從事web開發(fā),開發(fā)人員關(guān)注的是如何通過Java編程集成各種資源。隨著云計(jì)算平臺(tái)(主要是PAAS)的應(yīng)用,開發(fā)者有了更多的方式來整合資源,語言本身的重要性也被削弱了??傊?,在云計(jì)算時(shí)代,應(yīng)用級(jí)編程對(duì)編程語言能力的要求有了一定程度的下降。但是,如果你想從事云計(jì)算平臺(tái)的開發(fā),或者大數(shù)據(jù)平臺(tái)的開發(fā),那么對(duì)編程語言的要求是比較高的。因此,開發(fā)人員要想精通編程語言,首先應(yīng)從提升崗位水平入手。
除了崗位任務(wù)外,開發(fā)團(tuán)隊(duì)的技術(shù)實(shí)力對(duì)開發(fā)人員的技術(shù)進(jìn)步也有很大的影響。很多研究生畢業(yè)后,選擇一些小型創(chuàng)業(yè)團(tuán)隊(duì)的一個(gè)重要原因是,考慮到研發(fā)團(tuán)隊(duì)的技術(shù)能力,一些初創(chuàng)企業(yè)的團(tuán)隊(duì)往往會(huì)有一些著名的行業(yè)技術(shù)專家,這就是為什么他們選擇一些小型創(chuàng)業(yè)團(tuán)隊(duì)的原因產(chǎn)業(yè)團(tuán)隊(duì)是吸引人才的重要途徑。
c 、java、go、python哪個(gè)語言更容易精通?哪個(gè)可以走的路更遠(yuǎn)且不至于被輕易淘汰?
首先,Java、python、go、C等編程語言目前廣泛應(yīng)用于IT行業(yè)。除了go語言,其他語言中也有大量的成熟案例,因此這些編程語言是初學(xué)者的好選擇。
就語言本身的難度而言,python語言和go語言的語法結(jié)構(gòu)應(yīng)該更加簡潔,Java和C語言應(yīng)該稍微復(fù)雜一些。當(dāng)然,這也直接關(guān)系到編程語言的設(shè)計(jì)思想。對(duì)于計(jì)算機(jī)基礎(chǔ)薄弱的人來說,從Python開始是一個(gè)不錯(cuò)的選擇。隨著大數(shù)據(jù)和人工智能的發(fā)展,Python在未來的應(yīng)用范圍將進(jìn)一步擴(kuò)大,特別是在工業(yè)互聯(lián)網(wǎng)階段。
其次,編程語言只是程序開發(fā)人員能否在程序開發(fā)的道路上走得更遠(yuǎn)的因素之一。更重要的因素是自身的研發(fā)能力。實(shí)際上,編程語言只是一種工具。曾經(jīng)有一句流行的話:一流的程序員靠數(shù)學(xué);二流的程序員靠算法;三流的程序員靠邏輯;四流的程序員靠SDK,然后是各種搜索引擎和編程博客。從這個(gè)角度來看,編程語言對(duì)程序員能力的影響是有限的。最后,編程的過程歸根到底是數(shù)學(xué),所以R&D級(jí)程序員往往需要有堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ),程序員成長的最終高度往往是由諸如數(shù)學(xué)之類的基礎(chǔ)學(xué)科決定的。如果僅僅從編程語言的角度來看,目前Python和go的發(fā)展趨勢(shì)更加明顯。
java大概多久可以精通?
Java很難精通。Java是一門相對(duì)較難的學(xué)科,還有很多知識(shí)需要學(xué)習(xí)。而且,互聯(lián)網(wǎng)技術(shù)的發(fā)展有多快,技術(shù)更新的速度也在日新月異。如果你不能說那一天,你會(huì)發(fā)現(xiàn)你以前學(xué)的Java技術(shù)已經(jīng)逐漸被淘汰了,你需要學(xué)習(xí)新的技術(shù),所以你想實(shí)現(xiàn)Java很難掌握。
如果您想開始并能夠工作,這是相對(duì)快速的。也許你可以在幾個(gè)月內(nèi)完成Java技術(shù)的學(xué)習(xí)和掌握?;旧?,你可以開始工作了。雖然工作是可能的,但是學(xué)習(xí)Java僅僅是個(gè)開始。在今后的工作中,除了把以前學(xué)到的技術(shù)應(yīng)用到實(shí)際工作中,還要不斷適應(yīng)Java行業(yè)的發(fā)展,學(xué)習(xí)新的知識(shí)。
對(duì)于很多人來說,java培訓(xùn)或自學(xué)都是為了學(xué)習(xí)進(jìn)入java行業(yè),java培訓(xùn)在很多情況下只是讓你快速進(jìn)入java行業(yè)。其實(shí),要想掌握J(rèn)ava,還需要不斷的練習(xí)和學(xué)習(xí)。
樓主是個(gè)大一學(xué)生,想在大學(xué)期間自學(xué)c語言和java.每天大概能學(xué)6個(gè)小時(shí),請(qǐng)問一下大概要多久能精通?
我會(huì)跟你說的。同學(xué)們,這顆心值得鼓勵(lì),不要聽別人的挖苦。
但是,如果你能每天學(xué)習(xí)6小時(shí),不要太樂觀,因?yàn)榧词鼓隳軐W(xué)習(xí)6小時(shí),仍然存在效率問題。不是快,而是長。一滴水磨蝕一塊石頭。
對(duì)于編程來說,除了學(xué)習(xí)的時(shí)間長短,還有一個(gè)緯度,即掌握計(jì)算機(jī)操作原理的程度。首先要努力學(xué)習(xí)基礎(chǔ)知識(shí),包括數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)組成原理、操作系統(tǒng)、編譯原理等,然后再談?wù)Z言,這樣才能提高更快。所謂磨刀不誤砍柴刀。
基本技能打扎實(shí),然后就是多寫代碼。年輕的時(shí)候,先寫10萬行代碼。做一個(gè)網(wǎng)站,玩信息管理系統(tǒng),寫一個(gè)聊天軟件,做一些應(yīng)用程序。慢慢地,一些問題就會(huì)暴露出來。內(nèi)存管理、并行設(shè)計(jì)、數(shù)據(jù)庫管理等都需要重新學(xué)習(xí)和實(shí)踐。
這只是開始。
經(jīng)過算法學(xué)習(xí)、內(nèi)存優(yōu)化、架構(gòu)設(shè)計(jì),是進(jìn)入真實(shí)項(xiàng)目的慢慢積累和訓(xùn)練。熟悉這一過程至少需要幾年時(shí)間。如果你走到這一步,應(yīng)該很容易找到一份開發(fā)工作。
如果你精通,恐怕你的功夫不會(huì)超過十年。給我印象最深的是龍勝胡偉武先生的一段話。他說,每年有上萬人可以開發(fā)java程序,但只有幾十人可以編寫java虛擬機(jī)。試想,如果你真的想說精通一門計(jì)算機(jī)編程語言是不容易的。
說了很多,我只想表達(dá)一下,做好工作不容易,不是一朝一夕的事。有時(shí),我們必須作出巨大的努力來準(zhǔn)備一場(chǎng)持久戰(zhàn)。
我希望我的回答能對(duì)你有所幫助。