電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

顯示具有 產業 標籤的文章。 顯示所有文章
顯示具有 產業 標籤的文章。 顯示所有文章

2019年3月17日 星期日

大學生的專業技能學習

幾天前跟一位我的大學部專題生聊到他的近況,有些聊到的東西可以拿出來鼓勵同學們致力於學專業技能,而非盲目地讀書、考試、拿學位之後才發現世界根本不是自己想的那樣。

他並非資訊、電機本科生,大學成績也不怎麼樣,但是推甄上某頂尖大學的資工研究所,原因之一應該是他在大學幾年到過多家公司實習所累積的程式設計的實務經驗與能力;原因之二大概與他常於開源社群貢獻以及在個人部落格上分享心得有關。

他前一陣子到某家科技公司從事近乎全職的實習工作,薪資六字頭,只比全職工程師略少些。公司高層主管欣賞他,願意栽培他。所以他覺得好像不必去唸研究所,在公司也可以學到很多。

其實他走的是技職體系的路線,只是現在台灣絕大多數的學生都去唸大學,甚至覺得要拿到碩士學位才有好工作,所以反倒忽略了「工藝技術」的專業能力。多年前有很多一流學生讀台北工專,對業界有頗大的貢獻,但後來教育部把技職學校「升級」成大學,限縮了這條路。

剛好我上週才談過美國的狀況,許多資訊科技公司和情治單位都到高中和大學去招募資質極佳的人才,及早進到公司後自己來培育。據說Google台灣分公司也招募了不少大學生,做類似的事情。不過,這些人為了要有更好的發展,都會不斷學新東西。

其實在現代的軟體應用開發環境中,程式設計的工作有很大的部份是熟能生巧的「工藝技術」。站在巨人的肩膀上,利用最新的程式語言、程式庫、程式工具,發展出有產業價值的軟體,這種機會太多了。

反觀大學和研究所教的東西,很多是告訴學生「巨人」的運作原理、內部構造,以及如何讓巨人更大更強,所以有演算法、作業系統、計算結構等課程,原意是厚植學生的基礎,讓他們不只知其然,還要能知其所以然。

頂尖研究型大學資訊系的目標之一,是培育擁有紮實的學術基礎和足夠的實習經驗的學生,讓他們有能力做尖端的技術研發,幫業界改良或發展新型的巨人、提高業界的研發水準。具備這種專業能力的人,身價非常高。

可是一大堆教授為了升等,學生為了考試和學位,成天在這些知識中打轉了好幾年卻還是爬不到巨人的肩膀上,因為誤以為通過考試、拿到學位就行,所以反而困在巨人的肚子裡面!

我們都知道,醫學系的課程,除了講授知識之外,經常要實際操作、臨床考試,還要幾年的實習之後才能執業,並不是會讀書就好。厲害的醫生,時常還要吸收新知,才能站在巨人的肩膀上為人治病,道理也是相同。

所以,我給一些有才能也有心致力於培養專業能力的學生們的建議是:

1. 資訊系的學生,最好是學術和實務能力兼備,思考如何深化專業能力和嘗試做一些非資訊本科生不會做的高價值工作。

2. 非資訊本科的學生,如果對程式設計很有天份和興趣,可以透過各種自學、社群、實習的管道,學得某些業界需要的高價值軟體實務開發專長,也未嘗不可。

3. 無論本科與否,如果我們想說「學位不重要」這句話,就必須有辦法呈現出技能的水準出來,否則別人如何賞識和重用你呢?

4. 即便已經有了不錯的開始,還是要設法持續學習,因為新的東西不斷出現,舊的東西可能越來越不值錢。時常問自己,要學習研究什麼東西,讓自己得以呈現更專業、更出色的技能呢?

2018年4月1日 星期日

眾說紛紜的AI

昨天(3/31)參加一整天的AI論壇,遇到很多內行人和外行人。主辦單位的目的在於橋接業界和學術界,連哄帶騙把許多AI專家,以及業界與政府的重量人士找來,可謂用心良苦,不過在裡頭坐上一整天也真是辛苦,好像一個人去參加一場長達一天的婚宴,必須一邊跟同桌人士哈拉,一邊「欣賞」舞台上的表演...

我因為前晚熬夜寫報告,昨天在會場頭痛了一整天,一直抽空閉目養神,不是偷懶,是頭痛到不行。不過還是得完成主辦單位交付的任務:花費二個多小時跟15位希望引進(或是正在從事)AI的業界/政府人士談話,瞭解他們的問題,個別給出一些建議,最後還要上台給三分鐘的心得報告。

就當作是做功德吧?因為AI紅透半邊天,迫不及待想引進AI的人太多,平常都有一些個案來找我談,但多半是想找一些有即戰力的技術或計畫,在最短時間可以幫到忙,而真的願意花大手筆做研發的倒是少之又少,大部份在談完之後,摸摸鼻子走了。昨天在最短時間內一次談了15位,也很不錯,只希望對方不要覺得這傢伙沒什麼真功夫,幫不了忙。

昨天最後上台報告時,我說我只是配角中的配角,各位如果開始建置AI系統,就會發現系統端的疑難雜症多得不得了,解決這些系統性問題的辛苦可能遠多於機器學習的部份,這時候才可能會需要我這種配角上場救援。

我沒有大聲說的是,反之,如果對AI沒有起碼的瞭解,分不清楚專家系統、機器學習、類神經網路的差異,可能不要貿然找那些做AI研究的大師,除非這些大師很喜歡做功德,像孔祥重院士偕同陳昇瑋博士那樣願意帶著一群學生「下海」,進到製造業的場域去動手做。不過,孔陳兩位大師現在也不可能親自去幫您的忙,想多認識AI的業界人士,可以繳學費去參加他們辦的人工智慧學校。

我希望人工智慧學校能補足業界的一些人才缺口。好比當年個人電腦出現後,很多中小企業開始導入試算表、文書處理,或是寫一些簡單的程式來做自動控制,需要很多人力來做,而我們當年念高中、大學時靠著自學就可以去做這些事,不一定要念資訊系,這也是目前產業AI化的重要途徑。

但是在AI產業化的方面,需要較長遠的規劃和耕耘。如果要在新興的AI產業上有足夠的競爭力,應該不是膚淺的作為就能做到,因此我認為AI產業化與產業AI化兩大方向雖然相關,但應該劃分和解釋清楚,不宜混雜在一起談,否則容易失焦,浪費彼此時間。

不過我還是跟AI的專家朋友說,昨天這場就算是您在做功德,有些參與的人士很少有機會跟AI大師們對談,有些以為AI很好做,各位大師親自出馬釐清真相,也是莫大功德。

例如我這邊在頭痛的情況下勉力為之,應該算是盡到公民的責任,與業界人士大致交流如下:

  1. 遇到一群在政府做水利規劃的研究員與顧問公司,一起思考如何運用AI技術,或許他們更了解AI後,挑戰一些可行的目標,不要太好高鶩遠,可以少浪費一些民脂民膏;
  2. 遇到一群醫院主管,和我先前遇過的醫界人士一樣,已經開始導入AI,面對的標籤化資料蒐集困難的關卡,但其實國內醫療界素質頗高,有機會結合AI做出新產業,但是要拿得出足夠資源;
  3. 遇到立法委員,跟她談我常講的教育界的問題,也希望她幫忙看緊人民的荷包,不讓政府以導入AI為名胡亂撒錢買設備;
  4. 遇到不恥下問技術問題的電子業大廠董事長,有點意外,還是想辦法用自然語言釋疑;
  5. 遇到急於引進AI的製造業小廠,建議要找上下游業者合縱連橫打群架,不一定要自己做;
  6. 遇到想引進AI幫忙自動產出精華影片的媒體,建議這種國外強到不行的應用,不要貿然自己研發,因為這類軟體遲早會普及,除非你有國外沒有的利基,否則不容易做出比人家好的東西。

總之,千萬不要一窩蜂,無論各位要走產業AI化還是AI產業化的道路,最好先搞清楚狀況,走適合自己的道路。

學生也是,資訊系學生可以去幫產業AI化,但是必須願意跨足產業,例如農業、醫療、製造業,不是宅在房間裡就行的,其他科系的學生也可以修一些AI的課,嘗試走這條路;資訊系學生想走AI產業化的道路,要知道AI系統錯綜複雜,要在此產業競爭,往往不是只懂機器學習的一招半式就行的。

2017年11月20日 星期一

做科技界的新民

在「軟體吃掉全世界」的表象下,這陣子重軟體輕硬體、重創意輕技術的思維與論述在台灣極為普遍。

十年前政府大推系統晶片的時候,我強調軟體研發的重要性;這幾年風向翻轉,軟體人覺得終於有引領潮流的機會,但我想提醒大家,不要忽略軟硬整合的重要性。

的確,矽谷這幾年很缺資料科學家、人工智慧專家,但是大家要知道,矽谷已經擁有很多高階的軟硬體人才和技術,能夠和這些資料科學家、人工智慧專家一起合作,把創意打造成一流的應用、服務、系統。

十年前科技大廠紅利滾滾的時候,我希望大家把眼光放遠,不要只為人代工作嫁,應思考如何轉型創新;這幾年風向翻轉,新創蔚為風潮,但我想提醒大家,還是要紮穩技術根基。

由於這陣子實在看到太多缺乏技術含量的新創案,我說句難聽的話,請不要再把「庶民百姓沒看過的東西」當作是「創新」或是「新創」了好嗎?一時的創意,很可能只是自己之前沒聽過、沒想到的點子;要成為創新,必須進一步確認所謂的創意並沒有被別人提出和嘗試過;要做新創事業的話,最好是能夠有獨到的技術,否則我認為成功的機會頗渺小的。(用喬的或是用騙的就不提了)

十年前學界長官要我拼命寫期刊論文升等的時候,我堅持研究實務上有用的技術;這幾年風向翻轉,上頭要求研究計畫要有產業效益,但我想提醒大家,轉型不是一蹴可幾的,要懂得學習和研究的方法,不能土法煉鋼、坐井觀天。

要真的把一流的東西做出來,真的很不容易。光是把目前最強的技術搞清楚並且整合實作在一起,就可能要研究許久,更何況要做出別人沒做到的,談何容易?最好是自己要在某方面夠專業,或是具備跨領域團隊合作的能力,但這往往需要多年的學習和努力去累積技術能力。

高等教育不僅是傳授知識,做學問、為人,乃至於為政,需要不斷努力創新找出路。自古皆然,如今尤是。

說到自古皆然,很多人讀過這段話:『湯之盤銘曰:苟日新,日日新,又日新。康誥曰:作新民。詩曰:周雖舊邦,其命維新。是故君子無所不用其極。』《禮記。大學》

古文中「日新」「新民」「維新」的意思很清楚了,強調日積月累為創新努力,而「無所不用其極」則可理解為做研究追求極致的哲學、科學、工程。可惜,當理念成為教條和考題的時候,竟成為後來讀書人的束縛和框架。

多少讀書人把「無所不用其極」的精神用在考試和謀取功名利祿上,卻不務實解決問題。考試時背得出「湯之盤銘」和「康誥」的典故,但在日常的工作和生活中是否實踐「作新民」?

說到如今尤是,因為大家都可以感受到科技在破壞性創新的威力,尤其是資訊科技和人工智慧蓬勃發展,有可能造成更多的革新。但革新不應是政治口水,也不是辦家家酒,更不能是半吊子,要有一整套方法。

我想,台灣若要向上提升,最需要的是教育文化的革新:革去諸多的陋習,給學子和人民多一些空間和時間去作新民。這時候,有些人可能會發現,作新民需要有知識和方法,需要好好學習鑽研,不是時常加班或是天天看新聞就行的。

2016年9月6日 星期二

先出社會再上大學?

這篇報導說蔡英文總統拋「先出社會再上大學」,向高等教育投下震撼彈 [1]。我想,「先出社會再上大學」本來就是很正常的事情,只是文憑主義作祟,才會一直有那種「盡可能墊高學歷再出去工作」的傳統觀念。

至於所謂的震撼彈,或許指的是助長「大學無用論」。我想,高等教育學用落差的問題,我談過多次了,有一系列的探討,請參考 [2]。當然,大學應該要辦得更好,不過在文憑大幅貶值的現階段,對學子來說,念到不合適的大學,或是不好好念大學,不如先不要念大學。

如果覺得先出社會不念大學太冒險,那我建議就先去業界實習,我昨天寫的那篇網誌「實習,為就業或創業打基礎」[3],就是談這件事。

我在網誌上所強調重點在於「優質的實習機會」,這是為「有事業心的年輕人」「能善用人才的公司」「想加強產學合作的學校」創造三贏的配套做法。

鼓勵學生去創業,或是先就業再念大學都行,但需要有配套做法,否則多數學生創業當砲灰,浪費青春;先就業的該去哪裡、如何體驗社會,都是要有方法。我沒看到政府的政策,暫且不評論,不過這個先工作、再念大學的概念,大抵上都可以用上述「提升實習文化」的作法來實現。

另外,如果覺得先出社會再上大學過於震撼,先出社會再念研究所,也是一個選項。

我在國外看到不少先工作,再念研究所的學生,我想這也是國內學生們可以思考的。盲目跟著人家念研究所,對自己的興趣和行業的狀況都不清楚,其實是件很奇怪的事情。

國外大學的學費高,家境較差又拿不到獎學金的,甚至要舉債念書,所以學生和家長會把唸大學、研究所當成是對未來職涯的投資。國內大學學費過於低廉,學生可以單純為了學位或興趣來念,其實並不見得合理,這是應該好好改革的部分。

我們20多年一票人出國留學,還沒上課前先看到帳單,算算修一小時的課要付出將近70元美金的學費,所以選課時會好好打聽課程好不好、有沒有用,沒有人想翹課。

再說,大學畢業,先工作幾年,再回到學校念研究所,有甚麼不好?

以機會成本的角度來看,的確較為不好,比起一路念完研究所再就業,大學就業的薪資較低,但差距其實頗有限,如果學生個人發現對專業沒興趣,不知道為何而唸研究所的話,不如先去業界走一趟。

最後,我說過多次,如果對事業有用的是「實力」而非「文憑」,那應該就沒必要拿了文憑才能工作。例如程式設計,有一大群非典型的程式設計師,大學的主修與程式設計無關,有的甚至沒念過大學,靠著自學有成的人很多,不只唐鳳。

這條路走得通的重點是「口碑行銷」。以往沒有社群網路,雖然你很厲害,天下沒幾個人知道,所以需要某種的認證,例如文憑和證照。但現在有社群網路,如果多與社群互動,讓眾人都知道你的本事,自然會建立良好的口碑。

我想未來的社會,應該會更強調終身學習,大學應該會更開放,提供各種形式的課程,而大學與社會的邊界會逐漸模糊化。所以不要過度執著於文憑,想想如何善用社會與大學的資源去學東西,去打下事業的基礎。

[1] 高教震撼彈! 蔡拋「先出社會再上大學」(民視,2016/9/5)
http://news.ftv.com.tw/NewsContent.aspx?ntype=class&sno=2016905L01M1#

[2] 【學用落差與產學合作系列1】學用落差
http://www.tvet3.info/industry-cooperation-series-1-the-gap-between-theory-and-practice/

[3] https://www.facebook.com/notes/洪士灝/實習為就業或創業打基礎/1247770011920805

2016年7月25日 星期一

淪落到只能靠削價競爭?


上週拜讀了臉友台大化工系藍崇文教授寫的「慘業」一文,說到台灣四大慘業,應是給台灣一個教訓,走俗又大碗的時代已經過去了,只要中國可以做的東西,在台灣就不值得做了。藍教授的評論深得我心,尤其是他這個極為生動的比喻:「小家碧玉要跟人家比,是得靠清純與氣質,要走妖豔脂粉路線,脫光了也不是人家的對手。」

看到比喻,想起去年我到荷蘭阿姆斯特丹開會,跟著人群到頗負盛名的紅燈區觀光。「性工作」在當地是合法的,工作者當街脫衣展示其傲人身材,有尊嚴而不怕人看。所謂職業無貴賤,我不反對任何合法的職業,包括代工和性工作,但我認為工作要有尊嚴,如果一路淪落到只能靠削價與人競爭,價值越來越低,這樣的社會是否會成為「悲慘世界」[1]的翻版?

