日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
女兒?jiǎn)柫宋乙粋€(gè)問(wèn)題:什么是抽象?

 晚上吃飯的時(shí)候,有人提到了“抽象”這個(gè)詞,孩子的好奇心是最強(qiáng)的,我女兒立刻就問(wèn)我:“爸爸,什么是抽象?”

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),淇濱企業(yè)網(wǎng)站建設(shè),淇濱品牌網(wǎng)站建設(shè),網(wǎng)站定制,淇濱網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,淇濱網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

剎那間我的腦海中涌過(guò)了很多畫(huà)面:

頭腦特工隊(duì)的電影

牛頓的萬(wàn)有引力公式

三個(gè)代表

k8s的pod, rs, service

設(shè)計(jì)模式

接口和抽象類(lèi)

......

這些她都聽(tīng)不懂,于是我決定用一個(gè)簡(jiǎn)單的例子來(lái)敷衍她:

“我先給你一個(gè)蘋(píng)果,然后又給了你一個(gè)蘋(píng)果,你現(xiàn)在有幾個(gè)蘋(píng)果?”

“兩個(gè)”

“我先給你一根香蕉,然后又給你了一根香蕉,你現(xiàn)在有幾根香蕉?”

“兩根”

“1 + 1 等于幾?”

“2”

“對(duì),1+1 = 2就是抽象,知道了吧?!?/p>

她點(diǎn)點(diǎn)頭。

"將來(lái)你還會(huì)學(xué)代數(shù),x+y = z,那是更高級(jí)的抽象......”

她似懂非懂地點(diǎn)點(diǎn)頭,眼神中充滿(mǎn)了迷茫。

回到正題吧,我今天想給大家分享的是下面這幅圖以及由它引發(fā)的感想。

這幅圖來(lái)自于《深入理解計(jì)算機(jī)系統(tǒng)》, 我第一次看到它時(shí)候可以說(shuō)是拍案叫絕,畫(huà)得實(shí)在是太棒了。

1

對(duì)程序員來(lái)講,我們并不是直接面向硬件進(jìn)行編程的,因?yàn)橛布?xì)節(jié)實(shí)在是太復(fù)雜了,所以必須要做封裝和抽象。

比如說(shuō)你要是想針對(duì)CPU這個(gè)硬件來(lái)編程, 這實(shí)在是太難了。

但是如果我們把CPU抽象為指令集,其中無(wú)非就是一些 MOV 指令,ADD指令, JUMP指令,那難度一下子就降低了一個(gè)數(shù)量級(jí)。

有了指令集,以及依托于指令集的匯編就夠了嗎?遠(yuǎn)遠(yuǎn)不夠!因?yàn)閰R編語(yǔ)言還是非常低級(jí),需要直接操作CPU的寄存器和內(nèi)存,如果一直用匯編語(yǔ)言編程,我估計(jì)現(xiàn)在的程序員數(shù)量要減少90%以上。

所以C語(yǔ)言,Pascal,C++出現(xiàn)了,Java,Python, Ruby出現(xiàn)了,用這些語(yǔ)言編程,根本不用考慮寄存器的事情,程序員離物理機(jī)器越來(lái)越遠(yuǎn),和硬件打交道的事情都交給了編譯器和解釋器。

有時(shí)候,有了高級(jí)語(yǔ)言還不夠,為了更加貼近業(yè)務(wù)領(lǐng)域,甚至讓業(yè)務(wù)人員直接編程,程序員還會(huì)創(chuàng)建領(lǐng)域特定語(yǔ)言(DSL)。

2

硬盤(pán)在沒(méi)有抽象的情況下,我們看到的就是盤(pán)面,磁道,扇區(qū)這樣的底層概念, 你要是想在上面寫(xiě)點(diǎn)兒東西,或者讀取一點(diǎn)兒東西,可就要累死了。

可以先做一點(diǎn)簡(jiǎn)單的抽象,隱藏磁道扇區(qū)這樣的概念,讓磁盤(pán)變成邏輯上按順序編號(hào)的磁盤(pán)塊,即磁盤(pán)塊1、磁盤(pán)塊2、磁盤(pán)塊3......這就好多了,但使用起來(lái)依然非常低級(jí)。

于是操作系統(tǒng)給我們提供了一個(gè)漂亮的抽象,文件!你只需要打開(kāi)文件,寫(xiě)入數(shù)據(jù),關(guān)閉文件即可,根本不用考慮底層的概念。

更重要的是,在Linux/Unix中,一切都是文件,可以用統(tǒng)一的接口來(lái)處理,這就更漂亮了。

3

文件是個(gè)非常好的抽象,可是對(duì)于商業(yè)應(yīng)用來(lái)講,它關(guān)注的是業(yè)務(wù)概念,是用戶(hù)名,電子郵箱,地址,部門(mén),賬戶(hù),存款,取款,余額等等,在這種場(chǎng)景下,文件就變得太低級(jí)了。

所以數(shù)據(jù)庫(kù)出現(xiàn)了,把文件這個(gè)概念也隱藏了,對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),你面對(duì)的就是一個(gè)個(gè)邏輯上表格,你只要發(fā)出SQL語(yǔ)句就可以存取數(shù)據(jù),并且還能保證ACID的特性,根本不用考慮底層的實(shí)現(xiàn)細(xì)節(jié), 用起來(lái)就更加舒服了。

4

前面說(shuō)的這些抽象,看起來(lái)似乎是分層的:

在日常的編程中,我們經(jīng)常做的一件事情就是“數(shù)據(jù)抽象”,或者說(shuō)找出抽象數(shù)據(jù)類(lèi)型(ADT),在Java中就是抽象類(lèi)或者接口。比如說(shuō)List就是一個(gè)ADT,它的實(shí)現(xiàn)可以是ArrayList,可以是LinkedList。

ADT的特點(diǎn)就是穩(wěn)定,很少變化,在項(xiàng)目和產(chǎn)品的開(kāi)發(fā)中,一個(gè)非常重要的工作就是定義自己項(xiàng)目的ADT(以及ADT之間的關(guān)系),ADT一旦確定,那這個(gè)項(xiàng)目的骨架基本上就定下來(lái)了。

但是這個(gè)ADT不好找,有時(shí)候可以直接和業(yè)務(wù)概念對(duì)應(yīng)上,有時(shí)候需要自己“造”一些概念出來(lái),這就考驗(yàn)開(kāi)發(fā)人員的抽象能力了。

軟件業(yè)發(fā)展到今天,就是一部不斷抽象的歷史。抽象降低了復(fù)雜度,是一件非常好的事情,但是現(xiàn)在很多程序員日常的工作就是針對(duì)抽象的概念進(jìn)行編程,由于很多細(xì)節(jié)被屏蔽,工作就顯得比較無(wú)趣,如果想讓自己的編程生涯變得有趣一點(diǎn),我有兩點(diǎn)建議:

一、要了解這些抽象下面是什么東西。

二、努力爭(zhēng)取到創(chuàng)建抽象的權(quán)力,即設(shè)計(jì)的權(quán)力和架構(gòu)的權(quán)力。

【本文為專(zhuān)欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】


本文題目:女兒?jiǎn)柫宋乙粋€(gè)問(wèn)題:什么是抽象?
文章地址:http://m.5511xx.com/article/cosghis.html