軟體規模與自重
每天上下班都需要坐班車,車載的人以50人,每人平均150斤計算,其載重量不過3.5噸。但是班車的配重(自重)有近10噸,所以客車的有效載荷為30/130,大概23%左右,並且只在較短的時間(上下班時)有效。按照這個觀察的角度,是不是感到資源浪費了呢?
這種現象,使我對軟體的有意資源浪費,這個一直以來的的疑惑找到了答案。
我們知道,Java的執行,是非常耗費計算機系統資源的事情,但是卻有那麼多的企業級的應用都使用Java開發。僅僅為了安全和可靠嗎。
對了,就是為了安全和可靠,因為這是工業級應用的要求,有點不計成本的瘋狂。
現在的軟體越來越耗費系統資源,尤其微軟出產的軟體,能毫不客氣的吸收你在硬體資源上的所有盈餘。如果你為此感到奇怪的話,那應該回顧一下這些年來我們對軟體都做了些什麼樣的苛刻要求。
穩定、安全、易用、簡單、美觀……
我們已經有輛自行車了,為什麼還要耗費資源(Money)購置轎車呢?
也許是出於同樣的目的,讓我們的軟體從一輛自行車變成了一輛轎車!伴隨著規模的迅速擴大,有效載荷(核心邏輯)的越來越低。大量的程式碼都成了配重,為了支撐那為數不多的有效部分穩定執行。
曾經做過一個又C語言編制的佇列管理程式,改造為流行的Java語言程式。C的程式碼共有3000行,在程式碼級別的對等的改為Java程式後,發現只有1500行左右。這能體現出一點高階計算機語言在變成效率方面的優勢。但是,別樂觀的太早。這1500是按照C語言編碼風格編寫的,既然現在使用Java,這麼做可不合時宜。怎麼辦?按照Java的規定的編碼規約做吧。
接下來的事情有些出乎所料。
新增C語言程式設計中沒有的東西:修改函式名稱、新增註釋、入口引數檢查、例外處理、錯誤Log輸出、緩衝區的封裝……,大概解決緩衝區用了10000行程式碼,畢竟Java中可不能向C語言那樣,開一個Buffer,然後什麼東西都往哪裡仍,現在得吧什麼東西都要封裝並標註好了才能放到緩衝區去。為次設計了一大堆的類來封裝原來雜七雜八的資料。另外新增的例外處理大概也用了10000行的程式碼。其他的部分增加有8000多行。
看看,不得了,從1500到三萬,規模增加了20倍。其中的28500都是為了保證那1500行可靠的執行。所謂的工業化就是這樣:安全第一。
這樣的事情也會令我們迷惑,為什麼要花99%的努力,去防範那1%可能出現的錯誤呢?
還是那句話,工業化使然。因為我們做的是工業化的軟體。
就像生產一輛汽車,有人會說這車一定不會發生車禍而取消所有安全防範措施?!
現在的人們對越來越脆弱,喜歡遷怒於人,樂於給別人找事。即便有這樣一輛汽車,有人敢開但廠家敢給他開嗎?誰也不想引火燒身。
所以,做軟體,也就是生產汽車,不管會不會發生車禍(1%的可能),安全氣囊等的措施(99%的努力)是不可少的。
相關文章
- Google 如何設計與構建超大規模的軟體系統Go
- vivo 超大規模訊息中介軟體實踐之路
- AOP在大規模軟體開發專案中應用的嘗試與思考
- 構建雲規模軟體的10項基本實踐
- 淺談軟體專案規模估計——怎麼估?
- 英國政府開源了其大規模監控軟體
- Keil的軟體模擬和硬體模擬
- 軟體2.0初具規模:軟體行業如何藉助人工智慧提高效率? - kdnuggets行業人工智慧
- IDC:內容管理軟體市場規模持續擴大HJ
- Modelsim模擬軟體與Notepad++關聯
- 微軟Defender再次出現大規模誤殺,Chrome/Edge等多款軟體中招微軟Chrome
- 軟體測試規範
- 軟體版本管理規範
- 軟體資源規劃
- 大規模向量檢索與量化方法
- 攝影棚布光模擬用什麼軟體好?棚布光模擬軟體推薦!
- 家居工業軟體市場未來將突破千億規模 | 愛分析報告
- 下一代超大規模軟體定義網路技術實踐
- Altair SimSolid 工程模擬軟體 衡祖模擬AISolid
- PID除錯軟體(C#、模擬、模擬)除錯C#
- 模擬軟體應用案例輯
- 軟體研發安全規範
- 軟體版本命名規範
- 當軟體遭遇潛規則
- 軟體開發與軟體研發
- Redis中介軟體與Web中介軟體RedisWeb
- 大規模即時雲渲染技術,追求體驗與成本的最佳均衡
- 軟體測試案例實踐:銀行如何做大規模自動化測試?
- 軟體工程 第一章 軟體與軟體工程軟體工程
- 治理、風險與合規(GRC)Oracle解決方案及軟體介紹Oracle
- 【軟體工具】SecureCRT 軟體安裝與使用Securecrt
- 網路軟體與桌面軟體的融合
- 軟體需求規格說明書
- 淺談軟體測試規範
- 軟體測試職業規劃
- IDC:預計2017年中國軟體市場規模將達131億
- 《軟體加密與解密》——軟體加軟體相似性比對加密解密
- 軟體測試與體育