JAVA算法能力差?
謝謝邀請(qǐng)!
Java程序員有不少都在從事應(yīng)用級(jí)開(kāi)發(fā)崗位,與C語(yǔ)言程序員相比,Java程序員往往在算法設(shè)計(jì)方面的能力稍差一些,與R語(yǔ)言程序員相比就更是如此了。
Java程序員大部分都是在從事Web開(kāi)發(fā)、Android開(kāi)發(fā)以及一些App的后端服務(wù)開(kāi)發(fā)等任務(wù),這些開(kāi)發(fā)的特點(diǎn)往往都是以實(shí)現(xiàn)具體業(yè)務(wù)邏輯模塊為主,由于Java的封裝能力比較強(qiáng),所以這些程序員平時(shí)設(shè)計(jì)算法的機(jī)會(huì)并不多,這是導(dǎo)致Java程序員算法能力差的根本原因。當(dāng)然,大部分應(yīng)用級(jí)程序員基本上都是如此,包括PHP、C#、JavaScript、OC等語(yǔ)言的程序員。
如果要想解決算法問(wèn)題要從以下幾個(gè)方面入手:
第一:系統(tǒng)的學(xué)習(xí)一下算法基礎(chǔ)知識(shí)。算法基礎(chǔ)知識(shí)是提升算法能力的關(guān)鍵,算法問(wèn)題無(wú)非就是排序、統(tǒng)計(jì)、查找、規(guī)劃等問(wèn)題,但是這些問(wèn)題的背后卻有大量的具體內(nèi)容需要掌握,算法問(wèn)題是解決邏輯問(wèn)題的根本,從這個(gè)角度來(lái)說(shuō),算法是每個(gè)程序員都應(yīng)該系統(tǒng)學(xué)習(xí)的內(nèi)容。
第二:系統(tǒng)的學(xué)習(xí)一下數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)和算法是不分家的,如果說(shuō)算法是解決問(wèn)題的思路,那么數(shù)據(jù)結(jié)構(gòu)則是具體的實(shí)現(xiàn)方法,所以程序設(shè)計(jì)通常被認(rèn)為是算法設(shè)計(jì)加數(shù)據(jù)結(jié)構(gòu)。Java實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的過(guò)程是提高算法能力的一個(gè)重要基礎(chǔ),所以這部分實(shí)驗(yàn)是非常關(guān)鍵的。
第三:與實(shí)際問(wèn)題相結(jié)合。判斷一個(gè)程序員的算法設(shè)計(jì)能力,往往是通過(guò)具體的問(wèn)題來(lái)體現(xiàn)的,作為一個(gè)程序員來(lái)說(shuō),如何把算法與實(shí)際問(wèn)題相結(jié)合是一個(gè)難點(diǎn),也是學(xué)習(xí)過(guò)程中的重點(diǎn)。Java語(yǔ)言自身是一個(gè)可以做落地應(yīng)用的編程語(yǔ)言,所以不少研發(fā)人員都會(huì)選擇Java做實(shí)際項(xiàng)目的實(shí)現(xiàn)語(yǔ)言,我在早期做機(jī)器學(xué)習(xí)項(xiàng)目的時(shí)候就是采用Java語(yǔ)言實(shí)現(xiàn)的(后來(lái)改用Python了)。
作者簡(jiǎn)介:中國(guó)科學(xué)院大學(xué)計(jì)算機(jī)專業(yè)研究生導(dǎo)師,從事IT行業(yè)多年,研究方向包括動(dòng)態(tài)軟件體系結(jié)構(gòu)、大數(shù)據(jù)、人工智能相關(guān)領(lǐng)域,有多年的一線研發(fā)經(jīng)驗(yàn)。
歡迎關(guān)注作者,歡迎咨詢計(jì)算機(jī)相關(guān)問(wèn)題。