2009年1月29日 星期四

牛年目標(三)

開源程式的圈子,有一個說法,這就是頂級程序員應有三個‘美德’,這就是‘懶惰、傲慢和無耐性’.

今天,我先說一說‘無耐性’.所謂‘無耐性’就是不能容忍電腦閒著沒事做.簡單來說就是要物盡其用.但是,這就全無經濟效益.

當我剛接觸電腦時,程式的大小是以byte計的.我就用過一部128byte內存的電腦.我曾寫了一個多軌道運動會計時器,可以在幾百byte的內存運行.但現時的程式,少說也以M計.分別在那裏呢?

原因之一,就是軟件的開發成本遠比硬件高,我並不是說硬件開發是件簡單的事,相反,沒有巨額資本,根本不能作有效的硬件開發.但是,硬件開發既專門,也是幾間巨型公司之間的事.若不是有如美國的反壟斷法,我們的硬件價格可能遠遠高於我們的想像.但硬件的開發目標單一,理論上,就是更多和更快.

反觀軟件的開發,目標就複雜得多,除電腦專門知識外,還要講究Application Domain Knowledge,例如,要編寫一個作曲程序,就必需對音樂有一定的認識.

電腦之所以可以在近三十年突飛猛進,就是因為編程之門開放了,今天,有些編程工具真是簡單到連小朋友也可掌握.但天下那有免費午餐,工具變得簡單,就必然是有人在其他地方投下了更多的努力.另一原因就是硬件資源的大幅降價,這便令程式再無需做得這麼有效率.舉一個例子,若你可以多花一百小時去優化你的程式,它便可快百份之二十,但買一部快百份之二十的電腦不是更有成本效益嗎?

就是這樣,優化程式和系統,商業上絶不是明智之舉.但我們實在錯計了硬件成本,簡單來說,我們並沒有把環境成本計算在內.我們祗會計算電腦的生產成本,並沒有計算它對環境的影響.留著舊電腦絶不符合經濟原則,但抛棄一部舊電腦環境便要付出沉重的代價.

事實上,節省電力的意義也不限於直接電費的支出,例如在夏天,電腦運作所產生的熱,其實是要額外冷氣來降溫的,這便是惡性偱環的開始.

‘無耐性’的一個引申,正是盡用資源,Linux的開發,其實一直都以效率為先,事實上,我們經常都在浪費電腦計算力!舉一個例,掃毒程式就佔用了大量的電腦計算力,甚麼絶不拖慢電腦,就祗是宣傳口號而已.其實,整體來說,電腦現在也有點似官僚架構,大部份的電腦資源,其實就用於管理電腦系統上.有電腦書教人經常掃描硬盤,但他們從不提醒讀者,這動作耗費大量電力,而且給硬盤沉重負擔,經常檢查,便是硬盤出問題的主因.但不損壞又那裏有新生意呢?

當不使用‘掃毒程式’,少一些甚麼系統管理程式,一部祗用來上網和處理文書的電腦,其實可以是很便宜和很節省能源的.當然,必需有人身體力行,現在,我便立願去做,再不把這視為工作和生意!一個月省下一百幾十元的電費,並沒有甚麼經濟意義,但就有很大的環境意義!

沒有留言: