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

第12章 軟件臃腫的原因

  • 長生奇談
  • 于長生
  • 1543字
  • 2019-02-10 17:20:12

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

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

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

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

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

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

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

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

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

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

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

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

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

而這個理由通常是沒有的。

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

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

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

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

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

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

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

避開重寫一切的誘惑

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

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

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

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

原因恐怕就如上所說,沒有什么人敢動那些身經(jīng)百戰(zhàn)的老代碼,即便效率它們再怎么低下,邏輯有再多的問題,只要硬件能跟上,在當(dāng)今時代的高性能機(jī)子能跑得順,那就不會有人考慮給它精簡了。

主站蜘蛛池模板: 武定县| 菏泽市| 锡林郭勒盟| 绥德县| 丹凤县| 汝城县| 温泉县| 常山县| 靖西县| 沙河市| 台南市| 唐河县| 舒兰市| 交口县| 四会市| 莫力| 行唐县| 辽宁省| 泰和县| 白沙| 石景山区| 澎湖县| 佳木斯市| 五大连池市| 普兰店市| 鱼台县| 吕梁市| 怀柔区| 德保县| 漾濞| 沿河| 时尚| 安吉县| 郴州市| 镇远县| 神农架林区| 海盐县| 寿宁县| 阿坝县| 河津市| 商洛市|