架構(gòu)離不開(kāi)數(shù)據(jù)結(jié)構(gòu)
A說(shuō):
沒(méi)有人跟帖嗎?
那我先談?wù)勎业挠^點(diǎn)吧,學(xué)計(jì)算機(jī)的人都學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)這門(mén)課,教材的開(kāi)始就談到了一個(gè)公式:軟件= 數(shù)據(jù)結(jié)構(gòu)+算法,大家似乎認(rèn)為計(jì)算軟件發(fā)展到現(xiàn)在這個(gè)公式已經(jīng)跟不上時(shí)代了,其實(shí)則不然,這個(gè)公式依舊是一條定理,就算是面向?qū)ο缶幊痰南乱淮幊趟枷氤霈F(xiàn),這個(gè)公式仍然是正確的,因?yàn)檫@個(gè)公式道出了計(jì)算機(jī)軟件的本質(zhì),只要計(jì)算機(jī)還是馮諾依曼計(jì)算,那么這個(gè)公式就是正確的。
面向?qū)ο蟮乃枷氪蟠蟮娜趸顺橄筮@個(gè)概念,強(qiáng)調(diào)自然思想,用正常的思維去分析架構(gòu)軟件,但是計(jì)算機(jī)還是抽象的概念,建模依然是抽象的,將現(xiàn)實(shí)問(wèn)題轉(zhuǎn)化為計(jì)算機(jī)問(wèn)題就是建模,其實(shí)也就是架構(gòu),我面試過(guò)很多人,基礎(chǔ)知識(shí)都不清楚,上來(lái)就跟我談架構(gòu),可是你有沒(méi)有想過(guò)到底什么是架構(gòu)?架構(gòu)與數(shù)據(jù)結(jié)構(gòu)和算法難道沒(méi)有關(guān)系嗎?
B說(shuō):
如果站在性能方面來(lái)說(shuō)我還挺支持你的觀點(diǎn)的,但站在架構(gòu)層面他們還是有許多不同處的,畢竟他們的維度不同,一個(gè)是面向數(shù)據(jù)一個(gè)是面向結(jié)構(gòu)。
C說(shuō):
是的,zzxsky1986 談的屬于兩種不同邊界內(nèi)的東西,“計(jì)算機(jī)是馮諾依曼計(jì)算”是說(shuō)明事物內(nèi)部原理,而架構(gòu)是指如何使用這個(gè)事物,是從事物外部來(lái)看的。
一個(gè)是事物內(nèi)部,一個(gè)是事物外部,完全不同領(lǐng)域的。
再打一個(gè)例子,汽車(chē)內(nèi)部原理和我們?nèi)绾问褂闷?chē)完全是兩碼事;自行車(chē)內(nèi)部原理和我們?nèi)绾悟T自行車(chē)是兩碼事,騎自行車(chē)的基礎(chǔ)和自行車(chē)自身結(jié)構(gòu)基礎(chǔ)不是一回事。
請(qǐng)問(wèn)有考駕駛執(zhí)照時(shí),有考你汽車(chē)內(nèi)部原理的嗎?我們知道汽車(chē)內(nèi)部原理那是修理汽車(chē)和制造汽車(chē)專(zhuān)業(yè)的事情。
再回到計(jì)算機(jī)軟件,計(jì)算機(jī)軟件使用基礎(chǔ)與軟件是如何在計(jì)算機(jī)內(nèi)部運(yùn)行的內(nèi)部機(jī)制是兩碼事。所以,樓主作為面試官,要求程序員知識(shí)廣泛是好的,但是切不可隨便跨越邊界,讓?xiě)?yīng)聘者無(wú)法定位你們是找使用軟件的,還是找修理軟件或制造發(fā)明新軟件語(yǔ)言的人。
不過(guò)話說(shuō)回來(lái),盡管架構(gòu)是指應(yīng)用架構(gòu),但是應(yīng)用架構(gòu)中數(shù)據(jù)結(jié)構(gòu)知識(shí)有時(shí)還是需要的。
A說(shuō):
我認(rèn)為一個(gè)架構(gòu)師,一個(gè)可以談架構(gòu)的人,應(yīng)該對(duì)原理有所了解,否則我認(rèn)為談架構(gòu)是虛談。依然用汽車(chē)的例子來(lái)講,架構(gòu)師相當(dāng)與一個(gè)汽車(chē)設(shè)計(jì)師,對(duì)汽車(chē)的各個(gè)子系統(tǒng)都了如指掌這樣才能造出好車(chē),而不是一個(gè)只會(huì)開(kāi)汽車(chē)的人就是汽車(chē)設(shè)計(jì)師了,要想了解軟件的原理,數(shù)據(jù)結(jié)構(gòu)是基礎(chǔ)中的基礎(chǔ)。
我僅僅想發(fā)表一下自己對(duì)中國(guó)軟件行業(yè)的現(xiàn)狀的一些感慨,中國(guó)有太多的程序員是應(yīng)用軟件程序員,中國(guó)已經(jīng)不缺乏這樣的人了,不缺會(huì)開(kāi)車(chē)的人,缺的是能造車(chē)的人,我認(rèn)為一個(gè)老司機(jī)對(duì)汽車(chē)的原理多少都會(huì)有些認(rèn)識(shí),但是離造車(chē)還相距甚遠(yuǎn),一個(gè)程序員也一樣,不能忽略基礎(chǔ),否則即使做了多年軟件充其量也就是一個(gè)coder。談架構(gòu)的資本也是建立在對(duì)原理的理解和掌握上的。





