作者:散彈一號
朋友來訊,引述練乙錚今年四月一篇文章[0],問我意見。練總這篇文章,講香港和大陸的GDP增長,我當然不懂。(大陸的一切,我從來都不懂。)但文章裡,有一段關於寫軟件的技術,這個我反而懂。容我引述如下:
舉例說,某燕梳公司要處理大量數據,外判給一個電腦服務公司代行;為了提供這個服務,後者要購入一個新型的數據處理器,聘請一位軟件顧問工程師工作一個月。很明顯,處理器的技術進步一日千里,性價比不斷上升,但軟件編寫的技術就不會那樣突飛猛進,故此,處理同樣複雜大量的燕梳數據,50年前的硬件部分成本可能很高,佔總成本的九成;
15年前,硬件技術進步了,硬件成本可能只佔總成本的一成,但編寫軟件的技術沒有大變;到了今天,硬件成本更可能佔不到總成本的1%,軟件還是得一行一行地編寫,有關技術可謂「五十年不變」!那麼,「替燕梳公司建立一個數據處理系統」這個服務的製造業技術含量本來很高,佔成本的大部分,但到後來就差不多微不足道,變成上述的補習服務一樣,主要是一種人力心智的投入,生成這個服務的效率因而不會隨着時間過去而顯著提升。
文中聲稱「軟件技術五十年不變」是一個很大膽的觀點。如果單以字面上理解,這句話一定是錯的。舉個例,如果我要寫一個程式,把輸入的資料排序(sort),三四十年前的程式大概像這樣:

以上程式,大約有六十行程式碼,輸入和輸出示範:

二十幾年前,同樣的程式用 C language 寫,縮短到二十行:

十年前,用 python 寫,一行就夠
誰說「軟件技術五十年不變」呢?事實上,軟件技術日新月異,從事電腦科技的人經常抱怨要花很多時間更新知識,追上潮流。潮流這東西雖然一時一樣,但整體而言,新技術的確會令編寫程式的時間大大縮短。一個好的軟件工程師隨時懂得十幾種程式語言,二十幾種軟體框架,目的只是能夠更有效編寫系統。做 IT 行業,大家都擔心如果追不上潮流會被取締。就算今天收入略勝於儕輩,面對著一身新潮技術的後進,也不知幾年後能否保住飯碗。如果有「軟件技術五十年不變」呢支歌仔唱,IT專業人士可以食老本,靠「N年經驗」自持資歷高深的老屎窟,那將會是多麼美好的事情。
服務業的產值增長速度一般而言低於製造業?也許有人會問,既然軟件技術越來越先進,為甚麼軟件的價錢卻越來越貴?練總的文章提到「工業」和「服務業」的分別,且讓我分析一下為甚麼「工業」的成本跌得那麼快,但「服務」的成本卻相對穩定。
傳統工業,大多數都是製造商品 (commodity),然後以市價賣出。一般製造業的經營方式,是佔據有大量潛在買家的市場,用經濟規模(economies of scale)減低成本。阿當史密夫在《國富論》的經典例子,是一粒釘的製作過程。因為釘是有大量需求的商品,廠家可以把每個製作過程拆分,用分工合作的方法,減低成本。後來廠家經常使用的生產線(assembly line),就是因分工而變得可能的技術進步。分工還有一個好處,就是每個階段的工作變得很簡單,可以用機械把工作自動化。所謂工業的技術進步,與產品的需求量的關係是密不可分的。每件機器成本也不小,如果產量不大,人手製作的成本可能更低。所以,無論技術如何先進,沒有有效的規模,成本是不能夠壓下去的。
雖然電腦處理器號稱是「高科技」產品,但它的經濟模式,仍然像傳統工業。總之就是由資本家投資人才器材,用既有的方法,把商品製造出來。市面上除了英特爾公司(Intel)壟斷了高端市場,其他製造處理器的玩家都不見得吃香,因為就算是這種「高科技」工業,競爭也很大。事實上,處理器這種東西,是一種明白電晶體 (transistor) 的基本運作後,就原則上任何人都懂得堆砌出來的東西,只不過廿一世紀的處理器有幾億個電晶體而已。當技術問題被英特爾, ARM Holdings 之類的公司解決了,餘下就只不過是資金和人力資源方面的問題。製造低端的處理器,也許可以說,跟製衣業「差不多」。至於高端的處理器,雖然英特爾投放了大量資源做科研,但因為市場上對處理器的需求仍然很大,所以市場上的買家把成本攤分了,每個買家承受的成本相對很小。
為甚麼軟件這麼貴?那麼,軟件又是怎麼回事?練總說軟件很貴。我不同意。商品化(commoditized)的軟件,其實大多數都很便宜。在經濟學的角度,它不得不便宜。軟件的複製成本近乎零。只要沒有壟斷的情況,市場對某種軟件的需求越大,它的價錢就會越低,因為它的供應沒有技術上的限制。就算微軟公司曾經一度壟斷市場,微軟的市面上的產品也不見得很貴 (起碼不是幾千萬這樣子)。這些年來,微軟花了不知多少億美元做R&D,結果視窗系統還是在幾百美元以下的價錢。
事實上,坊間免費的「開源軟件」多不勝數,例如經常用作伺服器系統的 Linux,可以隨便在網上下載,任改任用,完全免費。一般人也許不知道坊間有很多開源作業系統,功能上和視窗系統相若,都是免費的。[1] 其實,這二十年來開源軟件推動互聯網科技發展功不可沒,甚至是主因之一。軟件工程師業內有個不文規矩,就是當有人解決了一個常見的技術問題,只要不影響公司的「核心業務」,他應該把這個技術變成開源軟件,和全世界免費分享。[2]
那麼,為甚麼燕梳公司會覺得軟件很貴?能夠處理大量數據的軟件,成本是零。伺服器可以用 Linux,數據庫用 MySQL 或 Postgresql。以上都是成熟可靠,能夠處理大量數據的軟件。但燕梳公司要求的,不是「商品化」(commoditized)的軟件,而是度身訂做(made to order)的軟件。電腦服務公司接到燕梳公司的要求,也許他們會利用 Linux 或 MySQL 作為「零件」去編寫系統,或者把這些「零件」加工。在此之前,外判公司要先了解客戶的要求,把每一個細節都搞清楚,然後才可以為客戶寫一個度身訂做軟件。而這個由了解、到編程、到完成的過程,最繁複,最用時間,最用錢。你問,為甚麼不能改善這個「技術」,令價錢變得更低?這就回到根本的問題:經濟規模(economies of scale)。處理器的成本低,技術成熟,是因為同樣的處理器,可以賣給千千萬萬個客戶。燕梳數據系統貴,沒有現成的技術,是因為……世界上有幾多間大型燕梳公司?
詳細內容請看原文
http://style.vjmedia.com.hk/2015/06/11/7343