上週四(7/21)到資策會新成立的開源軟體技術服務中心給Keynote演講,演講前我跟資策會的長官和朋友說抱歉,上週幫經濟部審查計畫時扮黑臉,今天又要來講點比較刺耳的話,請多包涵。長官說沒問題,有些事情也到了該轉變的時候了。顧及長官的面子,我沒有直白講的是,如果法人和廠商仍舊用降低成本來賺錢、或是靠政府補助營運的概念,只會把原本有機會的產業越做越小,搞成「慘業」。

我在演講中說: 各位推動開源軟體是件好事,但如果只是因為政府沒錢買不起國外的軟體才來做這件事,或是因為想要包攬政府資訊系統預算才來呼籲政府各單位採用開源軟體,那不免把當代開源軟體的意義和未來性看得太小了,實際上開源軟體遠遠不止於此,我們可以以開源軟體為基礎挖掘新資訊時代中的金礦,提升技術競爭力,站上世界舞台。

我長期與業界朋友探究資訊產業的研發方向,由於產業的類別甚多,技術深淺有別,研發的速度又非常快,而每個人的位置不同,目標可能也不同,所以想法和做法差異甚大。然而由於高科技的天性,政府官僚看不懂、追不上,我不認為可以靠政府來大力推動,然而某些政府官員和民眾還停留在三十多年前政府設立工研院和新竹科學園區大力扶植電子產業的成功故事,殊不知今天的大環境和資通訊產業研發策略已經與三十多年前大不同,而近年政府的產業推動策略和研發補助計畫有多少成功的案例?

我如果說政府不要補助產業的話,可能會被那些長期靠政府補助過日子的業界和同行罵。但我們這樣搞下去,這麼多年來淪落到只能靠低廉的勞動成本與國際競爭,難道是有識之士所樂見的嗎? 如果大多數人只是醉心於賺入大把鈔票、滿足自家生活、獲得個人地位、或是鑽研一己的學術領域,那麼要如何避免繼續沉淪下去呢? 其實我自己這些年過得不差,但正如同我這篇網誌 [2] 所說的, 我看見諸多有能力、薪水還不錯的人也深陷此漩渦之中,痛苦不堪。因此,光靠壓低物價,遲早會出大問題。要創造價值,需要的是突破和躍昇,有能力的人或許可以思考如何做點不同的事情。

然而好比停留在上個世代成功的經驗,有些人還在寄望於研發市場大、泛用性高的技術和產品。我想,現在做這個不容易,你沒有夠大的資本,只能為人代工,運氣好賺一票之後,不出幾年,就得再找下一個賺錢的技術和產品,因為無法累積技術,所以只能找技術門檻低的東西來做,老闆要數鈔票,靠的是廉價技術勞工的辛勞,我們暫且稱此為路線A。

台灣有很多公司,說自己有做高科技研發,其實只是買現成的技術和機具來幫人代工,就是標準的路線A,其中不乏一些有品牌的公司,但產品品質或品牌價值不出眾,只能靠低價爭取市場。不過,我們也不要隨便批評某某公司做代工產業不好。舉鴻海和台積電為例,雖然是代工,但他們在代工的技術上長期耕耘,研發了一些獨門技術,所以能在世界舞台上成為一方之霸。但我不諱言,這兩家公司仍然有相當重的代工習氣,談前瞻產學研發案的時候過於算計,還有改進的空間,否則可能在新領域的研發上縛手縛腳。

另一個方向,稱為路線B好了,是市場規模小、需要頗多客製化的專業領域技術和產品,例如醫院用、航空航海用、軍用的設備,必須花很多功夫與專家合作,通過某些規範認證,所以門檻高,但進去之後不會有很多人來惡性削價競爭。然而因為能進來的人不多,同時因為公司需要高水準的技術、行銷人才,所以公司很難大幅擴張。舉最近我使用Garmin智慧運動手錶的例案例報告 [3],以及我與一些以技術為基礎做專門領域事業的中小型科技公司談合作的經驗,我相信這是現階段台灣要走上國際的路線,以技術立身,如以色列、荷蘭、芬蘭等國的例子。

然而政府似乎老是以泱泱大國的思維去談研究發展,以那些大國的名校和大型企業為目標,搞得我們做學術的常常要跟頂尖大學拚排名,發表一大堆世界級的學術論文來證明自己能與先進國家並駕齊驅,但我們的經濟力量、本國市場規模、產業水準其實並不適合走這條我稱之為路線C,去追逐那些市場規模大、高技術門檻的研發項目。以資訊科技來說,除非是像中國那樣用本國市場來保護和扶植自身的公司,像韓國那樣敢拚敢賭把國家力量灌注在Samsung如此大的公司,否則很難與矽谷大公司競爭。

上述三條路線比較起來,如果我是沒技術、不想冒險的老闆,我想我會走市場大、泛用性高、低技術門檻的路線A。當然,走這條路的也有雄才大略的,請勿過度引申。因為市場和技術容易懂,所以當老闆的我在看了幾本書之後,可以滔滔不絕向身邊的人吹噓自己的智慧和眼光,重點在於看準切入的時機以及有辦法找一群願意賣肝的團隊在最短時間把產品做出來,最好是拿政府的補助、藉由金融操作、預支員工的薪資來做這件事,降低自己的風險。所以我們看到台灣的老闆們時常要政府給好處,掏空某家公司來支助私人的公司,給員工非常低的基本薪資但承諾賺一票之後分紅。

由於台灣在上世紀末走路線A的公司大賺其錢,連帶產生許多英明的老闆和科技新貴,於是這些人被捧上天了, 把自己講得像是走路線C的企業,讓一般的民眾以為台灣真的是世界一流的科技島,跟著玩起了金錢遊戲,缺乏居安思危、突破創新的想法。於是一些產業,在技術沒有深耕和累積,加上中國、印度的崛起,自己人削價競爭,逐漸失去競爭力和利潤,成為慘業。

另一方面,如果要做市場規模小、需要頗多客製化的專業領域技術和產品的路線B,老闆自己得真的懂,或是勇於做高風險的投資,同時得提高薪資,僱用具備國際競爭力的高級人才作為領導群和研發團隊,談何容易?而且,在路線A的公司產生許多科技新貴的年代,學生們被洗腦的很厲害,只嚮往去那些分紅多的公司,而這些公司還很拿翹,只收第一流的年輕人,能在最短時間內被訓練成高效率的生財工具,所以即使我這個老闆想走路線B,我也不容易募到資金、找到好人才。

說到人才,我們有多少第一流的人才走在路線A上,而目前深陷於慘業之中,但仍舊企圖苟延殘喘? 別的不說,政府和產業往往是打著要發展新興產業或是產業轉型的口號爭取資源,卻只是將資源導入既有的產業,因為主導者還是那一批人,變不出新把戲。於是檯面上的看起來戰功彪炳,卻難以扭轉頹勢,反而屢屢耽誤國家產業轉型的契機。

國家轉型不成,有許多藉口和假議題,幾年前還抱怨員工分紅費用化讓台灣產業失去競爭力,指責年輕人偷懶不抗壓,說學界訓練不扎實,歸罪於國際金融風暴和政府不補助,實際上是產業長期接收了許多台灣最優秀的一批年輕人,卻讓他們從事低門檻的研發,技術難以累積提升而喪失競爭力。

然而台灣是民主國家,我們有什麼理由去要求這些檯面上的資本家用他們的錢去投資在他們看不懂的高風險的高科技產業上呢?錢是他們的,那些大公司要不要轉型,也是他們的自由,他們有些人覺得把錢投資在炒房和炒股,或是投資國外比較容易賺大錢,只要合法,也是他們的自由。所以我從不指名道姓罵那些慣老闆,因為他們不需要為台灣負責。有句話叫做『商人無祖國』,我們本來就不應該把未來植基於這些商人的良知與資源上,勞工本身要自立自強。

我想,如果想要台灣的高科技業永續發展,我們可透過意見表達和實際行動,讓政府不要再繼續支持這那些無法轉型的企業,個人不要支持炒房和炒股的行為,而多去支持那些能夠提升本國技術競爭力的企業和機構。其實國內有不少致力於走路線B的企業,如果能集結一流人才,是大有可為的。過程中可能會有陣痛,但重要的是去做自己深切認為是對的事情。

有人問,那具體來說該怎麼做呢? 唉呀,我都說自立自強了,在問我之前,是否能自己先多想想呢? 我也不是神,所知和智力有限,只能概述。 大體來說,只要政府不去補助路線A,就幫到路線B的公司了,所以政府決策的思維和機制要重建。然而,重點在於民間和人才的意願,大多數人只看到大公司和消費市場,所以我才要在此幫高調,提倡路線B,讓多些人看到另外的路線。如果輿論不改,那麼民粹政府也只會隨眾去補助路線A的公司吧。另外,政府也不是沒有能幹的人,不過需要一些論述來支持,否則很難對抗既得利益團體的。當然,沉淪到最後總是會觸底反彈的,只是遲早而已。

[1] https://zh.wikipedia.org/wiki/悲惨世界


[2] https://www.facebook.com/notes/洪士灝/這25年來的薪資與生活概觀/1216275755070231


[3] https://www.facebook.com/photo.php?fbid=1228262997216186&set=a.150385068337323.25791.100000974924946&type=3&theater

2016年5月3日 星期二

教授擔任評審:系統性的問題

Ben Jai這篇[1]講到了教授擔任評審的問題。我想,原本審查系統運作的重點不在於錢給多少,然而由於整個系統的運作不彰導致錢變成了重點。

良好的審查系統,重視的是「為國家貢獻的機會」,同時藉此「增強個人的閱歷」,而且如果大家都好好無私的審查,促進國家的進步,之後自己和家人也會受惠,等於是一個「守望相助」的概念。

例如學術界裡的頂級國際會議和期刊,找來一流學者當評審,沒有付出一分審查費,甚至還要評審自費出席評審會議。話說我這個月要幫ICCAD 2016會議看十幾篇論文,然後下月初要飛去Austin參加這會議的評審會議,全部是自願而且從自己的研究計畫出的經費。

要打造出良好的審查系統,關鍵在於有多數能夠促進「正向循環」的人,彼此守望相助。如果某個評審不認真或偏頗,傳了出去之後,即便不被踢出系統,在行內也不好做人。

很多人知道「破窗理論」,如果社區裡某棟房子窗戶破了沒人在乎,讓大家覺得這個地方沒人管,社區很快就會變差。因此,系統出了漏洞就該設法解決。但有些知道破窗理論的人不想或無力解決,就用遮掩的方式處理,或是挖東牆補西牆,如果之後賺了錢有力解決問題,那還好,最怕的是賺了錢不補洞,依然把破洞遮住,卻拿錢去做別的事情。

台灣在三十年前,有不少因陋就簡的事情,但是因為大家都沒錢,教授的收入相對是不錯的,而且動員戡亂時期有貪汙治罪條例,所以審查系統還可運作。但這些年來,當台灣的聰明人到處賺大錢的同時,一般來說頭腦還不錯的教授們,難道只知道拿學校發的死薪水嗎?學校也知道應該調薪搶人留人,卻沒有調薪,而是讓教授靠著自己的本事到外面獲得額外的收入。但是隨著差距越來越大,外面的誘惑也越來越大。

所謂君子愛財、取之有道,我們靠功夫接計畫、當顧問,賺的是辛苦錢,接沒幾個計畫,把自己搞得累死,賺的錢還沒有自己的碩士班畢業生賺得多。聰明又膽大妄為的人,當然不會做這種笨事,自然另有一番事業心,而且有事業心的人彼此結黨營私,就跟古代的官場差不多。

這是從源頭開始造成系統性的問題,而評鑑是另一層次的系統性問題,就像學術論文一樣,非專業的人不大分得出好壞,唯有建立專業的可信度。那些靠數字做經營管理的人,奉KPI為圭臬,坐視專家操作KPI來掩蓋問題,即使大家都看到破窗,還能夠提出數字來證明破窗不存在,把錢投在別的地方。學術評鑑若只看KPI,到後來也會變質。

要建立專業的可信度,也是資訊傳播的議題,但若媒體被操縱了,那可信度要如何建立?所以我對媒體有較高的要求和期待。搜尋引擎和社群網路已經改變了以往需要找人打聽消息的方式,但所得的資料仍舊不見得可靠。如何進一步利用大數據分析技術提高資料的可信度,不只與商業模式的演進相關,也關係到社會文化的轉變,我想是非常值得關注的議題。

[1] https://www.facebook.com/ben.jai/po⋯⋯

2016年4月20日 星期三

系統人才的出路

臉友提問:「請問系統設計的人才在台灣是否出路越來越少?」我想這也是當前許多人的迷思,「以偏概全」是台灣教育文化乃至媒體的通病。這樣的問題,不妨拿來做為高中生的人文社會學科的論說文的題目。

要做好論文,要先懂得蒐集資料,看懂別人的論述,吸收消化、綜合分析後才開始做論文。如果從中學開始,我們的國民就有這樣蒐集資料、思辯論述的素養,那麼大家應該就不大會去相信那些偏頗不實的言論,也就不會去看那些所謂亂源的媒體和腦殘的文章。

抱歉,我忘了大家在中學時忙著背書、解考古題、衝高學業成績,哪有那個美國時間做這種事呢?考試的作文又不需要這麼費功夫,只要把那些嘉言絕句背出來、套用一些陳腔濫調的公式,讓閱卷的國文老師認可就行了,而社會科的申論題都是有標準答案的,絕對不能有個人的意見,論甚麼論?把標準答案背出來就是了。

我說過台灣還未擺脫科舉封建和專制的陰影,因為我們上一代和這代人就是在那樣的文化中長大的。混得還不錯的,就覺得聯考那樣的遊戲規則太公平了,學而優則仕才對勁,要有房產巴結權勢才有搞頭,搞到不少人發覺大半輩子都是活在陰影下,為時已晚,但都是別人的錯和大環境的問題。

談到出路,人文社會學科其實有很多有用的東西,為什麼會沒有出路?我覺得和台灣科技業所面臨的問題類似的地方是,我們並沒有讓各領域的文化昇華,所以淺池容不下大魚。很多人提起當年的刻苦耐勞,覺得只要肯努力就有出路,以此質疑現在的年輕人不努力。但我看到的是,要再目前這個全球化的時代中出頭,要學的東西太多,要有新的方法和具有競爭力的環境,就不要再緬懷「紅葉少棒」那種事了,還有能力和資源的話,就帶領子弟兵或是贊助他們去提升專業領域的層次,就不要只出一張嘴說當年勇來教訓子弟。

回歸到系統設計的人才的議題,關鍵也就是在文化上,在系統和晶片廠最賺錢的時候,許多人一窩蜂跳進去,削價競爭,把市場做到爛。當時進到這個產業的人,不知道有沒有意識到,這是一個高科技、高風險的產業,如果沒有持續精進,是沒有辦法維持榮景的。老闆和股東可以不做研發,集體壓低員工薪水,一路賺到公司賠本為止,但員工如果為了本身長遠的出路著想,值不值得為了短期利益願意陪這些老闆這樣玩呢?

或許,說「系統設計的人才在台灣是否出路越來越少」這句話的人所指的是,那個學點技術就能夠進系統或晶片設計代工廠做幾年、靠股票分紅成為科技新貴的時代已經過去了,這點我同意,因為台灣過去靠廉價人力紅透半邊天的傳統系統產業正在萎縮中,原本在裡面的人都要想辦法轉型了,還會找新來的人去進去做老掉牙的東西嗎?

然而系統設計的領域大得很,很多人只注意到消費性電子產業,那些系統廠多半以大資本(政府補助)買現成技術薄利多銷的策略為主,卻不知道還有很多技術門檻較高的產業,總產值雖不高,但利潤高,其實頗適合台灣發展。

有不少做較高端系統產品的業界人士可能會告訴你,他們積極在搶真的懂系統軟體的人才,從國外找人才來做研發,還非常需要系統架構師來帶領研發,甚至砸大錢從大學挖學理兼備的教授和博士生來做研發。而我們實驗室有接不完的業界委託研究計畫,做高階系統研發和雲端服務的公司一直向我要人,教育部長官這兩年來不斷要我們想辦法培育更多的高階系統軟體人才和系統架構師。

