中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

什么是軟件

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

前面通過四篇文章,把什么是架構(gòu),如何做好架構(gòu)等必要的概念澄清了一下。這些概念對于在各種不同的領(lǐng)域都應(yīng)該也是有用的,需要讀者自行思考,并應(yīng)用到自己所在的領(lǐng)域中。在這篇文章開始,我們用同樣的思考,來看看軟件是怎么回事,以及如何運(yùn)用架構(gòu)思維,更好的設(shè)計(jì)和實(shí)現(xiàn)軟件。

  馮諾依曼結(jié)構(gòu),圖靈機(jī),以模擬人為目標(biāo)

  軟件的歷史,實(shí)際上可以說是用機(jī)器模擬人的歷史。不管大家(包括在這個(gè)歷史過程中的參與者)有沒有意識到,我們都有意無意的在計(jì)算機(jī)上模仿人類的行為。從馮諾依曼結(jié)構(gòu)開始,程序邏輯開始脫離硬件,采用二進(jìn)制編碼。加上存儲(chǔ),配合輸入輸出,一個(gè)簡化的大腦就出現(xiàn)了。圖靈機(jī)則是模擬大腦的計(jì)算,用數(shù)學(xué)的方式把計(jì)算的過程定義了出來,著名的邱奇-圖靈論題:一切直覺上能行可計(jì)算的函數(shù)都可用圖靈機(jī)計(jì)算,反之亦然。軟硬件兩者一結(jié)合,一個(gè)可編程的大腦出現(xiàn)了,這也是現(xiàn)在為什么我們把計(jì)算機(jī)叫做電腦。在硬件上編寫出的程序,就是軟件,是用來控制硬件的行為的。

  成本為王

  在初期,軟件使用二進(jìn)制編寫的,從硬件到軟件,成本都非常的高。隨著半導(dǎo)體技術(shù)的進(jìn)步,硬件的成本越來越低,性能越來越高,甚至出現(xiàn)了摩爾定律:當(dāng)價(jià)格不變時(shí),集成電路上可容納的元器件數(shù)目,約每隔18-24個(gè)月增加一倍,性能提升一倍。軟件方面,為了簡化難度,開始采用匯編,進(jìn)一步出現(xiàn)了類似于人類的語言的高級語言,比如C/C++/Java等,這使得人類可以用類似于人的語言來和計(jì)算機(jī)溝通。軟件工程師慢慢越來越多,開發(fā)軟件的成本也越來越低。計(jì)算機(jī)就好像是一個(gè)只需要電,不需要休息的人,可以無休無止的工作。

  人們越來越愿意把原來只有人才能做的事情,交給計(jì)算機(jī)來做。結(jié)果就導(dǎo)致軟件越來越豐富,能夠做的事情也越來越多,成本也越來越低。可以這么說,成本是我們?yōu)槭裁床捎密浖闹饕獎(jiǎng)恿Γ梢怨?jié)省大量的人員培訓(xùn),減少雇員的數(shù)目。隨著互聯(lián)網(wǎng)的發(fā)展,人類社會(huì)也開始軟件化了。原來必須實(shí)體店來進(jìn)行售賣的,搬到互聯(lián)網(wǎng)上,開店成本更低,并且能夠接觸到更多的人。想象一下,一個(gè)門店每天的人流達(dá)到百萬級別是很恐怖的,由實(shí)體空間大小來決定。但是在互聯(lián)網(wǎng)上,訪問量千萬級別都不算什么。最終的結(jié)果就變成,每個(gè)人能夠負(fù)擔(dān)的工作越來越多,成本越來越低。這也是為什么軟件這么熱的原因。

  軟件扮演的角色

  隨著軟件的規(guī)模的變大,做好一個(gè)軟件也變得越來越難了。早期的程序員寫程序,主要是為了幫助自己研究課題。這些程序員熟練了之后,提高了自己的生產(chǎn)力,并發(fā)現(xiàn)還可以幫助別人寫程序,慢慢軟件就變成了一個(gè)獨(dú)立的行業(yè)。程序從早期由一個(gè)人完成,也逐漸變成了由很多不同角色的人共同合作來完成。以下討論的前提,都是基于幫助別人寫程序,多人合作的基礎(chǔ)上的。結(jié)論對于單人為自己寫程序也適用。

  在沒有軟件之前,每個(gè)人干自己的工作,自行保存自己的工作結(jié)果。人們面對面或者通過電話等溝通,如下圖所示。

  有了軟件之后,實(shí)際上,我們是把我們?nèi)粘I钪兴龅氖虑,包括我們自己本人都一起虛擬化到了計(jì)算機(jī)中。而人則演化成了,通過計(jì)算機(jī)的輸入輸出設(shè)備,控制計(jì)算機(jī)中的自己,來完成日常的工作,以及與其他人的溝通。也就是說,軟件一直以來的動(dòng)力,始終都是來模擬人和這個(gè)社會(huì)的。比如模擬大氣運(yùn)動(dòng)(天氣預(yù)報(bào)),模擬人類社會(huì)(互聯(lián)網(wǎng)社交),模擬交易,包括現(xiàn)在正在流行的VR,人工智能等等。模擬的對象越來越高級,難度越來越大。

  不管如何發(fā)展,模擬人的所有行為都是一個(gè)大的趨勢。也就是說,軟件的主要目的,還是把人類的生活模擬化,提供更低成本,高效率的新的生活。從這個(gè)角度來看,軟件主要依賴的還是人類的生活知識。軟件更多的是扮演一個(gè)cost center,這也是為什么會(huì)出現(xiàn)很多的軟件代工。

  軟件開發(fā)的架構(gòu)演變

  軟件工程師是實(shí)現(xiàn)這個(gè)模擬過程的關(guān)鍵人物,他必須先理解人是怎么在日常生活中完成工作的,才能夠很好的把這些工作在計(jì)算機(jī)中模擬出來?墒擒浖こ處熜枰獙W(xué)習(xí)大量的計(jì)算機(jī)語言和計(jì)算機(jī)知識,還需要學(xué)習(xí)各行各業(yè)的專業(yè)知識。軟件工程師本身的培養(yǎng)就比較難,同時(shí)行業(yè)知識也要靠時(shí)間的積累,這樣就遠(yuǎn)遠(yuǎn)超出了軟件工程師的能力了。所以軟件開發(fā)就開始有分工了,行業(yè)知識和業(yè)務(wù)的識別,會(huì)交給BA,系統(tǒng)的設(shè)計(jì)會(huì)交給架構(gòu)師,設(shè)計(jì)的實(shí)現(xiàn)交給架構(gòu)師,實(shí)現(xiàn)的檢驗(yàn)交給測試,還有很多其他角色的配合。為了組織這些角色的工作,還有項(xiàng)目經(jīng)理。這就把原來一個(gè)人的連續(xù)工作,拆分成了不同角色的人的連續(xù)配合,演化成了不同的軟件開發(fā)的模式。然后慢慢演變出專門為別人開發(fā)軟件的軟件公司。

  軟件架構(gòu)的出現(xiàn)

  如同前面描述的架構(gòu)的定義,軟件架構(gòu)的出現(xiàn)也是同樣的。一開始是懵懵懂懂的去寫軟件,后來慢慢的就有意識的去切分,演變成了不同的架構(gòu)。這個(gè)背后的動(dòng)力也是一樣的,就是提升參與的人的利益,降低成本。導(dǎo)火索也是軟件工程師的任務(wù)太重,我們需要把很多工作拆分出來。拆分的原則也是一樣的,如何讓權(quán)責(zé)一致。同樣,這個(gè)拆分也是需要組織架構(gòu)的調(diào)整,來保證架構(gòu)的落地。具體如何分拆,如何調(diào)整,我們將在另外一篇中著重討論。

  以上通過簡單的描述計(jì)算機(jī)和軟件的發(fā)展歷史,闡明軟件的本質(zhì),其實(shí)就是通過把人類的日常工作生活虛擬化,減少成本,提升單個(gè)人員的生產(chǎn)力,提升人類自己的利益。軟件工程師的職責(zé)在這個(gè)浪潮中,不堪重負(fù),自然而然就分拆為不同的角色,形成了一個(gè)獨(dú)特的架構(gòu)體系。這一切的背后,仍然是為了提升人類自己的利益,解決人類自己的問題。

標(biāo)簽: 互聯(lián)網(wǎng) 互聯(lián)網(wǎng)的發(fā)展

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:讀書總結(jié)之NSObject

下一篇:我們究竟什么時(shí)候可以使用Ehcache緩存