Archive for July, 2008


[留學] 輕鬆打國際電話必備的免電腦Skype話機! Linksys CIT400 iPhone

Tuesday, July 29th, 2008

為了出國後能讓爸媽能輕鬆用skype,最近就一直在找可以免接電腦的skype話機,而運氣很好的是兩個禮拜前剛好看到Amazon特價Linksys CIT400只要$96.99美金(現在恢復原價變成$242.99了…..還好我即時出手,省了好多錢),因為這隻評價非常好,所以就毫不猶豫就買下來再請人從美國幫我帶回來,直到今天終於到手啦~ (台灣在Y拍上面也找得到,雖然比不上$96.99這麼便宜,但價差也不會太離譜。)

很有趣的是回家打開盒子一看,發現上面寫著iPhone! 原來這就是傳說中之前和Apple的iPhone有過同名爭議的Cisco電話啊…。

盒子內主要是一個可以同時接傳統電話線和ethernet網路線的基地台,以及一隻無線話機。

無線話機的質感還不錯,而且內附兩顆充電電池,平常放在充電座上面就會自己充電了。

安裝設定上也是超簡單,把基地台的網路線插上去後就能自己透過DHCP取得IP,然後在話機上設定一下skype的帳號和密碼,就能直接用了。這樣只要先幫爸媽把skype的聯絡人清單設定好,他們就能直接輕易的打給我的skype或是透過skypeout打到美國的電話。此外,有了這種話機後,我就能隨時用skype打電話回家,爸媽只要當作一般電話接起來就可以講了,不用跟他們約時間開電腦,也不用先用傳統電話先叫他們開電腦再開始skype,實在是方便很多啊~

目前發現唯一缺點是聯絡人不能顯示中文名字。但因為是給父母用的,他們基本上只會拿來打給我,所以在聯絡人很少的情況下這問題就不大了XD

追求神乎其技的程式設計之道(五)

Friday, July 25th, 2008

讓電腦自己寫程式的夢

在高三突然對於讓電腦自己寫程式產生興趣後,我每天就都想著這件事,夢想著未來某一天的電腦能跟我一起寫程式,當我把程式目的說給它聽時,它就一邊把細部的程式碼產生出來:我不用想如何命名變數,或是要用什麼演算法,還是我到底要不要把這個功能變成獨立的class…;我只要動動嘴巴:「我想寫一個橫向捲軸的射擊遊戲。玩家操縱著會變形的飛機,還有四種武器。第一關要長這樣這樣……」,然後電腦就幫我把遊戲寫出來了!如果真的可以這樣,那該有多好啊!(如果真的成真,恐怕我也要失業了?)[註一]

這個想法實在太讓人興奮了,雖然說這是一個遙遠的夢想(其實那時候我並沒有覺得這麼遙遠,只能說自己太不自量力XD),但也開啟我對於人工智慧、程式語言結構、軟體工程等領域的高度興趣。

寫程式很難?

在高中時代頗不知天高地厚的我,一邊嘗試著利用基因演算法(Genetic Algorithms)讓電腦自己產生程式碼,一邊研究各種程式語言的結構和特性。靠直覺摸索出利用tree作為中介來描述一個程式後(那時沒唸過compiler,不知道這個其實就是Abstract Syntax Tree),我突然就對這個想法的可行性信心大增,所以一時衝動就去報名了國際科展,打算把這個想法實做出來。

真的做了以後才發現,最難的部份不是產生出程式碼。如果你把程式語言的基本元素,像是if、for、變數、運算符號等東西做成一塊塊磁體,然後拿給一隻猴子玩,那麼牠其實也能拼出一堆程式給你,問題是:「你要怎麼知道這些程式碼真的達到了你想要的目的?」

悟出這個道理後,我突然了解寫程式最難的部份是在驗證程式碼真的跟你所想表達的事情完全相同。(所以說我對於各家軟體公司的QA地位都低於RD其實感到很不平)