這些高利潤、高技術門檻的產業,以往較乏人問津,可能是因為國人總喜歡炒短線、學生一窩蜂去大公司,想要馬上賺錢的觀念。我們看到很多值得投資研發的中長期項目,業界不甩,學生也沒有興趣。現在鼓吹年輕人搞新創,我很支持,但前提是不要短視近利,可能的話,以「以技術立身」。

高階系統人才,需要不斷學習來跟上系統的快速演進,而厲害的系統架構師往往需要多年累積的經驗來造就,這就是以技術立身。我之前在矽谷共事五年的團隊,就是一個實際的例子 [1]。

可惜的是,上述的東西,很多人沒有實際接觸過,但做過我多年的臉書朋友應該會覺得我講上述同樣的東西講到煩了...

我想,機會(出路)是保留給準備好的人的,說句不客氣的話,如果連門檻都進不了,還談甚麼出路?在我所看到的現在和未來,系統領域還有很多創新的空間,可以參考Gartner’s Hype Cycle [2],不過我再三強調,高科技業也是高風險業,有很多的hype,所以要保險一點的話,還是設法提升自身的技術,才能長久勝任。

不過我知道有些人不怎麼相信「以技術立身」的想法,或許是對自己的腦袋和技術能力沒有信心,或許是對大環境不抱甚麼希望,有人覺得走門路進當紅的公司撈一筆才是機靈,有人覺得要進大公司當經理主管(之後撈一筆)才是正途,有人覺得還是早點弄到第一桶金來錢滾錢炒房產才是王道;對了,還有那些不想與狼共舞,一直在找尋越來越夢幻的小確幸的羊群們...

我不是狼,也不是羊,我屬馬的。

[1] 博士滿座的系統優化團隊 http://hungsh-ntucsie.blogspot.tw/2⋯⋯

[2] What’s New in Gartner’s Hype Cycle for Emerging Technologies, 2015, http://www.gartner.com/smarterwithg⋯⋯

2016年4月12日 星期二

失業率與學用落差

有些人看到聯合報這篇的標題【2.7萬碩博士沒頭路!失業率比專科生還高】(註1),馬上就下斷語,開始批評高等教育的學用落差問題,我看了覺得哭笑不得。

我這些年一直批判高等教育學用落差的問題,也一直提倡產學合作來降低學用落差,因此我樂見社會大眾關心這個問題,但並非隨意引用數據來踐踏專業。

不只聯合報,「關鍵評論網」這篇【所學無法致用 碩博士失業率比專科生還高】(註2),摘錄了各大媒體的報導,把失業率和學用落差扣連在一起。多虧有這篇,我很快就找到各大媒體報導的內容。

首先,如果今天有篇報告說,這個月蘋果的銷售率比橘子高,您會不會馬上說,這批橘子種得不好,種橘子的人有問題? 蘋果比橘子,就單一項目去比較,很容易得到錯誤的結論,更何況是拿大學比專科,應該要從多個面向去比較,才有意義(註3)。

其次,聯合報說「研究所以上學歷者失業率3.07%,但專科學歷者失業率僅2.96%」,請問這個0.11%的差別很大嗎? 注意到記者這邊用了「僅」字,試圖引導讀者。如果研究所以上學歷者的失業率跟專科一樣低,標題還是可以寫有2.6萬碩博士沒頭路。

大家不妨來研究以下的圖表,原本圖表刊在中國時報上(註4),為了不侵犯他的版權,我自己用Excel輸入資料重製過:




圖表上,每年的失業率起伏的幅度,常常大於0.11%。如果說是學用落差的問題,那麼100年、103年的時候研究所失業率比專科低許多,該如何解釋? 拿今年這0.11%(聯合報的數字)或0.13%(中時的數字)來指責學用落差,是沒有什麼道理的。失業率,與太多的因素有關,尤其是經濟狀況和產業的需求,不是隨意就把矛頭指向研究所。

再者,有些人比較專科和研究所的失業率,歸因說研究所做了很多沒用的學術研究,擴大學用落差,可是圖表上這些年大學畢業生的失業率一直維持在5.5%上下,遠高於專科和研究所,請問又該如何解釋呢? 我們知道,有不少大學生畢業後準備考研究所,所以提高了大學畢業生的失業率,所以要再次強調,失業率不是單一因素所造成的,不假思索、不合邏輯地就拿某項數據來支持個人論點,是偏頗而有失公允的。

最後,報導引用主計總處官員的話,說這是學用落差的問題,例如中時(註4):「碩博士雖然學歷較高,對就業有一定程度的幫助,但長期以來,由於產學間一直存在落差,學校所學未必符合業界的需求,因此失業人數比外界預期來得高,反觀專科偏重技術,較符合業界需求,就業機會較多、失業率較低。」

這種質性的說法,全然以業界的觀點來看待學用落差,失之偏頗。我們為何不換個角度說,業界不懂如何運用高等教育所造就的高階人才? 這麼多年各界一再呼籲產業要轉型,請問有多少產業真的轉型了? 薪水凍漲了這麼多年,請問還要高等教育和年輕人如何配合這個充滿了世代剝削和壓榨勞力的產業?

我前兩周在矽谷,看到許多公司爭相從台灣挖人才,要我推薦人才,我也是哭笑不得。如果本土產業能夠善用人才,我何必幫國外公司介紹? 如果本土產業只會集體壓低薪資行情,引進低薪外勞,來保證資本家穩賺不賠,哪我們何忍讓辛苦培育出來的高階人才被踐踏? 我會說,真正該檢討的重點不在於那3%的失業率,而是在那97%的人所受的待遇。

當然,高等教育有很多地方也需要被檢討,如果不是因為這些年累積的問題,也不至於如今落到人人喊打的地步,但不要因為打高等教育的問題而忽視產業轉型和世代剝削的問題,否則我們培育出的人才要何去何從?

(註1) http://udn.com/news/story/6/1621258

(註2) http://www.thenewslens.com/post/309⋯⋯

(註3) 題外話,我想,能夠分析多維度的資料,是近代機器學習技術遠優於仰仗規則的傳統AI的地方,由此可窺見一般教育訓練的不足之處。

(註4) http://www.chinatimes.com/newspaper⋯⋯

2016年3月16日 星期三

現在和未來新創所需的技能

看到這個世界經濟論壇報告裡講到2015和2020的Top Skills,如下圖。從2015到2020次序略有變動,耐人尋味。不過我比較關切的是從新創的角度來看這些Top Skills。基本上,新創的門檻會逐年提升,所以並不見得適合所有人,而且有些技能本來就需要某些資質和天份,不是說猛力訓練就能出得來,應該適性發展,不能過於勉強。同時,這上面所列的能力還頗多元的,但並不是說一個人必須具備所有表列的技能才行。



我先談與新創最有關係的前三項,之後有空再慢慢補充其他項目:
第一是解決複雜問題的能力(Complex Problem Solving),但是要如何才能訓練出這種能力呢?我們做系統研究,就是研究複雜系統裡面組件之間各種互動模式中可能產生的問題,這需要蒐集資料、細心觀察、分析問題根源、提出解決方案、實際驗證效果。這不是在學校裡做那些可預見結果的實驗,也不是去業界做那些受幾個月訓練就能上手的工作所能培養的能力。
第二是批判式的思考(Critical Thinking),更是那些乖乖聽話讀書的人所欠缺的訓練。我們的社會,一向不大鼓勵批判傳統主流想法,甚至把批判和特立獨行看成是叛逆。但是批判式的思考,並不是網民打口水戰、為反對而反對嗆聲,要有足夠深刻的思想,才能脫離膚淺的批判。
第三是創新的能力(Creativity)。在這個資訊爆炸的時代,已經有ㄧ輩子讀不完的好書和電影、電視,還有數位教育課程,甚至還有會解決已知問題、精準完成任務的人工智慧和機器人,如果不創新的話,那要做什麼事來呈現個人的價值呢?但要如何訓練創新的能力呢?除了天才和天份之外,我覺得上述第一和第二項能力也是創新的關鍵,如果懂得解析複雜問題、批判既有作法,那創新的機會可能提高不少。

此外,對於研究人才來說,排在五和第七位的Coordinating with Others和Judgement and Decision Making,也是很重要的技能。

但這些聽起來還是很抽象,要如何發展和應用這些技能呢? 要講清楚並不容易,剛好今天晚上在探索開源系統軟體時,看到一個技術創業的故事,剛好可以拿來對比以上所提到的技能。

話說我對Tachyon這個開源系統軟體很感興趣,原因可能是因為我也早有類似的構想,只是沒有找到有能力而且願意做的博士班學生。今晚突然想關心一下Tachyon的時候,發現他變成了1.0版,而且名字換成了Alluxio (註1)。想多了解一下為什麼換名字,就讀了作者的部落格。



Tachyon/Alluxio的作者HaoYuan Li還在唸博士班,讓我們來看看他的技術創業故事,也試著看看那些地方用得到上述的技能:
  1. HaoYuan Li是2008年北京大學畢業的學生,先到美國Cornell大學念碩士,2011年開始在UC Berkeley攻讀博士。他在北大時,在2005-2008年就到Google實習;2010年拿到Cornell碩士後,到Conviva這家2006年成立的新創公司做了一年,才到Berkeley念博士。所以在念博士班之前,就具備了相當的業界經驗。 
  2. 他看到AMPLAB實驗室出品的Spark和Mesos這兩個軟體紅起來,卻同時也看到這幾個軟體的不足之處 ,這應該就是所謂的Critical Thinking。 
  3. 於是在2012年底產生了Tachyon技術來補充不足之處的想法,這是所謂的Creativity。 
  4. 評估之後,決定這是值得研究的題目,馬上開始做,花了幾個月做出了Tachyon的雛型,這是Judgement and Decision Making。 
  5. 在2013/04開放原始碼,以與社群合作的方式繼續研發,這需要Coordinating with Others的技能。 
  6. 再花了兩年的時間不斷去改進Tachyon ,這就是博士班最強調的Complex Problem Solving 。 
  7. 在2015年獲得750萬美元的投資成立公司。到現在,阿里巴巴、百度、華為、IBM、BARCLAYS等大公司都開始用這個軟體,不知道Alluxio這個公司現在價值多少? 他作為CEO,要讓公司發展,可不能光憑技術,也需要People Management、Emotional Intelligence、Service Orientation、Negotiation等技能。 
當然啦,再說一次,我這裡談的是新創,而且不是說其他的技能不重要,也不是說一定要有這幾個技能才能做新創。個人要如何發展,應該是看個人的資質和願景而定,只是說世界在變,大環境所重視的技能也在變,統計上的資料有其參考價值,但還須要多觀察實際的例子以及了解自己的特性。

理想上,上述的技能,當然是越早適性開發越好,但我們常常批評在台灣長大的人,只會念書考試,我想中國也不遑多讓。我想HaoYuan Li本身的資質應該是頗優秀的,不過在這個例子裡,可以看到UC Berkeley研究所提供了發展和應用技能的環境和機會。這樣的研究所環境,台灣有沒有呢? 以前的學術界的問題已經談過很多,在此就不說了,現在學校比較重視新創和產學,所以建議諸位對新創有興趣的同學和業界朋友,可以設法找到這樣的環境,善加利用。

(註1) http://www.alluxio.com/2016/02/allu⋯⋯

2016年3月3日 星期四

改行做軟體與自學新專業

某位臉友來信談到轉行自學的問題,由於是常見問題,在徵得他本人同意之下,我公開回答他的提問,也希望諸位先進給與指教。

Q. 臉友提問:

我是您Blog & FB 的追蹤者,長時間閱讀老師所寫的文章,而老師也時常點出業界的弊病及提出改善的方法,台灣須從高資本低技術轉型到低資本高技術產業,已是刻不容緩的事情。

本身研究所畢業之後從事顯示器背光模組機構設計(兩年),近年來因技術被大陸追趕,不斷被搶單,而高層只想賺可以立竿見影的easy money,不願意長期投資先端的研發。因為硬體開發成本高的特性,底下的工程師縱使再有想法也無力影響公司改變,最後是失望離開。

因想要轉職&政府補助,在資策會進修過java web設計,目前做銀行AP的軟體撰寫。但是從硬體產業跳到軟體產業,發現若不從事深度技術的研發,依然是在做代工。若是想往系統底層技術發展,勢必須在系統軟體鑽研,而根據老師你近日的文章表示,此領域若不能全心投入很難有顯著的成果。

雖然本身透過下班之餘自學,但以非相關背景進入此領域還是感受到困難。由於您在平行運算&異質系統有深刻的研究,希望可以請教老師有關學習&如何踏入這行的建議。

A. 我的回覆:

在這個資訊全球化的時代,如果只是會做一些眾多人都會的東西,技術門檻不高的話,那麼無論做甚麼,所可能獲得的利益,恐怕還是會和硬體代工業或是傳統產業差不多,除非有個富爸爸或是政府補助。甚至由於資訊科技的進步極快,較為浮面膚淺的東西過不了多久就被淘汰,因此要在資訊界安身立命,談何容易?

如果細心看我的文字,我從來不隨便鼓勵年輕人走資訊科技這條路的,我只是說資訊界目前需要人才,而且在可預見的將來還持續提供人才發揮能力的舞台,但未必所有人都適合走這條路。事實上,這條路並不容易走,如果只是偏重技術研發,沒辦法在生態系中佔據一席之地的話,到頭來還是只能以技術代工,甚至在一窩蜂搶訂單,無法向上發展的情況下,就會遇到您所見的窘境。

我所謂的在生態系中佔據一席之地、向上發展,並不是說一定要擴大營業額、做品牌行銷。那是一般的迷思,覺得代工廠賺錢後,就應該放大利潤、朝品牌發展、直接面對消費者。我認為,以台灣本身的市場規模和經濟實力,在大型消費市場上做品牌行銷,需要大量資本和商業操作,如果沒有技術門檻的保護,很容易踢到鐵板。

因此,其實我並不反對代工,只是我們總是希望工作可以換取更高的報酬。代工業者如果精益求精,提高自己與競爭者的技術差距,就有機會獲得較高報酬。例如台積電、鴻海這些公司,雖然是代工,但他們長期在製造技術上所投入的研發,讓他們得以在生態系中佔據一席之地。

但是要向上發展的話,不只要會做漸進式的改進,而是要能解決原本不會,或是更複雜的問題。例如組裝iPhone的工廠和設計iPhone的Apple相比,一個強調代工製造的能力,一個強調「Think Different」,各有各的專業,但專業的報酬有頗大的差別。雖然很多人都覬覦Apple的高獲利能力,但這並非台灣的廠商能夠快速趕上的領域。

單單只是換個方向朝「軟體」發展,如果不能提高技術門檻的話,也很難提昇工作的報酬。美國的公司,在十多年前就將一些軟體的工作外包到印度去,而印度也欣然地扶植其軟體代工業,然而迄今印度的軟體技術以及從業人員的收入,仍然大幅落後美國。

印度的軟體代工人員的薪資不高的原因是軟體越來越複雜,用途越來越廣,但提高軟體價值的關鍵不在於軟體本身,而在於如何使用軟體開拓新產業,或是提昇既有產業的競爭力。因此,如果我們不改變想法,一頭熱投向軟體產業,做一些低技術門檻的軟體代工,那結果可能就如同您所描述的「從硬體產業跳到軟體產業,發現若不從事深度技術的研發,依然是在做代工」。因此,我希望國內在做軟體研發的時候,能夠找到一些方法來提昇產業的競爭力,包括與特定產業領域知識的深度結合,或是在軟體技術上產生差異化。

想與特定產業領域知識的深度結合,以您目前做銀行AP的軟體撰寫的工作為例,如果只是被動接受委託寫出銀行所需的軟體功能,那就是代工;如果您能夠深切了解銀行的需求,主動提出可能提昇銀行競爭力、因應未來需求的軟體方案,那就是目前最熱門的金融科技(FinTech)了。同樣是幫銀行寫軟體,工作性質有很大的不同。如果要做金融科技的話,就要有能力跟得上這門快速進步中的新興領域,如同我一開始講的,從業者本身若是沒有兩下子,談何容易?

那麼要在軟體技術上產生差異化,可以怎麼做呢?方法頗多,如我昨天在「開源系統軟體」社團上貼文提到,我們可以把改善開源軟體效能的方法分為四大類:

1. 改進演算法,這個是大多數CS的學生都可以試試看的

2. 加入JIT編譯技術加速,範例請參考Jim Huang (黃敬群老師)的筆記(註)

