很多Java工程師會(huì)產(chǎn)生這個(gè)疑問(wèn),我工作中只用到了Java基礎(chǔ) + SSH 框架,我為啥要看算法,要看《數(shù)學(xué)之美》這些類(lèi)似的東西?
一個(gè)最為直接、常見(jiàn)的說(shuō)法是:算法是前人總結(jié)好的解決問(wèn)題的方法,你可以從中學(xué)習(xí)到解決問(wèn)題的方法。
我不這么認(rèn)為,因?yàn)樵贘ava開(kāi)發(fā)中確實(shí)很少會(huì)用到,常見(jiàn)的排序、查找,甚至背包、頂堆都有實(shí)現(xiàn),我們用的只是接口。Java程序員不需要學(xué)習(xí)這些算法, 因?yàn)椴粫?huì)遇到這些問(wèn)題,只要把Java相關(guān)聯(lián)的知識(shí)學(xué)好,就能做好一名Java程序員了。
事實(shí)是這樣的嗎?
我們可以思考這個(gè)問(wèn)題,不同級(jí)別的程序員是怎么分級(jí)的呢?呵呵,當(dāng)然現(xiàn)在是靠工作年頭分級(jí)的(開(kāi)個(gè)玩笑)。越是高級(jí)的程序員越是要解決業(yè)務(wù)相關(guān)問(wèn)題,而這些是考驗(yàn)大家的思維能力,而算法、數(shù)學(xué)恰恰是訓(xùn)練、提升這些思維能力的。
我們來(lái)了解一下數(shù)學(xué)(對(duì)程序員來(lái)說(shuō)是最為直接的各種算法)的美。
1. 簡(jiǎn)潔性是數(shù)學(xué)之美的核心,這個(gè)最為典型的是二進(jìn)制,兩個(gè)符號(hào)的組合包羅萬(wàn)象。
2. 抽象性,數(shù)學(xué)把問(wèn)題抽象成符號(hào)表達(dá),然后用公式、符號(hào)、代碼解決問(wèn)題
3. 邏輯性
是的,這些就是數(shù)學(xué)帶給人們的能力。而Java程序員的工作中,除了編寫(xiě)代買(mǎi)之外,更多的是思考和解決各種各樣的業(yè)務(wù)問(wèn)題,把這些問(wèn)題抽象、邏輯嚴(yán)密、用最簡(jiǎn)潔的代碼實(shí)現(xiàn)。
復(fù)雜的自然界中所有的一切,數(shù)學(xué)家都可以用自己簡(jiǎn)單的數(shù)字公式或語(yǔ)言高度抽象出來(lái)。他們以其簡(jiǎn)潔的形式,從一組簡(jiǎn)潔明了的公理、概念出發(fā),進(jìn)行精確計(jì)算、嚴(yán)謹(jǐn)推理,就可抽象推論出各種令人驚嘆的定理或公式,使人們洞察到數(shù)學(xué)的內(nèi)在和諧、嚴(yán)謹(jǐn)、邏輯和秩序性。計(jì)算機(jī)的代碼簡(jiǎn)單得只有0和1,卻可編寫(xiě)出無(wú)數(shù)深?yuàn)W無(wú)比的程序軟件......
“世事紛繁,加減乘除算盡;宇宙廣大,點(diǎn)線(xiàn)面體包完?!毖院?jiǎn)意核,歸納人世百態(tài)、宇宙萬(wàn)物。
聯(lián)系客服