基本上,我們只能設計大量的可能輸入值丟進程式裡,並比對程式跑出來的結果和我們想要的輸出相不相同。即使在這種情況下,我們也只能說這個程式在測試過的這些輸入值上所產生的結果是正確的。也就是說,除非我們測試過所有可能的輸入(這意味著無限多種可能),不然永遠沒辦法知道某個程式是對還是錯。除此之外,即使只測試一個輸入值,也還有個很嚴重的問題:「我們怎麼知道這個程式要跑多久?」換句話說,當你程式跑下去,你怎麼知道他是掉入一個無窮迴圈,還是其實正在拼命計算當中?

我在參加國際科展時,認識了歐陽明教授,他告訴我這個問題叫做Halting problem,Alan Turing在70年前就證明了這是一個無解的問題。知道這件事後,才發現自己所知實在太少,對於資訊科學的基本知識實在非常不足,但這次經驗其實也給了我一個明確的方向,讓我把書中的理論和實際的目標連結在一起。

見樹又見林的學習之道

提到書本中的理論,有很多人問過我要怎麼學習寫程式或資訊相關的知識,我順便在這邊分享些心得給大家參考。

常看到許多人抱怨大學裡學的東西都是理論,畢業後找工作時才發現什麼都不會都得重學;當然企業也會抱怨,大學應該多教一些實務課程,不然出社會後還得重新訓練。說來說去,一致的口徑指向理論和實務是打死也扯不上關係的樣子,尤其念資工的人更常這麼說:「學校為什麼不教C#?為什麼不教我做網頁?好歹也要教個HTML嘛!」


我覺得學習任何事物,一定要有充分的興趣才會有效率,在不知道所學為何的情況下被逼著學習是非常痛苦且沒有效率的。最近看了一本書:沒有資優班,珍視每個孩子的芬蘭教育,書中提到芬蘭教育成功的秘密在於「見樹又見林」,這句話也是我對於如何學習最想分享的秘訣。

台灣的教育方法是「先見樹,再見林」,也就是先教你細部的方法和技術,等你都學會之後(或是硬背起來之後),出社會後就會知道為什麼要學這些東西。(很多人小時候都聽過「等你長大就知道唸書有多重要」吧。可是現在比較多人畢業後反而說「我不知道之前念那麼多書有什麼用」)在這種體制之下,許多人在還沒見到整片森林的美景前就被一棵棵大樹搞得暈頭轉向,痛苦萬分,在不知道「學了這個可以做什麼」的情況下,不管學什麼都會覺得沒有意義沒有動力。

而「見樹又見林」的學習方式,是先找到能引起自己興趣的目標,讓自己有個理由去認真學習,之後再往細部的技術和理論去學習。我從小就很想自己寫遊戲,為了達成這個目標,我就四處尋找相關的資料,慢慢的我就知道自己應該要學好一個快速的低階語言(像是C++),如果要寫繪圖引擎可能還得學一點圖學的理論和技術,如果要做網路連線還得學網路相關的技術…。

這裡有個重點是,不要看過森林後就忘記它,而又迷失在幾棵樹幹上,要讓自己一直重複見樹又見林的過程。

這跟如何有效開發軟體的秘訣是一樣的。一個有效率的軟體開發方式是用iterative process,把包含設計、實做、測試的iteration時間縮短,但要一直不斷重複這個iteration無數次來改進現有的成果。同理,在已經有目標的狀況下學習時,每當學會一些新東西,就要馬上試著把它實現出來,即使是只有幾行程式碼的prototype也沒關係。只要一直不斷的學,這個prototype就會一直被改進,一直加進最新學到的知識和技術而更接近最終的目標。

同時動腦也動手(註二),用這種角度來學習就能充分了解自己學會的東西可以用在什麼地方,馬上得到回饋的成就感還會刺激自己繼續向前進,形成一個非常有效率的學習循環。用這種角度看學校教的東西,就能知道書本上的理論可以用在哪,並且又欠缺哪些實務知識讓自己無法做出想要的東西。

這方法理論上可以擴展到任何事物的學習,重點在找到有興趣的目標和書本裡知識的連結,我覺得這是老師應該要出力的地方,無奈的是台灣的教育體制把中小學老師們變成出考題和改考卷的機器人….。