3. 改以平行化,分散式計算或異質運算加速

4. 改進資料流動的效率,例如以DMA/RDMA傳送資料,以caching存取常用資料,以memory取代硬碟存放大數據

要解決實務問題,招數不嫌多。第一招是最多人可以嘗試的,像是參加程式設計競賽一樣,要想到別人想不到的最佳的演算法,難度頗高;第二招需要懂一些動態編譯器的技術,屬於比較硬一點的軟體技術;第三招需要搭配計算機架構/平行計算/網路/GPU,也有其難度;第四招則需要打破傳統以計算為主的思維,在系統層面觀察實際資料的流動,再以軟硬體綜合規劃的方式去改善效能。

然而,要精通上述的每一種招數,都需要花費時間去學習和應用,很難速成。黃敬群老師昨天來我課堂上講三小時,學生起碼要花三十小時才能有起碼的了解,都是學生們必須自己嘗試去學習的,如果所有的東西都要等老師來教,那將來要如何面對快速進化的開源系統軟體?

今天有位大四的學生對我說,他聽了黃老師的課之後非常惶恐,覺得自己懂得太少。我勸他不要太擔心,因為業界有太多人基本的軟體功夫不夠扎實,很少跟社群接觸,根本不知道自己懂太少。知道自己懂得少,有幸遇到明師願意指導,就好好把握學習機會,只要一路學下去,就有機會成為專家。

此外,要使用上述招數之前,必須有能力解析資訊系統和複雜軟體的功能和效能,這些也不是短期間能夠精熟的東西。而且,就算能精通以上的技能,我們還是要回歸到應用面,想辦法用這些技能去改善高價值的軟體應用,提昇產業的競爭力,這樣才會得到重視。

所以說,您問到要如何踏入這行、鑽研系統軟體,這固然有其困難之處,但我想更關鍵的問題在於,您是否了解這個行業快速變化的特質,是否能夠適應這種不斷在演進的場域,願意花多少時間來學習成為專家,以及未來想如何展現身手、持續精進?如果只有下班之餘能夠自學,也不是不可行,但要在有限時間和資源之下迎頭趕上,恐怕難度頗高。

我個人已經浸淫在資訊科技將近三十五年了,到現在還是時常要涉獵新領域、學習新知識、思考新問題,才能維持自己在這個行業的競爭力和敏銳度,如果將此視為興趣,自然會樂此不疲,但若以此維生養家活口,那麼可能還是再考慮一下吧?

延伸閱讀: 關於產業轉型的部分,我另外寫了一篇網誌,可以參考一下: https://www.facebook.com/notes/洪�⋯⋯

(註)

https://ntuoss.hackpad.com/Mar-1-20⋯⋯

https://embedded2015.hackpad.com/Co⋯⋯

冀望新政府來解決學用落差?

包括小弟我在內,很多人探討這些年來高等教育的學用落差問題,有些人希望新政府能解決問題。

我多次說過我不想當官,只想做事,因為我認為在這個時代,當官不見得做得了事,要做事的不一定要當官,尤其是對我這個人而言。因為我個人認為,台灣當前許多問題的根源在於教育文化,而教育文化影響到經濟與政治,衍生出社會問題。這些根源性的問題,光是換一批人執政,或許能改善問題,但並不足以全盤解決。

我想,唯有民眾的覺醒,才能促使教育文化的提升。比如說以下這段報導,希望只是媒體的片段報導,也希望民眾會明察秋毫:

「蔡英文政策辦公室執行長張景森轉述,業者反映台灣教育系統與產業脫節,產業需要的軟體人才非常不足,因為老師教學生寫軟體、或自己寫軟體,也不能升等,造成教育系統產生的人才不符合產業需求。」(註1)

如果把上述這段的「因為」換成「其原因之一是」的話,那我可以接受。但是,邏輯上我不大認同以上這段的說法,因為完全沒有提到業界自己該負起的責任,包括業界提供具備吸引力的工作條件,以及業界與學界合作共同培養軟體人才。

教育部或是學校的長官們,或許不方便出面反駁這個未來可能是上級長官的張景森執行長所轉述的話,因此社會大眾和未來的執政團隊可能以為學界默認了此類業界人士的說法。

因為我沒有長官們的包袱,所以可以大膽跳出來說,當前的學用落差,是這些年學界、業界與政府所造成的共業,我們不能老是讓業界指責政府,政府訓示學校,而學校為了經費只好悶聲照辦,不敢說話。如果換了政府還是這樣幹,是超越不了這個共業所造成的障礙而持續這個循環的。

但坊間往往對於我這類沒權沒勢沒名的人的話不放在眼裡,當成是憤青、酸民之流,甚至學界大老會嗤之以鼻,說不在體制內反映意見,不好好做教學研究,寫這些沒什麼用。但在體制內反映意見能造成改變嗎? 什麼是好好做教學研究呢?

其實張景森執行長轉述的話,就是指出我們多年前就指出的大問題。雖然在過去這些年,教授要快速升等的話,教軟體不如專心寫論文,關心教育界大環境不如教學生鑽牛角尖,至少這是我親身經驗。但我覺得,在新的時代,學術界必須有新氣象,不能再延續這樣的舊文化,所以我覺得該做的事情要做,該講的話還是該講,只是累壞自己的身體,減少陪伴家人的時間罷了。

我在2014-2015年間,接受臺灣大學公共政策與法律研究中心的委託,探討學用落差的問題,撰寫了一份題目為【務實弭平學用落差與促進產學合作】的研究報告,收錄於【台灣高等教育與人才培育--學界業界與政府應負的責任】(註2) 的第五章,歡迎各界參考。學用落差的問題,牽連到產官學各界,如果各自為政,互踢皮球,推卸責任,那麼是解決不了問題的,想概略了解全局的話,可以看看這篇報告,在此我就不多說了。

該報告完成時大約是2015年5月,剛好當時的教育部吳思華部長找我和一群關心高等教育改革的人士某周末在部長官邸做非正式茶敘,我把這份360頁的報告,還來不及裝訂,直接呈上去給部長,建議他有空看看。當然,吳部長有沒有空看,我不知道。我只是想盡我作為國民的一份責任,以及述說我在學界的所見所聞所思。

的確,我是不能只靠教學生寫軟體、或自己寫軟體而升等的,我也不是為了升等而來做「開源系統軟體」的教學研究,而上述探討學用落差的報告,對我的學術生涯不會有加分作用,只希望不要被長官認為是不務正業就好。

有趣的是,這些日子以來,學術界似乎出現某種轉機。這一周來參與了系上的「產學合作」和「新興領域」的策略會議,討論如何鼓勵系上同仁做產學合作以及朝向新興領域發展。最近負責寫新的「研發基地」的構想書,教育部長官已不再拿「大學排名」和「學術卓越」作為首要的目標,而是洋洋灑灑列了十大點:

1. 對台灣前瞻創新產業發展的影響

2. 是否對解決我國社會重要問題有所貢獻

3. 是否成為該領域或主題匯聚校內外人才與研究成果的重要平台,並創造外部連結效益

4. 是否展現階段性研究進展

5. 是否與國際重要研究單位與社群建立合作連結關係

6. 是否在該研究領域上積極促進社會對話、每年提出政策建議書

7. 是否吸引全球人才來台就學工作

8. 在該領域是否擁有整合與學術領導地位

9. 研究成果回饋學生學習的情形

10. 其他學校自訂重點

當然,學術中人最會寫文章,所以要落實一切,最後還是要看評審是否務實,是否有眼光,是否能抗拒人情壓力。否則,就算文章作得再好,結果靠學術人脈結案,還是務虛一場。

除了教育部,產業界和其他政府部門似乎也開始想玩真的,想多投一些資源在軟體研發上,對於開源系統軟體有興趣,找我諮詢發展軟體的對策等等,甚至學生們也動了起來,開始關心起資訊教育。我想,這些都是好現象。

在我談理念的同時,我也跟年輕人談現實面,理想和現實往往是有段距離的,最終還是得一面尋求平衡,一面藉由創新來降低期間的落差。想降低學用落差,也是一樣的道理。我昨天才寫了一篇網誌,公開回應一位想轉行的臉友(註3)。我說,現在是個全球資訊化的時代,當年台灣靠著與美國日本的友好關係和技術合作,也得花上一段時間才能建立起硬體代工、代設計產業,現在某些代工產業所面臨的問題,在於技術門檻不夠高、差異化不夠,會做的人多,只好削價競爭,但是那些夠專業的代工廠,還是有其生存之道。我們鼓勵創新,但同時希望技術門檻要夠,才能真正改變產業。

我希望多一些像我一樣做軟體教學研究的教授能夠升等,但我不能保證;我希望多一些和我合作做軟體技術研發的公司能夠發達,但我不能保證;我希望讓多一些對軟體有興趣的學生更上一層樓,但我不能保證他們一定找到理想的工作。不過我個人覺得,好好想清楚,找到值得努力的理想,比起找到確定能大發利市的工作,更是個人能把握的事情。

對我來說,有個值得努力的理想,在努力的過程中嘗試縮短理想與事實之間的差距、讓自己看得起自己,這樣的意義性比獲得名聲、財富、地位更重要。當然,名聲、財富、地位可能對於達成理想有所幫助,但若捨本逐末,那我就不是現在的我了。

總之,想改變社會亂象,不能只冀望政府,也需要眾多人的努力,唯有促使教育文化的提升,才是根本的解決之道。至於如何影響教育文化? 我想,不是只能由教育部、文化部來告訴我們什麼是教育文化以及解決學用落差問題,可以是由我們主動來告訴教育部、文化部,以及更多的部會,我們希望有甚麼樣的未來,以及我們願意承擔哪些責任。

(註1) http://udn.com/news/story/9485/1532⋯⋯:要能與產業溝通-推動新人才培育,聯合報,2016-03-01

(註2) 「台灣高等教育與人才培育--學界業界與政府應負的責任」,陳永芳、周祝瑛、洪士灝等撰,臺灣大學公共政策與法律研究中心研究報告,2015/05,http://www.cppl.ntu.edu.tw/research⋯⋯

(註3) 洪士灝,臉書網誌: 改行做軟體與自學新專業, https://www.facebook.com/notes/洪�⋯⋯

2016年2月17日 星期三

非絕招的絕招 - 淺談RDMA的小知識與大效用

有些高階網路介面卡支援RDMA (Remote Direct Memory Access),但仍然很多人不知道RDMA是什麼,以及它能用來做哪些好事情呢?

RDMA主要是可以讓某台機器可以透過網路介面卡所提供的API,直接存取在另一台機器上的記憶體,免去透過傳統作業系統與網路協定所增加的負擔。(註1)

這項功能純粹是為了效能而存在的,對於現代已支援各種網路協定的系統而言,RDMA並沒有增加系統的功能性。換言之,RDMA是一項可有可無的、需要硬體特殊支援的系統功能,有了它,可以節省電腦系統在做資料交換時,作業系統所耗損的運算資源和降低延遲(latency)。

因此,RDMA不是人人都需要懂得,也不是到處可見的,近年來RDMA被率先用於高效能計算(HPC)上10Gbps乃至於100Gbps的高速網路,目前它逐漸被利用資料中心和大數據運算時,作為提高資料傳輸效率、降低系統能耗的手段,例如用RDMA加速Hadoop、Spark,以後可能會被用在某些強調效率的物聯網的裝置上。

實際在網卡上使用RDMA的範例,可參考(註2)。如果看懂這份200多頁的文件,應該就很清楚知道RDMA能做哪些事情。

但光是學會RDMA是不夠的,要發揮出RDMA的作用,必須要懂得將RDMA實際用於應用面上,必須要懂得軟體和效能分析的技術,分析效能的瓶頸和資料交換的模式(pattern),才能善用RDMA,否則可能不光是達不到預期的效果,還會減損系統效能,甚至危及系統的安全和穩定度。

首先在效能上,必須考量資料的傳輸模式,包括每次資料傳送的大小、資料的連續性、傳送的時間間隔、傳送的對象等等,來決定如何使用RDMA。我們可以讓傳送端主動把資料放進接收端,或是接收端主動到傳送端提取資料,究竟該用哪種模式?何時該進行傳輸?是否要用高階的gather/scatter功能? 這些都是要根據實際狀況才能回答的問題。

為什麼說RDMA使用不當,可能會危及系統的安全和穩定度? 因為「讓某台機器直接存取在另一台機器上的記憶體」這樣的功能,好比「讓某人直接進入你家存取東西」,如果某台機器被入侵,有可能危及其他機器的安全;也好比「共享記憶體」會造成搶資料的問題,如果兩台機器沒有同步好,可能會造成race condition,系統就會不穩定。

因此RDMA也不是隨隨便便能夠使出來的絕招,必須先精通軟硬體的實務才行。所以,絕招其實並非絕招,招數本身說穿了並不難,只是說使用者沒有足夠的軟硬體功力,練了絕招也沒有用。如果笑傲江湖裡的令狐沖沒有好好練個十多年的武功,突然接收了獨孤九劍的心法也沒有什麼用的。當然,並不是每個花很多時間練功的人,都能領悟獨孤九劍的要旨,學了也不見得會用。

話說RDMA也不是那麼罕見的概念,基本上RDMA是由DMA (Direct Memory Access)轉化而來的技術。說到DMA這個幾十年前就廣泛被使用在各種電腦系統的東西,很多做硬體設計和I/O驅動程式的人都很熟悉, 可以在單一機器中讓CPU節省傳送資料的時間,例如把大量資料送到磁碟機、網卡、顯示卡,甚至軟體想做大規模記憶體複製(memory copy)的時候也可以使用,普遍得不得了。

我原本以為,既然DMA是如此普遍的概念,那麼多加利用DMA和RDMA來改善系統效能的這件工作應該不難,但其實並非如此。看懂別人怎麼利用這些招數,和真正學會如何利用這些招數,並不是同一件事。很多做底層作業系統和驅動程式的人都看過DMA,有些會拿現有的範例照抄,但有多少人會調整DMA的使用方式或是用於解決新問題?

舉例來說,我們十年前玩過當年最紅的多核心處理機之一,IBM Cell (註3),用在超級電腦和Sony PlayStation 3上,所以我們實驗室買了十幾台PS3,用來做教學研究。這個系統晶片有個特點,晶片上多個處理機核心之間資料的傳送,是靠DMA來進行的。雖然DMA很有效率,但是很多程式師不大會用DMA。當年開發Cell的chef architect,Peter Hofstee,後來跟我們一起合作,聊起這件事,他覺得這些程式師暴殄天物。

我讓學生學習如何在Cell上運用DMA,發展效能分析工具,甚至有位學生設計出一個輕薄(lightweight)的message-passing library,使用DMA來加速CPU之間資料的傳送。不只支援Cell,也支援工研院所研發的異質多核心處理機PAC Duo,拿到ACM RACS會議的最佳論文獎 (註4)。事實上,實驗室還有其他幾個作品,也用了DMA來提升效能。

從眾人熟知的DMA延伸到RDMA,只是把單一機器改為多台機器,概念極為類似,所以要理解並不難,但如果要會運用,還是要實際運用才行。因此,我們建置了一套以100Gbps網路連接的小型叢集(cluster),打算來訓練學生使用RDMA,研究如何解決big data系統中資料傳輸的問題。很多開源碼系統軟體還沒有被好好優化,而且優化的方式就像以上所講的,必須根據實際應用的狀況而定,因此這裡有很大的發展空間。

RDMA 只是眾多非絕招的絕招之一例,還有很多這類的招數。我自己對於效能分析與優化特別感興趣,所以一路走來,到處學習、運用、發掘這類招數。但就像以上所描述的,這類招數說穿了一點都不稀奇,所以旁觀者看了覺得好像沒什麼了不起。國外的公司懂這類技術的人多,比較能夠賞識這樣的技能和成果;但某些台灣公司主事者的心態很奇怪,你化繁為簡,講到他能聽懂,他就以為你沒什麼了不起,以為他自己可以找到價美物廉的人在做同樣的工作。關於這點,可參考我兩周前寫的故事(註5)。

的確,這沒什麼偉大,但一般人懂了不見得會用,會用不見得會解決問題,所以「專業」不是一天造成的。以為自己官大學問大,不尊重專業,夜郎自大,自我設限是常見的通病。這篇文章的目的,在分享如何在系統開發上「同中求異」的心得,如果不想老是做跟人家一樣的東西,要如何創新? 基本功夠扎實,加上一些特異功能,例如本文的RDMA或是異質計算,那麼很有機會做出比別人好的系統,這其實不難,也不容易,需要務實培養專業能力。往好處看,台灣現在越來越需要,也比較能賞識這類人才。

