新聞中心
張大胖學(xué)了Java語言,學(xué)了Web基礎(chǔ)知識,又學(xué)了SpringBoot, MyBatis,Vue等框架, 他成了一個"全沾"程序員。

創(chuàng)新互聯(lián)建站專注于鄲城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供鄲城營銷型網(wǎng)站建設(shè),鄲城網(wǎng)站制作、鄲城網(wǎng)頁設(shè)計(jì)、鄲城網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造鄲城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供鄲城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
[[334243]]
他覺得這樣也挺好,前后端通吃,可以在編碼的天地中自由地飛翔了。
可是他在網(wǎng)上、群里經(jīng)常聽到大家說計(jì)算機(jī)基礎(chǔ)很重要,尤其以碼農(nóng)翻身為甚, 像什么:
勿以浮沙筑高臺
基礎(chǔ)不牢,地動山搖
沉下去有多深,彈起來就有多高
......
張大胖不以為然嗤之以鼻,他認(rèn)為除了在面試時會用到計(jì)算機(jī)底層的基礎(chǔ)知識,別的地方根本用不到,工作中主要是實(shí)現(xiàn)業(yè)務(wù),連個稍微復(fù)雜一點(diǎn)兒的算法都用不到。
他決定去請教一下軟件大師,問問到底是怎么回事。
張大胖:大師,我覺得現(xiàn)在的編程已經(jīng)變得非常輕松了,利用現(xiàn)有的框架和類庫開發(fā)軟件非常容易,高中生編程都沒有任何問題。
大師:你覺得為什么會這樣?
張大胖:就是不用接觸底層的那些細(xì)節(jié)了,直接就可以面向業(yè)務(wù)開發(fā)了。
大師:你算是說到點(diǎn)子上了,這就是抽象帶來的好處啊。
張大胖:抽象?我似乎聽說過一句話,說計(jì)算機(jī)行業(yè)的任何問題,都可以通過一個抽象層來解決。
大師:是啊,就說計(jì)算機(jī)編程語言吧,就是不斷抽象,逐漸遠(yuǎn)離計(jì)算機(jī)硬件的一個過程,想當(dāng)年我用匯編編程, 想在屏幕上輸出一個Hello World都累得要死,寫個大程序更是要累得吐血了。
張大胖:嗯,我現(xiàn)在用的就是最高層的Java,根本不用考慮什么匯編語言,機(jī)器語言,連指針都用不上!
大師:再比如說,Web編程,我用CGI那會兒真是痛不欲生。
張大胖:哈哈,我還是站在最高層。
大師:網(wǎng)絡(luò)編程也是如此。
張大胖:哈哈, 我只用HTTP,根本不管底層的東西。
大師:還有對數(shù)據(jù)的操作,也是一層層地抽象。
張大胖:大師,我發(fā)現(xiàn)我一直是站在巔峰啊!
大師:這有什么好得瑟的,你站得越高,越容易出現(xiàn)難以解決的抽象泄露的問題。
張大胖:抽象的泄露?
大師:對, 這是Stack Overflow的創(chuàng)始人Joel Spolsky提出來的一個理論:所有重大的抽象機(jī)制在某種程度上都是有泄露的!
張大胖: 不對吧! 這種分層的抽象,好處不就是每一層都可以屏蔽下層的變化嘛,我站在高層編程,根本不用理會底層, 為什么會泄露?
大師:我來給你舉幾個例子,你就明白了。外國有個程序員,她使用Ruby語言通過HTTP向本地的一個消息隊(duì)列發(fā)送消息, 這抽象層次很高吧! 但是每次發(fā)送消息都得耗費(fèi)40ms,這是不應(yīng)該的, 時間太長了。 她查來查去,發(fā)現(xiàn)Ruby的類庫沒有設(shè)置TCP_NODELAY, 但是本地的HAProxy卻使用了TCP delayed acknowledgement,于是雙方互相等待,出現(xiàn)了延時。
張大胖:我聽不懂!
大師:你站在抽象的巔峰,這些TCP的細(xì)節(jié)怎么能聽懂呢?我給你舉個簡單例子吧, 比如你用了Hibernate這個ORM工具,它是一個抽象層,隱藏了SQL, 但是當(dāng)出現(xiàn)Hibernate性能問題的時候,你怎么辦?
張大胖:那我得去看Hibernate 是怎么把對象變成SQL語句的,然后慢慢調(diào)優(yōu)。
大師:對啊,你看Hibernate這個抽象層沒法完美地隱藏底層的信息,發(fā)生泄露了。 SQL 也是個抽象層,隱藏了讀數(shù)據(jù)庫表查詢處理的細(xì)節(jié),如果SQL語句出現(xiàn)性能問題,你怎么辦?
張大胖:那...... 我只好去分析SQL的查詢計(jì)劃,如何利用索引,還得慢慢調(diào)優(yōu)。
大師:你看SQL這個看似完美的抽象層也泄露了不是?
張大胖:有道理,哎呀,這抽象層泄露的代價很高啊,我得學(xué)習(xí)這么多底層的東西。
大師:所以Joel Spolsky說“抽象只能節(jié)省你的工作時間,不能節(jié)省你的學(xué)習(xí)時間”, 用高層的抽象來工作,會比較快,但是你還得學(xué)習(xí)底層的東西,那是跑不掉的。
張大胖:明白明白了,為了能繼續(xù)好好地搬磚,我得趕緊去學(xué)學(xué)計(jì)算機(jī)的底層基礎(chǔ)知識了。
(完)
如需轉(zhuǎn)載,請通過作者微信公眾號coderising獲取授權(quán)。
網(wǎng)站欄目:我發(fā)現(xiàn),我一直是站在巔峰??!
標(biāo)題鏈接:http://m.fisionsoft.com.cn/article/dhhohpi.html


咨詢
建站咨詢