註一:
其實,現在真的有這樣的研究,而且驚人的是目前已經有了非常接近我想像中未來的雛型。最讓我興奮的是MIT Media Lab的Hugo LiuHenry Lieberman做的Metafor:只要對電腦用英文描述你要的程式,電腦就自動把Python code生出來給你….。

註二:
話說,MIT的校徽上就是一個拿著鎚子的工匠和一個拿著書的學者,所代表的意義就是 “Mind and Hand”,也就是期望每個學生都能手腦並用,除了做夢外也要實做出來才算數啊。

(待續)

[留學] 窮學生就是要省錢!

Wednesday, July 23rd, 2008

距離要去美國的時間轉眼間只剩一個月了,最近終於也把簽證、體檢等雜事辦完,可以開始打包行李準備迎接未來的留學生生活了。因為油價上漲,能帶上飛機的行李限重越來越低,生活用品我打算都到美國再買,所以最近就開始研究起在美國購物的秘訣。

美國土地廣闊,人們都相當依賴網路購物,而在網路上買東西就一定要知道怎麼利用現金回饋(cash back)來省點錢!目前網路上最多人用的cash back網站有三個:EBatesFatWalletMicrosoft的Live search cashback

這三個網站分別和上百家商店合作,只要透過這些cash back網站連結出去並完成交易,就可以拿到一定比例的現金回饋。這些現金回饋其實還蠻多的,一般來說是2%~5%,但也有一些店的回饋甚至超過20%。我之前在Priceline訂過旅館,就是透過Ebates連過去的,雖然只有2%的回饋,但在什麼都漲的時代把小錢累積下來也是很可觀的。如果你常買機票之類的大額支出,那更是能輕易拿到上千台幣的回饋喔。

最後順便提醒大家一個好康的情報,如果你透過我的EBates連結去註冊,馬上就能得到5塊美金的回饋喔,並且我也會有5塊美金的介紹費。(就當贊助我寫blog吧 :D

附帶一提,這不是只有住美國的人才能用喔。有些商店是能把東西寄到台灣的,而且現金回饋是以支票的方式支付,在台灣也是能收到喔。

設計&未來生活

Wednesday, July 16th, 2008

Donald Norman的新書The Design of Future Things出中文版了!中文版書名是設計&未來生活

MMDays曾經推薦過Donald Norman的書,我也一直是Norman系列作品的愛好者,他前兩本作品都是經典之作,對於人與機器之間的互動關係有非常深刻的探討。而設計&未來生活一書關注的議題主要集中在「智慧型」的機器上,也就是具有人工智慧的高度自動化機器。

Norman注意到人一直無法和機器進行真正有效的溝通和合作,人想要握有主導權,並且對於機器一直有一定程度的不信任感,所以當未來機器變得越來越自動化時,機器到底該怎麼和人們互相合作以產生最大效用呢?例如現在其實已經有可以在一般道路上行駛的全自動汽車,問題是人們真的敢把自己的性命交到這種人工智慧汽車上面嗎?Norman提到現今科技已經在自動化設備上投注太多心力,而忽略了人與機器中間的柔性介面:讓人能保有主控權,但也要讓人工智慧能發揮作用使得開車變得更安全又更輕鬆。

未來類似這樣的問題會越來越多,Donald Norman在這個方向的眼光非常獨到,這本書也只有兩百多頁而已,強烈建議對人工智慧及人機互動相關議題有興趣的人一定要找來看看。

附帶一提,我覺得這本書中文版翻得很專業,專有名詞都有保留原文,看起來很輕鬆也不會搞不清楚作者原文到底是用了什麼字。

AT&T iPhone 3G電話費原來是可以打折的!

Wednesday, July 16th, 2008

因為再一個月就要去美國了,最近一直在肖想要入手iPhone 3G,就四處注意iPhone的消息。

剛在這邊看到原來AT&T跟很多公司或學校都有合作,電話費是可以打折的!結果就透過Google找到了一個好消息:MIT學生的iPhone電話費可以打9折!(雖然不多,但總比什麼都沒有好)

但同時也看到一個壞消息:AT&T在校園附近的收訊還蠻糟糕的,即使是3G也沒好到哪…………………….!#@*$&!@#$&!@%&!@#($

唉,如果收訊不好,即使是300G又有什麼用啊….。