(註1) https://en.wikipedia.org/wiki/Remot⋯⋯

(註2) Mellanox, RDMA Aware Networks Programming User Manual, http://www.mellanox.com/related-doc⋯⋯

(註3) https://zh.wikipedia.org/wiki/Cell_⋯⋯

(註4) Building a scalable and portable message-passing library for embedded multicore systems, http://dl.acm.org/citation.cfm?id=2⋯⋯

(註5) https://www.facebook.com/notes/洪�⋯⋯

2016年2月4日 星期四

那一年我們做系統優化的故事: 為什麼我們會做學界業界不(屑)做的研發?

 前天在與某廠商開會時遇到10年前做過產學合作的熟面孔,為了保護他的隱私,這裡稱他為X先生好了。X先生說他還清楚記得當年我們幫他的老東家「廣達的儲存伺服器研發部門」所開發的技術,這點讓我頗感驚訝。

事隔十年,保密協定也早過期了,論文也發表過了,所以應該可以來說說這個故事。

在2006~2007年間,我們與廣達做產學合作,那是我2005年回國後第一個產學計畫,我帶著實驗室草創後的第一批研究生,研究廣達剛剛研發出來的中階儲存伺服器。這個中階儲存伺服器,有兩個大腦 (雙控制器)來提供容錯功能,每個控制器上有一個處理機跑著廣達輾轉向國外某公司買來的複雜軟體,為了要快,雙控制器把從硬碟載入的資料放在一塊特殊的共享記憶體,然而整個系統,跟競爭對手比起來,還是不夠快。

X先生在前天對我說,他覺得我們很厲害,能夠搞定這個困擾他們工程師許久的非常複雜難懂的系統軟體,把這個儲存伺服器的極速提高了將近十倍,對於產品的競爭力有很大的貢獻。

其實這不是我們厲害,我們做效能分析和優化都是有方法論 (methodology)和工具 (tools)為基礎的。沒有這些,只能做些簡單的東西,不能做複雜的工程。國內很多研發單位只重視短期研發,根本不懂這些。(我講的十年前的狀況,廣達研究院現在應該好些了吧?) 我聽過有人說: 「什麼方法論、工具的? 反正就叫工程師拼命加班做,限時完成產品不就好了? 」所以我跟這些人談前瞻系統研發,等於秀才遇到兵,說也說不清,只有等他們遇到解不了的複雜問題,才會知道專業的價值 -- 現在搞雲端、大數據、物聯網、異質計算,這類複雜問題比比皆是,所以很多人毫無頭緒自己該做甚麼,可能也沒能力做甚麼。

首先,為了分析這台儲存伺服器的效能,我們還特別打造了效能分析工具。黃書政同學,做出了一個利用GCC編譯器在產生機器碼時在程式的進入點和離開點處插入追蹤器以產生追蹤資料,用以觀測程式執行流程的方法。這個工具幫助我們精確地分析儲存伺服器上軟體的流程,黃同學也以此作為碩士論文:

【一個針對嵌入式軟體的追蹤和效能分析技術 (Developing new tracing and performance analysis techniques for embedded applications) / 黃書政(Shu-Jheng Huang), 2007】

當年追蹤分析系統最強的工具之一,是SUN的 Solaris kernel team所開發的DTrace,這個技術後來也被IBM拿去做Linux上的SystemTap。在黃書政同學開發新工具之時,林以迪同學研究如何利用DTrace來自動化分析應用軟體的效能,後來他的分析方法幫助到這個廣達的計畫,也以此為題寫了碩士論文:

【利用DTrace在Solaris系統上以自動化方式建立應用軟體的效能模型與分析 (Automating server application performance modeling process on Solaris system via D-trace and trace-driven analysis) / 林以迪(Yi-Di Li), 2007】

要知道,一般的效能分析多半是針對CPU-intensive的應用,探討CPU的使用,然而儲存伺服器的重點不只在CPU上,還包括磁碟和網路這類的I/O動作,這些是一般工具和普通工程師較難對付的部分,所以陳人豪製作了一個量測和模擬的框架,讓我們能評估I/O部分的問題,這也是他的碩士論文題目:

【系統層級的效能量測與評估框架 (System-level performance profiling and simulation framework for I/O-intensive applications) / 陳人豪(Jen-Hao Chen), 2007】

不要忘了, 一個複雜的多工系統不只是一次只做一個工作,還有多個核心來做多項工作,所以張筱薇同學 (實驗室唯一的女生!)選擇做這個最硬的研究工作,利用SystemC做出一個能夠快速分析多執行緒應用程式效能的模擬環境,令我感到非常難能可貴:

【設計與實作一個快速分析多執行緒應用程式效能之多核心系統模擬環境 (A rapid simulation environment for application performance estimation on parameterized multi-core/multi-threading architecture models) / 張筱薇(Hsiao-Wei Chang), 2007】

搞清楚效能的問題所在,接下來就是設法優化(optimize)其效能了。怎麼做呢? 我們實驗室研究效能優化,著重的是那些編譯器做不到的事情,而不是那些編譯器可做的事情,這是跟那些做編譯器研究的實驗室最大的不同。我們認為,天底下有太多編譯器做不到的最佳化工作,厲害的人可以手動搞定。

舉例來說,編譯器往往不知道該怎麼優化程式,所以提供一大堆選項讓開發者來選。當時的GCC有42個可能影響效能的選項,請問要怎麼選? 至少有2的42次方種組合,不可能暴力搜尋。陳奇孟同學在十年前就採用的現在最紅的「機器學習」來幫助編譯器自動找到最佳的選項集合:

【以機器學習快速的搜尋最佳編譯器選項集合 (Finding the best compiler optimization option set rapidly via machine learning) / 陳奇孟(Chi-Meng Chen), 2007】

然而,一般的搜尋方式,只適用於普通的應用程式,為了最佳化這個儲存伺服器的核心,每次編譯過後必須重開機測試效能,所以非常耗費時間,所以林煌森同學針對這個議題設計了一套自動化搜尋機制:

【自動搜尋編譯器選項最佳設定 : 應用於儲存伺服器核心模組效能之提升 (Automatic selection of compiler options for performance optimization on the kernel modules of a storage server) / 林煌森(Huang-Sen Lin), 2007】

適當選用編譯器的選項,的確提供了效能,但真正讓這套儲存伺服器效能起飛的是對於軟體架構的改進。然而,如果沒有蒐集足夠的效能資料和對於系統完整的分析,根本不可能碰觸到軟體架構的改進,所以最佳化的成果還是得歸功於整個團隊的合作。

陳嘉翔同學在這套儲存伺服器中,加入了高效率的快取索引表,大幅改善了原本極為沒效率的搜尋機制。誰知道這套廣達花錢買來的軟體,會寫得這麼沒效率呢? 陳同學的碩士論文:

【磁碟陣列系統之最佳化研究 : 快取索引表之設計與實作 ( Performance optimization on a RAID system ; design and implementation of a fast indexing table for disk caching) / 陳嘉翔(Jia-Siang Chen), 2007】

吳建成同學算是集大成者,他不僅加入了預測使用者未來的需求做預先提取(prefetch)的機制,同時負責整合和評估最終的結果,寫出他的碩士論文:

【評估快取與預先提取在儲存伺服器上的效能 (Performance evaluation of caching and prefetch strategies on a storage server) / 吳建成(Chien-Cheng Wu), 2007】

總合來說,這些研究,讓儲存伺服器的極速提高了將近十倍,而廣達只贊助了我們一百多萬台幣的研究經費 ,這不能怪廣達小氣,這對當時沒有國科會經費、又沒有名氣的我來說,這筆錢讓我能夠購買設備和供養學生;不過這點經費大概只能僱一位菜鳥工程師做一年研發的成本,如果比起當年廣達贊助MIT的研究經費以及給台大的捐款,所以我想廣達的經費應該是大大值回票價了。

但或許廣達不這麼看,這才是當時身為菜鳥助理教授的我,最為感到不值的部分。那個儲存伺服器研發部門,被長官要求要自負盈虧,為了要在短期內謀求利潤,只好開始刪減「不必要」的研發開支,所以在一年的研究期間過後,就沒有下文了。

所以我說國內業界短視近利、不懂軟體研發,這是我親身經歷的第一個實例。X先生應該是站在我們這邊,但他當時也是小咖,即便覺得應該持續贊助我們,也改變不了大長官的旨意。X先生目前在某大公司擔任處長,前天開會中發言強調軟體開發的重要性,支持提早做軟體的開發,我聽了非常窩心,希望業界有更多懂得系統和軟體的人才。

另外,在學術方面,我指導這批第一屆的研究生做實務研究,在2007年產出了八份碩士論文,忙得不亦樂乎,隨後將部分論文改寫投稿,在2008才發表兩篇國際會議論文(註一) (註二),2009年一篇(註二),投資報酬率極低,發實務研究的論文難度高,是其他領域的人所不能夠理解的。

首先,關於這類系統研究,教導學生基本知識和技能、指導學生做研究、解決實作問題、驗證研究結果,原本就可能要比其他領域花更多心力;其次,要寫一篇優質的實務研究論文,必須能言善道、精準犀利,但大多數學生推導數學公式可以,寫程式可以,卻不大會用英文談論設計方法、分析利害得失、探討關鍵議題、展現系統優勢,如果要在國際會議或期刊上發表論文,我們必須在論文寫作上花很多時間。另外,寫論文時還要顧及與廠商的保密協議,必須遮遮掩掩的,當然更不利於發表。

所以我說國內學術界在數SCI論文數量的同時,把很多教授和學生逼上找尋容易發表論文的途徑,像這類我認為很有價值的產學合作,在那個SCI掛帥的年代,因為事倍功半,所以被年輕教授們視為畏途。

業界短視近利,加上學術界SCI掛帥,我對於這個系統優化的產學研究案的積極投入,算是非常吃力不討好,唯二能夠安慰自己的,第一是教出一群能實作的研究生,第二是這個研究案讓我更清楚我們能做出業界需要的前瞻研究,只是時機未到。

至於個人的學術成就,懂的人就懂,對於那些只會算論文數量的人,我也不冀望他們的理解。但上述的情況在這些年嚴重阻礙台灣的產學發展,造成前瞻研發不務實、論文氾濫的現象,甚至影響教育品質和人民生計。然而,產業仍不乏有能人,學界還是有志士,只要堅持走對的方向,我們還是有可能走出困境的。



(註一) Shih-Hao Hung, Chia-Heng Tu, and Chien-Cheng Wu, Optimizing the Embedded Caching and Prefetching Software on a Network-Attached Storage System, in Proc. 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing (EUC) , pp.152-161, Shanghai, China, December 17-20, 2008.

(註二) Shih-Hao Hung, Shu-Jheng Huang, and Chia-Heng Tu, New Tracing and Performance Analysis Techniques for Embedded Applications, in Proc. the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA) , pp.143-152, Kaohsiung, Taiwan, August 25-27, 2008.

(註三) Shih-Hao Hung, Chia-Heng Tu, Huang-Sen Lin and Chi-Meng Chen, An Automatic Compiler Optimizations Selection Framework for Embedded Applications, in Proc. the 6th International Conference on Embedded Software and Systems (ICESS) , pp.381-387, HangZhou, Zhejiang, China, May 2009.

2016年1月9日 星期六

人工智慧太厲害了,我們該怎麼辦?

我們為什麼要推計算思維呢? 因為未來各行各業都需要與電腦合作,否則有可能被電腦和機器人淘汰,例如這篇【機器人搶工作 律師、藥劑師也遭殃】所談到的(註1)狀況。如果不懂計算思維,很容易就迷惘了。

最近像這樣的文章和書籍很多,研究未來學的人,認為人工智慧是未來的重要趨勢,極盡能事去想像未來,但究竟有多少真實會發生,有多少只是虛無飄渺的幻想? 我想,很少人有能力確定,不過當前許多學生都跑來研究人工智慧相關的議題,則已成為我在台大所看到的事實。

我三十四年前在高中時,就對於人工智慧很感興趣,開始學LISP,後來進到台大念電機系,修了兩門人工智慧的課,還旁聽過神經網路,到密西根大學念書,也修過人工智慧,但我沒有繼續研究人工智慧,因為我覺得當時研究者走偏了,而且當年電腦的運算速度遠遠不足以支持有意義的人工智慧,所以根本做不出東西。

我猜對了,1990年代之後,人工智慧成為票房毒藥,沉寂了近二十年。

我選擇做電腦系統,看著電腦系統的效能持續成長,電腦系統的研究者想出各種方法來收割不斷成長的電腦效能,過去這三十年,最忙碌的研究領域之二,是計算機結構和系統軟體,我有幸能優游於兩者之間,探討一些軟硬體整合的議題。

如今,單一處理機的運算能力,約為30年前人工智慧全盛時期的100萬倍(註2),而且只要願意付些許錢,就可以租用雲端的上百台電腦,運算能力更是30年前的一億倍以上。

要注意到,這一億倍的運算效能,是人工智慧東山再起的關鍵。沒有足夠的效能,電腦很難生出智慧。然而,如今的運算效能,是否足以支持未來學想像中的人工智慧,則是一個大哉問。

大部份未來學專家的預測,都是基於以往的摩爾定律(註3),但這幾年摩爾定律已經放緩,甚至有可能停滯,主要是成本考量。以往這麼多年透過個人電腦、電子商務、行動運算、雲端服務等應用,半導體產業有足夠的利潤做研發來支撐摩爾定律,而大數據分析和人工智慧是否足以繼續支撐摩爾定律的延續? 如果摩爾定律停滯,那該如何是好?

有的人工智慧應用,需要比目前更高百倍的計算能力,有的實驗研究要成為產品之前,需要將龐大的運算能力縮小進到生活周邊,因此我認為我們做計算系統的,在產品化的過程中,還是扮演舉足輕重的角色,將來應該會有做不完的人工智慧系統設計的工作。

要創造出人工智慧的系統,關鍵在於要有能夠密切垂直整合的團隊,必須要有三種專家密切配合:
(1)領域專家,例如找律師、藥劑師來指導或教導電腦該領域的專業技能。
(2)人工智慧專家,綜合運用機器學習、數據分析、資料探勘等方式設計人工智慧演算法與軟體。
(3)系統專家,提供人工智慧所需的系統整合、資料蒐集、處理和計算能力,針對人工智慧應用優化系統軟體、設計晶片。

台灣比諸於其他許多國家,由於有硬體產業的基礎,非常適合發展「(3)系統專家」(這也是我想來培育的,也是目前即欠缺的人才),加上台灣目前很多學生對人工智慧很有興趣,學得很快,所以我不擔心會短缺「(2)人工智慧專家」,台灣在各行各業也有很多領域專家,但是能否聚集人才成為優質研發團隊,是真正的重點。

我想,很多有識之士已經看到這個局面,這是值得台灣去發展的好機會。我希望國家和社會多投入一些資源鼓勵產學界共同組成「對」的團隊,來把握這樣的機會,讓學術界多做些有益於這類幫助國家產業發展的研發工作。

然而,在謀求發展的機會的同時,我們也應該做好教育的工作,讓未來的世代能夠好好面對電腦和機器人。與其教學生背誦記憶一堆電腦瞬間可解的問題,不如教他們如何活用電腦、想辦法與電腦和機器人共榮。

另外,科技的民主化以及財富的合理分配,也將會是越來越重要的課題。我們絕對不希望大家多年努力的成果,被少數資本家收割,讓科技成為資本家搜刮社會資源和剝奪人民權益的打手 -- 這是社會大眾需要慎重看待和避免的議題。

(註1)機器人搶工作 律師、藥劑師也遭殃
http://www.cw.com.tw/article/article.action?id=5073792

(註2)以摩爾定律概算,假定每18個月電腦效能增加一倍。

(註3)https://zh.wikipedia.org/wiki/摩爾定律

2015年12月30日 星期三

資訊科學納入通識課程--與蘇文鈺教授的虛擬對談

我一直很關心這個議題,希望大家來做點事,但對於政府部門的執行能力頗不放心。原因是,這樣重大的事情,政府要做的話,必須提供足夠的資源,找第一流的人來全力以赴,而不是只找一群像我這種沒有在中小學教過幾天書的大學教授來訂課綱、編教科書。

我的好朋友成大蘇文鈺教授,帶著研究生去偏鄉教弱勢小孩寫程式,累積了相當的實務經驗,他的話自然比我和很多大學教授更值得借鏡。

蘇教授這幾天在臉書上陸續發表一些想法(註一、註二),以下我把蘇教授的話貼出來,同時在段落之間穿插一些我個人的想法,以虛擬對談的方式與蘇教授相呼應:

蘇: 對於美國總統歐巴馬簽署將資訊科學納入通識課程的教育法案,我的心情很是複雜。原因很多,先講憂心的地方好了。「若願意分享,請把我的文字也轉貼過去,謝謝!」

洪: 我的心情也很複雜,在此貼了您的文字,也分享我的想法,來呼應您的看法。

蘇: 首先,這個法案宣稱要每個孩子都可以成功,但是以過去美國的教育的走向,其實是優勢的越優勢,弱勢的越弱勢,也就是跟多年來美國社會的結構往不對稱的M型化傾斜的走向是一致的。要知道,資訊教育所需要的資源,不管是教材,教具與師資,與過去的傳統教學科目重疊的不多,這是一個國家需要大量投入的,既然是需要大量投入資源,那麼可預見的就是,優勢家庭普遍會取得更多優勢,這是資本主義社會的特點,除非在資本主義的骨子裡添加一點變因,這麼走下去的結果會是貧富更為不均。

洪: 美國資本主義在貧富不均上的問題,我們都看到了,但是台灣在貧富不均上更加的嚴重。美國的作法,基本上是藉由他們的優勢成為國際強權,從世界各地獲得利益,只要這些從國外得來的利益在某部分能夠分配給弱勢者,弱勢者日子還過得下去,就沒甚麼好抱怨的。台灣多方面師法美國,卻沒有像美國那樣利用優勢人才和重視技術的研發從國外賺取大量利益,在利益的分配上又有各種政治問題,導致現在不均的局面,被犧牲忽視的是(1)貧窮線以下的人們以及(2)缺乏發展機會的年輕人。但問題是,政經上層幾乎被壟斷,誰來照顧弱勢和給年輕人機會? 現在大家也都對貧富不均的狀況很反感,所以,有些所謂「對國家好」的政策,大家會去區辨,究竟是對有錢人好,還是對窮人家好? 政府說利大於弊,究竟站在誰的立場談利弊得失? 但是就資訊教育來說,如果國家不教這些,那麼誰來教這些弱勢的學生? 靠蘇教授和一群樂意犧牲奉獻的人來教,也只能照顧到部分的弱勢學生,所以我們還是希望在教育上要有一套方法來引進資訊教育。

蘇: 上一節討論到的資源問題,硬體方面,不管是教材與教具,只要是有心人願意做,都不成問題。以 Program the world兒童與少年程式設計教學計劃來說,我們已經計劃每年出四到五個開放教材,並搭配三到四個教具,所有的資料與程式碼都會在明年我們的網站上下載得到。但是真正的問題卻在於師資。優良的資訊教育師資之難尋不在於我們找不到程式設計師來教,而是一來程式設計師可能不善於教學,二來,好的程式設計師的薪資很高,我們如何吸引他們願意參與程式教學的行列呢?

洪: 教材與教具,需要找到兼具有心和有能力的人。美國有不少這樣的人在做這件事,例如Scratch是MIT發展出來的。台灣要做的話,應該要找在教育理念上獲得大家認同的、對資訊科學素養卓越的人來全職全力來領導和推動整件事。或許台灣學界應該設法推舉出一個工作團隊,並且賦予這個足夠的資源、權力、責任,去完成這個任務,包括教材、教具、教師訓練,否則蘇教授提到的問題,勢必會出現,而且一旦引入不合適的課程和教師,不只是搞砸了資訊教育的美意,而且不容易收拾後果。

蘇: 再來,因為是通識課程,以我目前為止在大學裡開通識課程的經驗,多數學生因為學校規定要修通識課而修課,從第一堂就滑手機到最後一堂。我知道,課程無法吸引學生,老師也該負責任,但是要每一個老師都能把課程上得有趣以達到每一個人都成功的難度太高了。我們到底想教學生什麼樣子的資訊科學應該有得吵的,檢討過去的通識課程到底達到什麼效果應該是很重要的一步。

洪: 的確,現在的學生普遍希望老師把課程內容用風趣幽默的方式表達,讓他們能夠產生興趣;普遍希望老師以淺顯易懂的方式解說,讓他們容易理解吸收。然而這也產生了學生在學習上偏向於趨易避難的問題,因此在當前大學生學程式設計都有某種障礙的情況下,要中小學生學習程式設計,其難度更是高。因此,教材、教具、教學不能憑空想像,也不應從國外直接移植現成教材,必須考量實際現場狀況。

蘇: 所謂通識課程通常無法要求深入與難度,假如我們只是希望透過通識課程吸引真正有天份的學生進入資訊領域,那麼類似Hour of code這類的課程就足夠了,實在不必大張旗鼓地弄個通識,只要授權校內有興趣的老師,用網路上可以找到的這樣子簡短的教材,自己花一點時間練習,然後對全校學生開選修課就可以,甚至外包也許都可以。若是有特別有興趣的學生,在學校鼓勵成立社團,在每一個地區應該都有鄰近大學,也許設立大學先修課程也行。只要資訊夠充分,生命會找到出路的。

洪: 一般人常有的誤解,認為中小學程式課程是為了培育資訊科技人才的,但其實不然;也有人誤以為資訊教育就是教文書處理、試算表等工具,也是誤解。首先,程式設計課程,教的是基本科學和工程概念,啟發學生解決實務問題、做中學,培養跨領域的基本能力,不是教工具的使用。其次,有些程度好、對資訊科學有興趣的學生,會想學得更多,那麼應該有其他的管道輔導他走上這條道路,例如到線上課程、到大學修課等,但是不應該為了少數人而塞入很多艱澀的教材,讓一般人一起陪讀。

蘇: 但是,若是我們希望學生是真的能用資訊科技來幫他們做一點事,甚至輔助他們在不管是資訊,程式,甚至是其他學科方面的進步,那麼幾個小時的程式設計教學恐怕用處不大。要做到這個地步,課程必須有一定的強度與時數。過去 Program the world兒童與少年程式設計教學計劃在偏鄉的課程就是如此,因為我們的目標是技能,而非課外社團活動。因此,即使是課業成績在全班後段的學生,還是有可能學得不錯。我們也明白,這樣子的上課方式不可能適合所有學生,但是既然打算是訓練技能,俗話說,錢不是萬能,沒錢就萬萬不能,目標就是指向有以程式設計能力謀生的可能,這也是偏鄉的孩子最需要的,要不然就不必做了。

洪: 我想,資訊科學和其他科學較為不同的地方之一是「廣泛的實用性」。這不是說其他科學不實用,而是說資訊科學太好用了。就拿我念過的電機系為例,如果沒有學過一大堆課程,個人是很難做出好東西。然而,懂得程式設計,搭配其他領域的知識,就有機會解決問題,因此這樣的技能,即使學生學藝不精,或是日後不做電腦科學家工程師,還是一項有用的技能。

蘇: 我們也很清楚,不能只教程式,還要教導實做的能力,所以Maker教學也在我們的課程裡面,也就是除了bits,也要atoms。我們的用意並不在學生要樣樣皆通,而是,一來,讓學生廣泛接觸資訊科技,二來,儘量讓不同天賦的學生都可以找到資訊科技對她有幫助的部分,三來,學生可以選一兩樣他最擅長的技術切入即可。所以,我們能力與懂的範圍有限,必須結合其他專長團隊,一起加入教學。但是,這樣子範圍能跨超過一個領域的大學前教育的教學團隊,即使在全世界也並不多。即使有,也會被優勢團體先一步網羅,要做到每個人的成功,好難。

洪: 既然資訊科學教育是一項有用的技能,課程中應該要強調時做,適度引進Maker做中學的作法,讓學生動手,發想創意,或是團隊合作。事實上,資訊科學可能是世界上最開放、創新速度最快、最樂於與人合作的學門,我們有最多的開放資源、最多的創新、影響遍及各領域,因此學生提早接觸這個領域,應該有機會感染到這些文化。這樣的文化,是台灣最缺乏的,如果能資訊科學能為中小學注入新動力,那就再好不過的。

蘇: 若是以Program the world的方式,夠多的課程,夠高的師生比,傾我們的全力,最多只可以照顧兩個偏鄉,而且是以村為單位,不是鄉。學生人數很難超過50人。從2014年起,我們接到超過十五個單位的訊息,要我們把課程擴展過去,我很願意一口氣都接下來,但是也知道接下來的後果,無奈的,心裡流著眼淚地,回答無能為力。所以,雖然知道面對面教學是偏鄉孩子們最需要的,我們也只好轉為先開發免費開源且在偏鄉實際上過的課程為主要工作。希望願意到偏鄉教學的熱血朋友,不必自己開發課程。

蘇: 也因為是以技能為導向,這樣子的課程都是以50個小時為一單位,份量頗重,也會先在偏鄉的孩子團體先試教過,修改再修改,確認一個班裡超過1/3學生有辦法接受才會release。所以,我們的課程不見得適合極為優秀的孩子,或者說,這樣子的課程對後者來說,也許不到20小時就可以上完,假如是這樣,我還是建議有特殊管道,讓他一路往上衝好了。這種就不在我的範疇,若是偏鄉有這樣子的孩子,直接送給 葉丙成老師去教就好。

洪: 蘇教授的熱情和浪漫實屬稀有,我覺得蘇教授在偏鄉推動資訊教育的經驗非常值得參考,但我希望社會能更有系統性去推動資訊教育,政府也能撥出資源來贊助這些,讓更多人受惠。

蘇: 雖然說,我們以程式設計與Maker教學為主,但是我們並不希望孩子只會寫程式或做勞作。真正的資訊科學教育不在於寫程式,而在於善於利用電腦幫我們解決問題的能力。很會寫程式,卻不會解決問題,甚至發現問題,那麼我們還是會淪為軟體代工國家,與過去的硬體代工,並無多大差異。在資訊科學教育裡,計算思維(computational thinking)才是重點所在,而進一步的是演算法思維(algorithmic thinking),這不是修完大學裡的計算理論或是演算法就可以的。最後還是必須回到很基礎的理論,以及理論與應用的聯結才是。

洪: 「發現值得研究的好問題」這件事,可能比一般人所認為的還難。一般人在學習時,總是研究那些已經被解決好的案例,不見得會針對「當初他怎麼會想到這個問題?」去做思考和練習,以至於工作時習慣於被交付問題,然後才動腦筋去解決,因此代工思維盛行,甚至連在大學研究所,也有很多人在研究外國人提出的問題框架中解決芝麻蒜皮的小問題,發表研究成果,等於是幫人家代工解題。我不是說解題不重要,而是說我們缺乏具備主動找問題能力的人,這樣的能力很多人都有,但是需要被啟發的。

蘇: 我恐怕,跟著美國人的教育政策,學到的若只是皮毛,最後還是一樣補習班或才藝班滿天飛,孩子們多了更多東西要補,豈不悲哀?但是,衡諸過去的台灣經驗,只要列入課綱,考試要考,升學必須,利之所趨,豈有不大補特補呢?家長觀念不改,教育單位政策不能慎重,恐怕台灣的競爭力會每下愈況啊!

洪: 這也是我最擔心的。所以我前面說了,應該要找在教育理念上獲得大家認同的、對資訊科學素養卓越的人來全職全力來領導和推動整件事,賦予足夠的資源、權力、責任,去完成這個任務,否則蘇教授提到的問題,勢必會出現,而且一旦出現了,要收拾就是難上加難。

蘇: 過去20年,我最常對大一或大二學生說的就是,他們非常幸運能念資訊系,因為當今幾乎所有的熱門或不熱門的產業都與資訊脫不了關係,食衣住行是,連學習音樂都是。假如可以把自己的興趣導入到資訊技術,會是一件幸運的事。但是,20年來,我屢屢看到學生在沒念完大二就對資訊技術失去興趣,甚至念完大四還不會寫C或java的都有,原因不用我說。所以我也常對學生說,若是沒有興趣,趕快轉系,會這麼說,實屬無奈。

洪: 這裡談到的,就是專業教育的領域了。我這幾年來,每年看到不少對於資訊技術沒有興趣的學生,有很多念到大四、五、六,說穿了就是想要一個學位。對於台大的學生,我不擔心,因為他們自己應該會找到出路,但是對於中後段大學的學生,我覺得情況很不樂觀。我們到一些中後段大學的資訊系拜訪,發現學生因為家境不佳、在外打工付學費的情況很嚴重,而且學生的英文程度不好,對於學習日新月異的資訊科技是一大障礙,所以多數自認為畢業後只能做做網頁設計以及簡單的資訊科技服務而已。但相對地,資訊科技進展太快,迫切需要的是中高階、創新的人才,所以他們也做不了這些研發的工作。在這種情況下,他們該何去何從呢? 我想,要不就是回歸技職體系,建立扎實的專業基礎,要不就是設法建立跨領域的專業,否則全國大學生人數最多的資訊系,如果專業訓練不上不下的,能夠在專業上或是跨領域上能做出的貢獻也是有限,要找到高薪的工作也不容易。當然業界也得要多努力將專業水準提昇,否則我們即便有對資訊科技很有興趣的高材生,沒有發揮的管道,也是枉然。

蘇: 我這人也許有點小聰明,但是卻無大智慧,所以,也只能做我自己想得到的,自以為對的事。面對多年來台灣教育,產出這麼多對求學沒興趣的孩子,很是憂心。只願,我們的資訊教育,不要再重蹈覆徹,再次讓孩子對這門重要的學問失去興趣。

洪: 我們個人的智慧都有其限度,這類眾人之事,光靠幾個人是不夠的。我認為有三個重要的環節,第一,中小學教育如何引發學生的興趣,第二,技職教育和大學教育如何務實務本,第三,業界如何提昇其技術競爭力,這三個環節緊密扣連著,不能只解決一個問題。即便我們翻轉了教育,讓許多孩子學到些東西,讓他們對某項領域產生興趣,但到了業界卻處處得要遷就冷酷的事實,沒有機會實現夢想,那麼興趣和熱情自然會消散,連帶著影響到下一代的學子,所以我們所看到的教育現場的問題,是多年累積之下的系統性問題,不是單一教育改革所能解決的。我想,資訊科技的重要性,不在於資訊產業本身,而在於國家整體的競爭力,而計算思維的概念,勢必要以各種形式讓有志於迎接新時代挑戰的人理解。此外,資訊科技產業本身是個機會,要把握這個機會,不能等那些還在學校的下一代,應該由這一代開始。美國不只有這個Every Student Succeeds法案,先前還有許多業界主動為了訓練職場人才的計畫,甚至不斷引進國外的人才,至於我們的業界除了會精打細算之外,是否樂意主動培育人才,關鍵到當前資訊產業的榮景,我認為產業本身該在人才訓練上多做些努力才行。

蘇: 通識課程中的電腦科學要教什麼?若是照著過去政府的做法,一定是去找一堆學者專家來訂定教育政策,或者說是課綱。這些課綱被某些學者專家定了之後,想必會有相關人士開始出版相關教材,然後就是補習班跟進。以建構式數學為往例,想必可以讓大家都印象深刻。我並不認為建構式數學本身有多大的錯,這是學習數學的方法之一,但卻不是唯一的方法。若是用電腦程式的觀點來看,建構式數學有非常類似之處,但是當它變成一種制式教學與評量標準時,很多事就變了調了。

洪: 所以主事者必須有某種高度,資訊教育,不應該以傳統方式來教學和考試,否則很容易變調。

蘇: 我是資訊系大學教授,這幾年又在從事兒童少年程式教學,被找去問的機率頗高,但是我是不敢站出來說要制定什麼樣子的課程資料與大綱,來當作這些通識課程的參考,更不用說是標準或準則了。

洪: 這是需要集思廣益的事情。

蘇: 為什麼我說過我怕資訊科學被納入通識課程呢?原因就在此,我們太擅長把一樣東西當作教條,“廣泛”施行,從教學效率上來看,這沒什麼錯,但是這卻會違反資訊作為“科學”二字的含義。既然是科學,就應該沒什麼答案,而沒有答案的東西要怎麼寫教科書呢?遑論是怎麼教?既然照著學習科學這件事不好教,那麼就很為難老師了。以我在大學教書20年的經驗,單單要與學生溝通以下這件事都很難了,何況在中小學階段。那就是前面說的,科學是沒有一定的答案的。

蘇: 所有人應該都會同意,科學沒有定的答案這件事,但是我們的學生為什麼會一直到念了大學都還老是希望老師可以給個答案呢?我想,若是因循過去的做法,資訊科學納入通識課程,甚至有一天變成大學入學要考的科目之一,恐怕我們上的不是資訊科學,而是資訊學科了。

洪: 這是目前教育上常見到共同問題,所以我不希望在資訊教育中教得太複雜,希望多一些實作類的專題,讓學生多些自由發揮的空間,也就是所謂的project-based learning的概念。同時,還希望利用資訊教育,把其他學科的東西帶進來活用,培養跨領域的概念。

蘇: 前文所說,資訊科學有兩個重要的觀念要建立,也就是computational thinking與algorithmic thinking。這些是思維,沒有針對哪一個領域,哪一個應用,或是哪一門學科。資訊的東西往往只是個工具,希望能用來解決諸多事物,本身不是主角,通常只有在資訊系裏才會把資訊技術本身的發展當作主角。前面說過,許多資訊系學生在還沒有念完大二就對資訊失去興趣,之所以願意留下來繼續念,看的不過就是畢業後工作好找,這是蠻悲哀的。當學生學一樣東西不知道要解決什麼問題,只是被要求把工具來來去去弄得很熟,還會產生興趣的學生比例是很少的。

洪: 如果每個人都搶著要當主角,覺得主角最厲害,無視於配角的存在和價值,那麼這會是什麼樣的社會?台灣過度重視「人比人」這件事,凡事都要比,從小比到大,所以很難建立所謂的職人文化,很少願意友人十年磨一劍,做某項技術的專家。真正的專家不多,但唬人的專家到處都是,今天早上有位教授說到某個單位,最擅長「用PowerPoint做研究」,拿政府經費,這是社會文化的議題。

蘇: 這讓我想起自己當年學習如何解微分方程的往事。解微分方程有很多方法,在工程數學裡,老師一一教我們這些方法,我為了考試,必須每種方法都熟練,卻不知道最重要的其實是,“微分方程是用來解決什麼問題?”,的這個問題。我之所以勉力學習只不過是為了不要落在我的同班同學之後太遠,這個不知所以的理由。

洪: 蘇老師您總是拿這個我大一不及格的微積分來講... 當時我不及格,原因是有一大堆的積分表要背誦,老師總是找些難題來為難電機系的學生,而我並不認同那樣的教法。我大四重修時,跟地理系的學生一起修,老師將比較多的應用面,我認為是比較好的教法。工程數學也是如此,有老師多講些應用面,讓學生知道學這個東西有什麼用,有的老師則喜歡談理論,我個人比較喜歡前者,而在當前電腦可以自動解決很多微積分和工程數學的時代,我認為了解概念和用途,遠比把算法背得滾瓜爛熟來得重要。

蘇: 我想,若是大一新生就可以讓他們知道,學習資訊技術可以解決哪些有趣的問題,那麼一定可以有更大比例的學生在未來的四年大學生涯裡,不治喪失對資訊技術的興趣,甚至是可以深深地投入到新資訊科技的研發,要不然也可以解決許多現實的應用。

洪: 這是國外大學當前在推所謂的「基石(cornerstone)課程」的概念,資訊系不見得要和傳統課程那樣按部就班由程式語言學起,然後是演算法、物件導向、自動機、系統程式、作業系統、計算機結構等等,而是先告訴學生訊技術可以解決哪些有趣的問題,以及如何實際利用工具解決問題,再告訴他們裡面有哪些複雜的問題會在以後哪些課程中教到。

蘇: 資訊科學作為中小學的教學材料也該是如此。對於一個多年來以資訊技術解決問題的人,我相信即使是小學裡的其他科目,一定也有可以運用到資訊技術的地方,而運用資訊技術的第一步就是計算思維與演算法思維的建立。這就像是獨孤九劍的總訣式一樣。

洪: 上述「基石課程」的概念,更需要在中小學課程中強調。我認為應該採用「由上而下」(top-down)計畫導向實作學習(project-based learning)的方式進行,這也就是獨孤九劍的總訣式。記得風清揚怎麼教令狐沖的?除了教他總訣之外,還讓他實際和當時要來抓令狐沖下山的大盜田伯光對打,從旁指導,這就是由做中學,讓學生領悟道理。

蘇: 再來,我們也該對教學的目標有一個明確的想法。舉例來說,中學有一般高中與技職高中之分,教學目標自然不同。以我在偏鄉的程式教學的走向是以後者為主,因為身在偏鄉,我知道多數學科成績較差的學生會走技職體系,我希望他們在入學後有更堅實的程式設計基礎,所以我的目標不在啟發天才,而在於一步步建立程式設計概念,並且儘早讓他們離開圖形化程式界面,進入文字模式的編寫程式,因為後者才是工作場域之所必需。俗話說,錢不是萬能,沒有錢萬萬不能。期待他們若是有一天上了大學,至少學費與生活費可以靠自己掙來。

洪: 我前面說過很多中後段大學的學生念完資訊系後不上不下的,不利於找工作。資訊系如此,其他科系應該也相仿。所以我們需要提倡技職教育,強調專業性和跨領域合作,而不是讓大學生滿街跑、自生自滅。

蘇: 為了確認同學的學習成果,Program the world 的晉級考試題目都只有一題,可是考試時間都至少是一天。這有別于一般考試的題目數多,每一題的解題時間卻不多。以寫程式這件事而論,本來就是要用比較長的時間來寫一隻程式,以昨天我們的AppInventor考試題目,每一題都要使用超過5000的程式碼積木才可以做完,判斷是否過關的標準也模擬一般專案開發的檢查過程,目的就在讓學生知道程式設計的世界到底是什麼樣子。

蘇: Program the world兒童與少年程式設計教學計劃的課程也會安排讓學生有快速升級的機會,這類學生在偏鄉的比例雖然不高,但是我們就會以專案(Project Based Learning)學習的方式來試著帶領他們。若是她們可以因此更上層樓,而且我們的升學制度真正邁向多元,我想自會有其他大學教授(我在成大資訊系的同儕就有)對他們有興趣而願意接手繼續帶領他們。

洪: 我想大學的多元入學應該要考慮到這類特殊才能學生,我個人很樂意指導這類學生,但礙於學校入學規定,這類人才往往無法進到台大,是一件很可惜的事情,應該有更好的方法來進行。

蘇: 這些都不是目前體制內的制式教學可以辦到的。對於多數學科,我覺得也許制式教學不失是一個方法。但是以資訊科學來說,卻難以用這樣的教學法來達到教學效果。事實上,在一般大學資訊系裡,也還未能完全融合當今資訊科學教學的所需,這是我們要努力改變的。

洪: 我之前批判了很多大學體制的問題,如我以上所說,資訊科技是當前世界上最靈活、創新最多、最能夠跨領域的學門,但我們的大學體制和評鑑制度把資訊系的發展限制住了,是件非常可惜的事情。

蘇: 我想在上位者需要先想好的是,我們的資訊科學教育的目標為何,而且沒有一種方式會適合所有學生,正如過去我們有技職與一般的分法,之後也許該更進一步分流。雖說有教無類的目標過於遠大,也許難以達成,但是我們總該想個方法,努力往Every student succeeds這個方向邁進。只要政策對了,連補習教育也不會是只為升學而存在,當然,正規教育就更不會只是為了升學。

洪: 未來的職場會有很大變革,只顧著升學和學位,將來會如何?我也不知道。我們這裡談的是整個教育理念的問題,加上對於國家未來競爭力的定位問題,所以說,絕對不是單純由資訊科系的教授們來規劃資訊教育就行的。

蘇: 教育的目標當然是提升學生的競爭力,這個競爭力不是跟身邊的人競爭,而是跟全世界的人才競爭才對。假如我們的教育把過去的硬體代工只是導向軟體代工,那麼我們就還未看到真正的困境,假如我們的學生因之而提起對一切問題產生疑問,進而對一切問題產生解法,台灣才算真正看到隧道口的光。

洪: 我們需要各種人才團結合作來對外擴展,而不是鎖國內鬥。我對於以往國家在培育和運用人才上很大的意見,基本上過度強調穩定安逸,在國內卡位自保,而逐漸喪失了拼勁,這個問題太大了,我們以上聚焦在資訊科技教育上的討論,希望從這個角度去探索一條提昇對外競爭力的機會,希望台灣能把握這個機會。

(註一)上集 https://goo.gl/jAXlNx
(註二)下集 https://goo.gl/yyT9Fd

2015年11月21日 星期六

轉型到Open Source的世界來尋寶

Open source( 開源碼 )是時代趨勢,使用者極多的開源系統軟體,例如Linux、Android,很多廠商都愛用,廣泛用在伺服器和手機上。IBM早在1998年引進Red Hat Linux (註1),而一直視Linux為敵人、說Linux是癌細胞的微軟,就在前幾天宣布全面與Red Hat Linux合作 (註2)。
我當年在矽谷SUN工作時(2000-2005),公司深受Linux的威脅,員工的意見分為兩派,在幾年間不斷辯論,不斷嘗試各種路線,好幾位主管做不好就下台。「在某些方面打不過他,就包容他、利用他」,似乎是最後的結論,所以SUN在低階伺服器市場上逐漸引進Linux,把自家的處理機、作業系統和中介軟體用於中、高階市場。
後來Oracle收購SUN之後,也是走相同的路線。Oracle正在銷售的Big Data Appliance (註3),上面主打的是已經安裝、優化好的開源系統軟體,例如Hadoop、NoSQL、Hbase、Impala、Accumulo、Cloudera、Spark、Kafka等等。當然,Oracle也提供自家的軟體,繼續向那些不敢轉用開源系統軟體的客戶收取高額的軟體授權費用,有肥羊可宰,何樂不為?
這些公司很清楚,要如何放棄利潤過低的產品,如何引進公開好用的資源,在這個科技進展迅速、資訊迅速流轉的時代,要如何做抉擇,找出公司研發的策略,是管理決策階層的職責,也是對他們能力的考驗。決策錯誤就下台以示負責,是常見的事情,而高科技本來就是高風險,賭錯了也不是甚麼丟臉的事,否則Steve Jobs哪有東山再起、重回Apple的機會?
話說台灣,一大堆所謂高科技業的主管,即使這些年來把公司和業界搞到了今天如此慘澹,還能夠振振有詞地說年輕人不夠抗壓、政府補助太少,我覺得被稱為「慣老闆」是咎由自取。我在SUN工作的那五年,公司的股票一路貶值到十五分之一,從來沒有聽說有人說要跟美國政府要求補助的,而公司為了保住人才,還是年年加薪。相較於此,台灣科技產業的有很許多領導階層,非常地不負責任。
只會做那些擅長做的東西,對新的東西多半由道聽塗說而來,對其他領域的東西一知半解,卻要在專家和手下的面前裝出一副「我知道很多你們所不知道的東西」的樣子,是最令人厭惡的行為。在有些公司,中階主管們明爭暗鬥,如同政壇,政客出一張嘴,表面上對罵,實際上架空長官、壓榨下屬,私底下串聯分贓,甚至掏空公司。
前天有人問我產業這樣子該麼辦? 我說,這些人要把公司玩垮,我們也沒辦法,只是政府不應該用大家的錢隨便給補助,讓他們早點垮掉,才能活化鎖在裡面的人才,像Nokia衰落瓦解 (註4) 那樣不也是一條活路嗎?否則連人才都爛在裡面了,將來更慘。也就是說,這些年政府補助扶持產業這招,已經行不通了 -- 政府再怎麼補助,也沒有中國政府厲害,所以靠補助才能生存的公司,面對紅色供應鏈,實際上也競爭不過的。
那麼我們就放棄科技研發了嗎? 當然不是。一些朋友和我認為,台灣在眾多可以嘗試的方向中,可以做的一件事,是集中人才去探索那些「資本門檻不高、技術門檻高」的研發項目,包括既有的產業想轉型,或是新創事業想找方向,都可以考慮。舉例來說:
- 如果某一代工產業所需的資本門檻高,但如果技術門檻不高,那對岸可以靠著充沛的資金和人力,很快來佔領這樣的產業,現在大家都看到這樣的結果,但很多這樣的公司還在吃老本,難以轉型。
- 資本門檻不高的新創企業,如果技術門檻也不高,即便靠創意、靠經營模式,也很容易曇花一現,因為創意和經營模式很容易被複製,有錢的公司可以後來居上。
- 能夠發展出門檻高的技術,不只是技術有價值,人才也是國家重要的資源。如果台灣實際上能好好耕耘這塊,才是長久之道。我十月在荷蘭開會,深深覺得荷蘭產業的發展方法,很值得借鏡。
在資訊產業上,要發展「資本門檻不高、技術門檻高」的產品或是服務,一個非常可行的方式,就是利用高度發展的open source軟硬體的基礎,站在巨人的肩膀上,研究如何打造能吸引大家來使用的優質的系統和應用。資本門檻不高,因為做研發時不需要昂貴的生產機具,不需要昂貴的軟體授權,我們只要有一流的人才,就可以藉由閱讀open source來吸取世界頂尖的智慧,並且證明自己的技術能力 (註5)。
當前的問題是,在台灣的業界能夠領悟並且善用開源系統軟體的優勢的資本家和人才不夠集中。之前學界和業界曾經有一些open source的推廣以及研發計畫,很少有能夠聚集火力攻佔某領域站上世界舞台的作為。現在業界所使用的open source,早已不是搞懂一兩個open source計畫,也不是小眾搞一些自娛娛人的計畫就行的 ,如果可以從系統面貫串到應用面,會有更大的機會。
VMFive是一個例子 (註6)。在許多新創公司中,這家公司所涵蓋的技術層面是較廣的,從系統層面的虛擬化技術連結到應用面,大都採用open source,在某些關鍵點上進行優化,提升效率和功能性節省系統建置成本
然而,不少新創團隊,偏向低門檻的作法 ,或者低估技術門檻,一昧想在短期內開發出看起來很酷的產品,因此而走不遠 (註7、8) 。傳統系統代工廠的長官們,似乎還活在上個世紀,腦袋轉不過來,對open source一昧排拒,不懂open source的價值,不會運用open source,如何帶領公司轉型打仗? 眼中只有訂單,只會抱著大廠的大腿,不知道以前的運作方式已經落伍了。
話說 2006年時,我們一行人在參訪HTC的時候,公司所有高層都出來對我們簡報,軟體部門擺在最後,乏善可陳,似乎是最不受重視的部門。當時還沒有iPhone和Android,HTC只會做Windows CE作業系統的智慧型手機,唯一微軟願意讓HTC插手的是與硬體相關的驅動程式(device drivers),所以也沒甚麼前瞻研發工作可做。
在當時那種封閉的生態系,只要緊抱著Microsoft、Intel、IBM、HP等大廠的大腿,提供價廉物美的組件和代工生產,就可以賺得很高興。早在智慧手機之前,PC和周邊的代工產業已經風光了十多年,所謂Wintel的供應鏈,包括Asus、Acer、廣達等系統廠,以及相關的零組件廠,就像當年的HTC一樣,在軟體上沒有甚麼研發空間。
那段期間(2006~2009)我開授Linux Kernel and Device Drivers課程,學生趨之若鶩,廠商也來邀約演講,因為廠商開始導入Linux,但極度缺乏Linux核心人才。學生為了就業而跑來修課,因為學會寫Device Drivers就可以找到不錯的工作機會。
很多資訊工程的人才到這些產業去幫硬體裝置寫firmware和device drivers,雖然很多人因此成為科技新貴,但我常常聽到這些軟體、韌體工程師向我抱怨,做來做去都是差不多的東西,沒甚麼長進;而且技術門檻不高,要與人競爭只有設法做得比別人快,所以常常要趕工加班,累到過勞爆肝。後來我不大想開這門課,因為我不願學生去幫缺乏研發企圖心的廠商賣肝,而且我認為這種行業撐不了多久。
2009年,Google正式釋出Android的開源碼,而HTC也幫Google開發出世界上第一款Android手機。挾著以往做Windows手機的經驗優勢,HTC靠著硬體技術、研發速度、穩定性、工業設計、行銷管道,在一開始那幾年做得有聲有色,非常風光。
HTC崛起的案例,大部分可以說是受到open source和Google的加持,加上員工們辛勤努力,所產生的必然結果,也算是時勢造英雄。Android最早由2003年成立的新創公司開始研發 (註9),2005年被Google收購後繼續改進,總共歷經7年才釋出,如果不是Open Source和Google,不可能造就HTC一時的榮景,也不可能與Apple競爭。
可是,Android雖然是open source,但規格主要還是掌握在Google手上,所以HTC做了幾年,又回到老路,在系統上並沒有特別突出的賣點。當時HTC除了在軟體上抱著Google的大腿外,在處理機上抱著Qualcomm的大腿,看人家給甚麼就做甚麼,在系統設計上沒有很大發揮的空間,所以我看了搖頭,不知道他拿甚麼跟人家競爭。
當時我問HTC與聯發科的朋友,兩家公司為何不設法合作?有人猜測是高層有心結,有人說HTC怕得罪Qualcomm,而聯發科的朋友光是做山寨機就忙得不亦樂乎,兩邊都沒有合作的意願。我想,如果當時有合作,現在HTC可能會多一條活路。
「成也是open source,敗也是open source」。如果沒辦法在open source的基礎上加料,端出好菜,那麼其他公司趕上來,尤其是紅色供應鏈挾其廣大資本和市場,自然搞不過人家。所以如何善用open source,是一門大學問
我們現在談open source,主要看的已經不是手機和傳統雲端服務,而是務聯網(IoT)和Big Data產業所用的系統。為了IoT的市場,許多單位開發開源的軟體,包括ARM公司的Mbed (註10),不是沒有原因的。簡單來說,IoT談的是利用資訊科技去提升各項既有產業的效率與服務品質,主導權在既有產業,而這些公司當然會希望有可以公開受檢驗其安全性,可以自行根據應用做客製化,容易找到開發人員的開放式平台。Big Data所使用的系統,如同上述Oracle Big Data Appliance的例子,早已大量使用open source。
封閉的系統,除非能做到像Apple那樣,才有辦法存活。但世界上有幾個Apple? 幾乎所有的大公司,連Microsoft和Apple在內,也都積極使用和貢獻open source,但台灣有些公司還在想要如何保護。現在連硬體都得要開源,像是Arduino和Raspberry Pi這類產品,已經招來大量應用開發者成為社群,逐步侵占工業電腦的市場。甚至像UC Berkeley的RISC-V這樣的開源CPU越來越進步,效能接近ARM,可以讓開發者自行客製化指令集,社群積極開發工具組,越來越有吸引力﹑。
可惜台灣大多數既有的產業並不見得重視這塊,部刀ˋ到開放的好處。我們邀請業界來贊助學校的課程,有些人一劈頭就問,你們培育出來的人才,有多少人會來我公司嗎? 我們做產學合作,政府和業界劈頭就問,要產出什麼專利,產出的結果要歸誰?業界不願積極贊助開源的教育研究,那教授和學生自然就做他們自己喜歡做的研究了,所以產學落差日益加大這件事並不意外,政府也管不了,業界再大聲疾呼也無用,要就自己來跟學校合作
台灣業界最大的一個迷思,就是誤以為開源的東西沒有價值。這點我前幾天已經論過,有興趣者請參考 (註11)。我們看到很多機會,只要夠厲害,就能夠找到商機,而且know-how可以搞到博大精深,加大技術門檻。如果發展出門檻高的技術,不只是技術有價值,人才也是國家重要的資源,技術和人才都是世界一流的大公司都在積極爭取的。
這是一條可長可久的路,等待更多有眼光的企業家和有智慧勇氣的年輕人來探索。有興趣的話,我這個看過風景的人,可以找嚮導來帶領大家入門尋寶。
(註1)http://www-03.ibm.com/linux/redhat.html
(註2)http://www.forbes.com/sites/janakirammsv/2015/11/11/a-closer-look-at-microsoft-and-red-hat-partnership/
(註3)https://www.oracle.com/engineered-systems/big-data-appliance/index.html
(註4) http://technews.tw/2015/11/13/nokia-7/
(註5)http://buzzorange.com/techorange/2015/11/12/coding-2/
(註6)http://vmfive.com/
(註7)https://www.facebook.com/notes/洪士灝/本立而道生-不要低估技術門檻/1058810250816783
(註8)https://www.facebook.com/weifenl/posts/871591229603778?fref=nf&pnref=story
(註9)https://zh.wikipedia.org/wiki/Android
(註10)https://www.mbed.com/en/
(註11)http://buzzorange.com/techorange/2015/11/18/open-sources/

