官术网_书友最值得收藏!

第12章 軟件臃腫的原因

  • 長(zhǎng)生奇談
  • 于長(zhǎng)生
  • 1543字
  • 2019-02-10 17:20:12

前幾天方室網(wǎng)志寫了一篇文章這越來越臃腫的軟件,我看完后才懂有這么一個(gè)叫做“安迪比爾”的定律,它描述了軟件商跟硬件商的關(guān)系。

定律內(nèi)容簡(jiǎn)單說,就是軟件與硬件是互相促進(jìn)的關(guān)系。

硬件的性能越來越強(qiáng),軟件的胃口也越來越大。

實(shí)話說,當(dāng)今智能手機(jī)的性能早已經(jīng)超越了七八十年代的老電腦了,可那時(shí)候的計(jì)算機(jī)能夠支撐載人登月的任務(wù),而如今的掌機(jī)只能用來玩玩小游戲運(yùn)行小軟件,是什么造成了這種奇怪的局面?

不是硬件真的不強(qiáng),而是軟件體積的確太大,這樣解釋下來真的很符合人們的直覺!

我在文后評(píng)論說這“安迪比爾定律”不對(duì),現(xiàn)在仔細(xì)想想其實(shí)它是說對(duì)了一半,軟件的確是越來越臃腫,但相應(yīng)的功能也越來越多,雖然很多功能可能用不著,但作為一個(gè)要符合七八億人胃口的東西,到如今水平也的確不易,但這功能什么的都是次要的,我了解到一些觀點(diǎn),認(rèn)為背后的真相應(yīng)該是:當(dāng)今很多軟件充滿了垃圾的代碼,這并非有意為之,只是一種無奈的現(xiàn)象。

首先,大家猜猜一個(gè)完整獨(dú)立的博客程序代碼可以做多么小?wordpress3.8版本解壓后占用空間是17.2M。

而我了解到的王志勇的博客采用的是他自己開發(fā)的,以精簡(jiǎn)高效為主要目標(biāo)的Arsue Blog,主程序在20K以內(nèi),核心程序在5K以內(nèi),Blog首頁(yè)的主程序在1K左右。

注意,兩者體積單位是不同的,一個(gè)M級(jí),一個(gè)是K級(jí),相差一千倍!使用Arsue Blog搭建的博客即便用的是價(jià)格低廉的虛擬主機(jī),也能達(dá)到運(yùn)行如飛一樣的速度。

以下就是從果殼網(wǎng)上摘來的行業(yè)人士的觀點(diǎn)

再牛逼的軟件,里面也必然有新手/畢業(yè)生/實(shí)習(xí)生貢獻(xiàn)的代碼,并且是極爛,極不穩(wěn)定的代碼。包括你現(xiàn)在用的微軟操作系統(tǒng),蘋果播放器,谷歌瀏覽器……有人說谷歌對(duì)于合入代碼控制極為嚴(yán)格,沒錯(cuò),但是仍然有新手合入的爛代碼,谷歌曾經(jīng)吐槽過這樣一件事:C語(yǔ)言的創(chuàng)始人曾經(jīng)被谷歌招聘成為員工,但在入職三個(gè)月后仍然沒有合入代碼的權(quán)限,真實(shí)原因其實(shí)是因?yàn)楦鞣N流程沒有走完,但被外界吐槽的是這樣的牛人都不讓寫代碼,同時(shí)谷歌還是混入了大量的低質(zhì)量代碼。

Java的創(chuàng)始人SUN公司曾經(jīng)有一次組織了大量人力物力對(duì)所有Java代碼使用靜態(tài)工具檢查并消除所有l(wèi)int告警和錯(cuò)誤,這被他們當(dāng)作一件極其大的成就來宣傳。

通常大公司里對(duì)于代碼的態(tài)度是這樣的:只要這段代碼通過了所有測(cè)試并且已經(jīng)入庫(kù),那么,除非有一個(gè)能說服所有人,包括項(xiàng)目經(jīng)理,架構(gòu)師,測(cè)試部,市場(chǎng)部等等的理由,那么就不允許再被修改。

而這個(gè)理由通常是沒有的。

而且越是大公司越對(duì)這條規(guī)定執(zhí)行的嚴(yán)格,微軟的一個(gè)前高級(jí)官員曾經(jīng)還特地挑出來一段爛代碼自曝家丑。

另一方面,越是編程高手越喜歡蔑視編程規(guī)則,寫出一些炫技的代碼,這也造成了一些低質(zhì)量代碼混入

以前微軟的源代碼曾經(jīng)泄漏過,里面的注釋里,滿滿的都是程序員面對(duì)爛代碼的吐槽啊。

有一段時(shí)間我還在想恐怕Linux是唯一的神話了,后來我發(fā)現(xiàn)在某種意義上是的,Linux會(huì)在爛代碼之前注釋說:這段代碼很爛,不要學(xué)。

之所以Linux會(huì)容忍爛代碼混入版本,是因?yàn)樗麄儜械脤懀缓笠恍┐蠊揪统颂摱肓恕?

我知道可能很多人會(huì)覺得這沒什么,可是對(duì)于一個(gè)將蘋果谷歌Linux奉為心目中的圣地的程序員來說這簡(jiǎn)直就是精神支柱的幻滅啊!!!

然后,我也了解過一些老鳥對(duì)菜鳥的忠告,其中一條是

避開重寫一切的誘惑

盡可能多的重用代碼是最好的選擇,無論代碼是多么的丑陋,畢竟它已經(jīng)被測(cè)試過了,也被審查過了

拋棄舊代碼——尤其是存在于產(chǎn)品中的代碼——也意味著拋棄了經(jīng)年累月測(cè)試并實(shí)戰(zhàn)過的代碼,以及你還未知曉的周邊代碼和bug補(bǔ)丁。

這會(huì)浪費(fèi)大量的時(shí)間、精力和多年積累下來的知識(shí)

最后我明白了為何近些年很多大公司的軟件更新版本越來越快,其實(shí)都是小修小補(bǔ),鮮見有什么脫胎換骨的徹底變革。

原因恐怕就如上所說,沒有什么人敢動(dòng)那些身經(jīng)百戰(zhàn)的老代碼,即便效率它們?cè)僭趺吹拖拢壿嬘性俣嗟膯栴},只要硬件能跟上,在當(dāng)今時(shí)代的高性能機(jī)子能跑得順,那就不會(huì)有人考慮給它精簡(jiǎn)了。

主站蜘蛛池模板: 平阳县| 兴城市| 山东| 于都县| 木兰县| 大石桥市| 林周县| 嘉祥县| 定襄县| 云梦县| 新平| 靖安县| 梁平县| 全椒县| 江津市| 临西县| 高州市| 古交市| 汉寿县| 五峰| 永城市| 长阳| 津南区| 无锡市| 延庆县| 来安县| 诏安县| 天门市| 五原县| 甘南县| 长岭县| 翁源县| 德州市| 吉林市| 房产| 正阳县| 莆田市| 财经| 西安市| 城固县| 邹城市|