Wednesday, September 14, 2005

可憐的程式設計者 (或 可憐的我)

看了近來軟硬體的發展..自己深深地覺得..
學習程式語言的最大動力其實是來自於 - 「徹底的無奈」

從機車的微軟開始用力推銷「擦磨」(XML)開始..就有預感那應該是個大型陷阱的餌..
果不期然...「打虐」(.NET)就接著出現了..
本來想說自己窩在這邊玩digital media..怎麼樣也不會被這個風暴搞到..
無奈的是..現在還是得玩起「偉柏色米斯」(webservice)..為的是能夠與別人的媒材資料相互流用..除了"靠!"我嘴裡實在發不出第二個音
偉柏色米斯..不走打虐..就只剩下「湯姆貓」(Tomcat)..啊..還不是一樣難搞..就開發難度以及學習曲線..打虐還是可愛一點..
但是..無奈終究還是無奈....

再看看今年硬體的發展..除了冷汗..還有一種充滿悲情的無奈..
CPU的發展在希望保持Moore's Law的威信(他老預測到2010年)下..受限於過小的晶圓跟難以解決的高熱..只好從一顆A成兩顆..保住了他老的面子..
如果加上HT..我買一顆CPU黏黏散熱膏貼上主機板..開機進XP就看到四顆了..真是熱鬧ㄟ..
然後看看電腦裡另一個跟效能絕對相關的玩意..顯示卡..
ATI端出Crossfire..nVidia推SLI....
喔喔喔..當年的Voodoo2再現..又拿兩張顯示卡合體打人家一張
(不過這次比較公平一點..兩邊都可以拿多張來對幹啦..)

照這個發展..過不了多久CPU跟顯示卡GPU大概都是複數的吧..
打開我的電腦一看..16顆CPU+4張顯示卡..一個螢幕給一個人用這樣
喝..以後PC通通變成深藏不露的cluster了....
多顆是沒什麼鳥不起啦..看起來還滿爽的..
但是以往習慣寫單執行緒的偏安程式設計者們..不學著寫多執行緒的話會被使用者幹到翻..沒辦法像以前一樣期望硬體更新後自己的程式效能就會跟著進化
(想到以前寫視覺程式..效能不彰也只要補一句未來硬體進化後會有更快的更新率就沒錯..用300Hz的Pentium跑只有五張的更新率..換成了2GHz的P4後就破十張了..程式都不用改)
但是以後寫單執行緒程式都只有CPU的N分之一效能..換新硬體也沒用唷..因為分母N只會越大而已
(以現在3GHz做為瓶頸的話..進化也只是增加CPU數量來換取效能..單一CPU的效能永遠只有3GHz....
從四顆進化到八顆的話..只會更彰顯這個程式寫的真鳥)
這很慘啊..不把執行緒寫好的話..程式爛就一路爛到底了
悲哀啊..要能寫好執行緒..除了著名的死結(dead lock)要小心之外..更嚴肅的issue是job scheduling & merging
排程看來簡單..啊就工作分一分叫每個CPU都去做事啊
其實學問很深啊..從最簡單的RR(round robin)法到複雜的人工智慧預測..不同狀況有各種不同適用的排程法
最後把所有工作的成果組合起來更是令人腿軟....
(好在排程功能多半會被OS做掉..但是切割執行緒並不見得工作量就比較少..
不但要切的漂亮..切的精采..還要知道怎麼搭配自己的切割選用適用的排程法)
以後寫個程式的流程大概會像老師帶一個project一樣吧..要管可用資源..要會分工..要會整合..
然後未來資訊科系的先修課程就是PMP....
沒學過專案管理..你根本管不動手下的一票CPU+顯示卡呀!

奇怪..科技越發達不是會帶來越多便利嗎?
我怎麼有種越來越累的感覺....Orz

No comments: