當(dāng)代程序員,也就是我們,其實(shí)是非常幸運(yùn)的,為什么?因?yàn)榍叭?,也就是那些大牛已?jīng)為你鋪好路了。大牛鋪路導(dǎo)致的后果就是整個(gè)計(jì)算機(jī)系統(tǒng)像這個(gè)漢堡包一樣是分層的:
越是上層越抽象,用起來也就越方便。大牛們是怎么鋪路的?
最開始的計(jì)算機(jī)只是一堆 CPU 與內(nèi)存等硬件,要讓這群大爺工作需要直接匯編編寫機(jī)器指令。這也太麻煩了吧,因此那些大牛鼓搗出一個(gè)叫做高級(jí)語言的東西,現(xiàn)在方便多了,但程序不能只運(yùn)行在一種架構(gòu)上吧,為了讓程序可以不加改動(dòng)的到處運(yùn)行標(biāo)準(zhǔn)庫出現(xiàn)了,標(biāo)準(zhǔn)庫對(duì)上層屏蔽了底層差異。
現(xiàn)在問題解決了吧,但是別著急,還沒完呢!
程序使用的數(shù)據(jù)結(jié)構(gòu)和算法太復(fù)雜了,每次都要重頭開始寫一個(gè)二叉樹可不是一件有意思的事,怎么辦呢?
大牛們都已經(jīng)替你想好啦,直接把這些數(shù)據(jù)結(jié)構(gòu)和算法以庫的形式集成到語言中,就像 C++ 的 STL,Java的容器,想使用數(shù)據(jù)結(jié)構(gòu)嗎?簡單得很,你只需要知道數(shù)據(jù)結(jié)構(gòu)和算法的名字就足夠了,剩下的查查接口文檔,夠方便吧。
這些都是小意思,還有更牛的,像搭建一個(gè)網(wǎng)站、編寫一個(gè)App,其實(shí)這些寫的代碼大同小異,為什么要一遍遍重復(fù)造輪子呢?程序員的時(shí)間可是很寶貴的,怎么辦?大牛們依然很貼心的為你想好了,于是框架應(yīng)運(yùn)而生。想搭建一個(gè)網(wǎng)站簡直不要太容易,簡單幾行代碼,一個(gè)功能完備的web server就跑起來了,現(xiàn)在還有誰說編程難嗎?什么都給你想好了。
我們呢?大牛鋪好了路,于是這樣一幕就出現(xiàn)了:
大牛們提供的技術(shù)使用起來就像搭積木一樣容易!只要你的需求不超過積木的表達(dá)能力那么就可以愉快地用下去,根本就不用關(guān)心下一層是如何實(shí)現(xiàn)的。這就是框架本身的目的以及優(yōu)勢,用起來很容易,這也是為什么很多人對(duì)此趨之若鶩的原因,以為寫代碼其實(shí)就是在用框架。
但是這樣也有壞處,那就長此以往你會(huì)被鎖死在這一層。那怎么辦呢?
一旦依賴的這層技術(shù)不能滿足需求,你就會(huì)驚訝的發(fā)現(xiàn)自己根本沒有學(xué)會(huì)編程,這時(shí)你才能意識(shí)到各種底層技術(shù)以及數(shù)據(jù)結(jié)構(gòu)算法的重要性,本質(zhì)上這些才是計(jì)算機(jī)科學(xué)的核心,這些核心技術(shù)賦予你層級(jí)躍遷的能力,這樣你就不會(huì)被鎖死在某一層中了,當(dāng)這一層不能滿足你要求是你可以自己造出另一層,這其實(shí)就是大家眼中那些大牛在做的事情。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.