程序員必看:到底為什么要掌握數(shù)據(jù)結(jié)構(gòu)與算法?看了就懂了
當(dāng)代程序員,也就是我們,其實(shí)是非常幸運(yùn)的,為什么?因?yàn)榍叭耍?也就是那些大牛已經(jīng)為你鋪好路了?。

大牛鋪路導(dǎo)致的后果就是整個(gè)計(jì)算機(jī)系統(tǒng)像這個(gè)漢堡包一樣是分層的:

越是上層越抽象,用起來(lái)也就越方便。
大牛們是怎么鋪路的
最開(kāi)始的計(jì)算機(jī)只是一堆 CPU 與內(nèi)存等硬件,要讓這群大爺工作需要直接匯編編寫機(jī)器指令。
這也太麻煩了吧,因此那些大牛鼓搗出一個(gè)叫做高級(jí)語(yǔ)言的東西,現(xiàn)在方便多了,但程序不能只運(yùn)行在一種架構(gòu)上吧,為了讓程序可以不加改動(dòng)的到處運(yùn)行標(biāo)準(zhǔn)庫(kù)出現(xiàn)了,標(biāo)準(zhǔn)庫(kù)對(duì)上層屏蔽了底層差異。
現(xiàn)在問(wèn)題解決了吧,但是別著急,還沒(méi)完呢!
程序使用的數(shù)據(jù)結(jié)構(gòu)和算法太復(fù)雜了,每次都要重頭開(kāi)始寫一個(gè)二叉樹(shù)可不是一件有意思的事,怎么辦呢?
大牛們都已經(jīng)替你想好啦,直接把這些數(shù)據(jù)結(jié)構(gòu)和算法以庫(kù)的形式集成到語(yǔ)言中,就像 C++ 的 STL,Java的容器,想使用數(shù)據(jù)結(jié)構(gòu)嗎?簡(jiǎn)單的很,你只需要知道數(shù)據(jù)結(jié)構(gòu)和算法的名字就足夠了,剩下的查查接口文檔,夠方便吧。

這些都是小意思,還有更牛的,像搭建一個(gè)網(wǎng)站、編寫一個(gè)App,其實(shí)這些寫的代碼大同小異,為什么要一遍遍重復(fù)造輪子呢?程序員的時(shí)間可是很寶貴的,怎么辦?大牛們依然很貼心的為你想好了,于是框架應(yīng)運(yùn)而生。
想搭建一個(gè)網(wǎng)站簡(jiǎn)直不要太容易,簡(jiǎn)單幾行代碼,一個(gè)功能完備的web server就跑起來(lái)了,現(xiàn)在還有誰(shuí)說(shuō)編程難嗎?什么都給你想好了。
我們呢?
大牛鋪好了路,于是這樣一幕就出現(xiàn)了:

大牛們提供的技術(shù)使用起來(lái)就像搭積木一樣容易!只要你的需求不超過(guò)積木的表達(dá)能力那么就可以愉快的用下去,根本就不用關(guān)心下一層是如何實(shí)現(xiàn)的。這就是框架本身的目的以及優(yōu)勢(shì),用起來(lái)很容易,這也是為什么很多人對(duì)此趨之若鶩的原因。
但是這樣也有壞處,?那就長(zhǎng)此以往你會(huì)被鎖死在這一層?。
怎么辦?
一旦依賴的這層技術(shù)不能滿足需求,你就會(huì)驚訝的發(fā)現(xiàn)自己根本沒(méi)有學(xué)會(huì)編程,這時(shí)你才能意識(shí)到各種底層技術(shù)以及數(shù)據(jù)結(jié)構(gòu)算法的重要性,?本質(zhì)上這些才是計(jì)算機(jī)科學(xué)的核心,這些核心技術(shù)賦予你層級(jí)躍遷的能力,這樣你就不會(huì)被鎖死在某一層中了?,當(dāng)這一層不能滿足你要求是你可以自己造出新的一層,這其實(shí)就是大家眼中那些大牛在做的事情。
所以,你現(xiàn)在你知道為什么要學(xué)好數(shù)據(jù)結(jié)構(gòu)與算法了嗎?

還有句話是這么說(shuō)的:栽一棵樹(shù)最好的時(shí)間是十年前,其次是現(xiàn)在。對(duì)于學(xué)習(xí)編程或者正在工作的朋友,如果你想更好的提升你的編程能力幫助就業(yè)乃至轉(zhuǎn)行,彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