2015年11月19日 星期四

厚積而薄發

林偉棻教授這篇是非常值得分享的文章。我幾天前評論當前的新創氛圍時說到「本立而道生」,與林老師的見解類似。林老師是我台大電機、密西根大學的系友,她在Apple工作過一陣子後回到台灣貢獻社會。

在個人學問和德行上,「博觀而約取,厚積而薄發」是相當重要的內斂修持之道。廣博地觀察世間人事物,在深究學問時要懂得收斂和聚焦;深厚地耕耘、有系統地累積實力,卻只是淡泊淺易地分享心得。

當然,有人看蘇軾的言行,似乎很高調,哪有什麼「厚積而薄發」?我三不五時在臉書部落格上發表意見,在有道者面前,恐怕是「膚淺卻猛發」。或許是學養不夠,值此關鍵時刻,孔子說:「不得中行而與之,必也狂狷乎」,只好拋磚引玉、丟人現眼,或許能吸引那些真正「厚積而薄發」的有道之士出來現身說法。

現在教育的問題很大,但如果我是學生的話,為了自己的前途,難道只把問題推給教育當局,就不好好學了嗎?或是人云亦云,馬馬虎虎學學,就一窩蜂跟著人家說教育無用、學位無用、大環境不好,趕緊去找鐵飯碗、金飯碗、搞創業?沒有打好基礎,沒有想清楚就這樣做,有其危險性。

我提倡多元,但沒有鼓勵學生們抄短線,或是像無頭蒼蠅般亂鑽。除非有蟑螂般的本事,像前幾天課上討論的CockroachDB開源資料庫系統(註)有那麼強大的存活能力(survivability),能夠利用全分散處理的架構,不需要首腦(master)也可以存活,自行復原。

多元即是博觀,專業即是約取,厚積即是立本,有了這些基礎,對未來的道路就可以看得更清楚,才有薄發或爆發的資糧和空間。蘇軾這段罵得很好:

『然今之人者,學未成而急於用,腹含半經,便輕用於世也。不憂己學之不足,徒懼未能有用之時。故學之未精,便輕用其力,以致事不成,而人輕之也。』

這段蘇軾用來罵自己身邊得志小人的話,也很適合在今天罵那些「腹含半經」卻因緣際會而掌握權力的門神和跳樑小丑,以及提醒那些半吊子、不學無術卻想一步登天的年輕人,也讓我們多些自我反省。

眼光放遠來看,思考如何在超過40年的歲月中在高科技職場上持盈保泰,還是尋覓哪裡有穩如泰山的位置,還是設法撈一票後抽身?我大膽預測,不會自學、缺乏適應力、沒有獨到眼光,一招兩式靠著機運晉升管理階層的人,會在不久的未來迅速被取代。有能力的人,雖然嶄露頭角的時刻較晚,但在重要時刻會有用武之地。

「博觀而約取,厚積而薄發」這句話,雖然古老,卻也是在快速變遷社會的現代知識分子可細水長流的中道路線。

(註)https://github.com/cockroachdb/cockroach

2015年11月18日 星期三

新世代的FPGA

剛剛看到一篇關於IBM剛剛發表在SC15的論文,使用FPGA來加速big data storage和middleware的報導(註),剛好佐證了我們正在做的研究的意義性。

傳統的FPGA的用法,有很多限制,真的要用FPGA加速應用,必須有突破傳統的程式發展典範與框架(programming paradigm and framework)、編譯器技術與runtime support、計算機系統架構、設計與除錯工具等等。

我們也和IBM有些淵源。故事要回到四年前,IBM Austin Research Lab在2011~2013年間與我們合作FPGA加速的技術,那時IBM合作的夥伴是Altera,IBM把FPGA放在Power CPU的旁邊,讓FPGA可以直接存取主記憶體,在當時是很威的設計。全世界沒有幾台原型機,特別運一台到南港給我們做研究。

後來,IBM一連串改組,FPGA加速計畫不知何去何從,南港的伺服器部門大部分轉給聯想。但我們仍舊繼續這方面的研究,沒有金援,就自己湊錢買有點貴而且代理廠商不大懂得支援的FPGA加速卡。

我們在去年發表一篇關於程式發展典範與框架的論文,有興趣者可參考:
MobileFBP: Designing portable reconfigurable applications
for heterogeneous systems, Journal of Systems Architecture (2014).

前幾天才獲得通知,說我們投稿到FPGA 2016 Conference的最新研究成果被接受了,所以明年二月底有機會去北加州(Monterey),現在開始也可以多談談新的研究內容。

論文題目是: A Platform-Oblivious Approach for Heterogeneous Computing: a Case Study with Monte Carlo-based Radiation Simulation, to appear in FPGA 2016.

我們正在做的研究目標類似文中這段所描述的:IBM Systems Group developers will create solution stacks for POWER-based servers, storage and middleware systems with Xilinx FPGA accelerators for data center architectures such as OpenStack, Docker, and Spark.

期許我們的研究能與世界同步,徵求人才中。

 (註)http://www.anandtech.com/show/9790/ibm-xilinx-sc15-collaborating-for-better-powerfpga-system-integration

本立而道生 - 不要低估技術門檻

奇群公司的募集群眾資金研發的「貓臉辨識餵食器」,說是低估硬體開發的難度而難產, 向群眾道歉(註)。在此我不想就細節評論這件個案,但我想藉此提醒想創業的人,不要低估系統開發的難度。
現在有太多創業競賽過度強調包裝,甚至主辦單位還特別找人來教參賽隊伍如何把作品「投售」(pitch)給評審。當一天評審下來,忙著拆包裝找技術涵量,發現許多團隊根本不考慮系統面的問題,包括硬體成本、效能、耗電量、網路費用、即時性、例外處理等等實務面上的問題,而且問題不小。
某次擔任某個競賽評審時,我問主辦單位能不能讓大獎從缺,因為作品內涵不夠,但主辦者面有難色。後來知道,不只獎金一定要發出去,而且還要輔導和推銷得獎團隊去創業,這是上級長官交付的任務。有趣的是,媒體人士擔任的評審比學界多,主導了得獎作品的評分,而從結果中發現,他們大多無視於技術面上的問題和難度。
想起一句老話:「君子務本,本立而道生」。本是什麼?想要得什麼道?可能在創業時要思考清楚,業也是有分善業與惡業的。
(註) http://www.bnext.com.tw/article/view/id/37988

2015年11月17日 星期二

開源(open source)的大趨勢

今天我們「系統研究專題」課堂上談了開源(open source)的大趨勢。除了開源程式碼已經成為主流之外,資料、硬體也逐漸搭上開源的列車,原因是甚麼呢?

難道開放和分享,是人類的天性嗎? 不要鬧了,果真如此,那我們為什麼有很多東西不願跟他人分享? 為什麼有私人財產、私人企業? 為什麼文章要有著作權,發明要有專利、智財權?

如果有機會請有錢的人、企業家,做點「拔一毛以利天下」的事,看看他們做不做? 我不是批判他們,而是說「開源」這件事,並不是人類的天性,而是基於利益考量下的產物。

坦白說,我喜歡開源的精神和支持開源的做法,但我一直覺得Richard Stallman的Free Software的理念陳義過高、無法落實。就我的觀察,開源多多少少有其利益考量,並不見得是義舉。

首先,貢獻開源程式碼、資料、硬體設計者,以下簡稱「開源者」,往往可以因此展現能力、獲得好名聲、交到好朋友,不必要到處請託,也有機會讓大人物看到長才,一步登天。開源者的知識和能力,對於想使用開放資源的族群和公司,是寶貴的資產。

其次,開放的資源,往往只是起點,好的開源計畫會吸引好人才一起進來開發,讓好的更好。好計畫加上好團隊,再加上有眼光的企業家,大概就成功了一大半。這是為什麼有些開源計畫能夠快速創業、成功吸引投資的原因。

再者,基於開源的產品,比較容易獲得客戶和使用者的支持和信任,所以推廣容易。雖說資源本身是免費,但使用者的支持和信任,以及衍生而出的回饋與品牌形象是無價的,而這些無價的東西往往可以用某些方式創造出價值。

最後,擁有大量使用者的開源技術,由於使用者的回饋和幫助修正,使得開源技術的穩定度和成熟度隨著時間而增加。反過來說,「閉源」(closed source)技術的維護與更新,需要持續投注人力,需要在自家訓練新人,技術可能因為人才流失而無法維護,不穩定的因素較高。

會在課堂上講這些,是因為學生懵懵懂懂,而業界對於開源的觀念也有其侷限性。我被業者嗆過很多次,說技術如果開源,東西都被看光光,怎麼賺錢?

近年來,靠著「閉源」技術賺錢的公司,逐漸踢到了鐵板。有些公司靠著老字號金字招牌,還可以哄騙那些不懂技術的客戶。然而,諸如「買IBM的伺服器就不怕被老闆罵」的思維已逐漸淡化,連IBM都把低階伺服器部門賣給聯想,微軟開始與開源的Linux合作,要不是踢到鐵板,怎會如此?

因為敵不過開源技術的大趨勢,廠商踢到鐵板,只是早晚的問題而已。當然,專利和智財權,是開放資源的敵人,但只要能用開放資源賺錢,負擔合理的專利、智財費用,也還過得去。

相較之下,如果一昧保護,自我設限,可能會搞到產品沒有人理會,技術一文不值。有一些開源技術,來自於失去競爭力的產品,但這類技術本身也日落西山,為時已晚,沒甚麼看頭。

我在課堂上帶著學生看了一些近期的開源計畫的案例,來佐證以上所述。這些案例,包括:

1. Google的Open Source Projects網頁上列出的17個計劃簡介。(https://developers.google.com/open-source/projects)

Google號稱公開了20,000,000行程式碼,900個開源碼計畫,而網頁所列的這17個代表性計畫,都是我所謂「廣義的開源系統軟體」,包括作業系統、程式庫、引擎、程式框架、程式語言編譯器、開發工具,都是提供給應用開發者使用的軟體。由此可見開源系統軟體的重要性。

2. 2014年度最佳十大新鮮開源碼計畫("The top 10 rookie open source projects", http://www.infoworld.com/article/2875439/open-source-software/the-top-10-rookie-open-source-projects.html)

不是只有大公司才能做出好的開源計畫,這裡由媒體選出的十大新人獎,當然不見得一定是最佳的,不過很有參考價值。同學們可以看看程式高手怎麼樣從有系統地解決自己身邊的問題開始,藉由分享和交流成果,獲得贊助,逐漸壯大成為世界級的計畫,有的也成為商業模式。

3. RISC-V所提出的開放式的處理機架構標準 (http://riscv.org/)

Intel和ARM這兩家公司,藉由他們所定義的處理機架構(instruction set architecture),來占據處理機的市場。但這些二十多年前就訂出來的架構,究竟還能風光到幾時?

如果今天有個拋棄一切舊架構包袱、砍掉重練的開放式處理機架構標準,而且有個高品質的社群提供開源的硬體碼和系統軟體,在效能上能夠與ARM和x86並駕齊驅,可以讓我們整個系統的軟硬體都是開源的,不只能夠節省成本,而且在系統設計上將會有無比的彈性以及軟硬體相互優化的空間。

好了,短短三節課,我們沒辦法講太多細節,只能讓各位瞭解整個大趨勢,但我們已經帶各位入門參觀了。這個大觀園裡,有數不清的好東西,還有很多好人,不要因為門票是免費的,就以為沒有看頭,就不進來玩。

我們下周會挑個重點領域來多講些技術,在那之前,各位不妨抽空自己探索一番。如果能好好花時間去看懂以上提到的計畫案例,那應該會有不少收穫。