2008年12月4日 星期四

[軟體工程] 漫畫Google Chrome的研發經過

德國一直是我很喜歡的國家之一, 曾經有一段時間很想好好了解德國的歷史, 不過在看德國的歷史的過程中, 實在是一段艱辛的事情, 光人名就花了很多時間把他搞混, 不過有一次在書店發現漫畫日耳曼, 竟然在兩個小時內看完, 然後對這國家的歷史非常深刻, 漫畫實在是宅男最好的禮物.

在家最常用的瀏覽器其實是很老的KKMAN, 一來他可以上逼逼, 二來可以開很多分頁瀏覽網頁. 當然我也知道最HighTech的人都是用Firefox, 無奈和我追求的簡單樸實背道而馳. 所以我猜Google Chrome應該會符合我想要的瀏覽器, 前幾天在研究Chrome時赫然發現, 看得我血脈噴張的一堆好圖, 其實是用漫畫來解構整個Chrome的研發經過, 這裡面提到一些Windows Programming的Process觀念, 和軟體工程討論多年的一些Key Point, 以這樣的充滿人才的Google來說, Release 出Beta Chrome之後, 對軟體工程的很多爭辯應該很有公信力, 所以節錄了一些個人認為真的是拍手叫絕的片段分享一下.

一開始就提到Chrome裡面的每一個tab都是一個Process, 其實在用KKMAN時我曾想過為甚麼每一個衍生的tab不是用Thread來寫, 他漫畫裡有提到, 用Process可以有他的memory stack, 可以很標準的destory. 不過我覺得從這裡開始已經在建構Google Internet App的根基, 代表GMAIL跟一般app一樣他也擁有一個process, 就如同一個視窗, 他可以搬動可以關閉..

特地找了process explorer, 你可以發現Chrome這一個主process下面是我開的每一個分頁, 所以Google應該是用child process的方法建構每一個多出來的tab. 此外當tab還沒開始render時, 這些child並不會建立.

所以這樣的好處就是, 每一個tab做自己的事情, 每一個tab就算busy也沒關係, 不會像KKMAN他會輪流去完成每一個頁面的render.

KKMAN還會遇到如果你其中一個頁面正在忙碌, 造成關不掉其他的頁面, Chrome的設計就可以避免這種困擾, 因為關掉的是這個頁面的process.

這一段Google很明顯在講Chrome的優勢, Google甚麼沒有就是網頁特多, 所以可以藉由debug增加Chrome的相容性, 其實倒不如Google應該介入訂定這些網路標準快一些.

這一段提到一個他們會去測試每一片段的code, 我想應該是每一個code module, 而UI的部分會用script去跑....我想軟體測試真的還是得靠軟體開發者本身.

TEST-DRIVEN這一點我想我們很多時候根本都做不到, 難怪bug每次都一堆, 而且寫越多錯越多.

他們不要cool feature, 要rock solid...我測過後剛好這幾天再用易遊網訂機票, 發現還是有一些javascript壞了, 連帶用IE 發hotmail也有問題.

Chrome parse javascript是用V8提供的方法直接可以成為machine code讓 CPU執行. Chrome render頁面是用open source的webkit, 而parse javascript找丹麥專門做 VM的team, 所以軟體這一行也越來越像硬體要找sourcer.

這一頁很明顯就像是MS的桌面了, 對google來說, 每一個tab就是一個app, Chrome的entry應該就是google os的桌面, 真的是佈局的很好啊.

最後還提到一些open source的目的...這一套三十幾頁的漫畫真的證明google有能力可以去把複雜的東西簡單化, 應該也是google的特色, 裡面提到很多programming的方法, 都是給軟體工程師很好的一課, programming不是只有寫而已, 如何寫..要怎麼寫才能幫user省最多的cpu, memory等等或是給他們最好的UI, 才是軟體工程師追求的目標.

相關資料:

漫畫全部在這裡

漫畫作者Scott McCloud, 真的是神人.

2 意見:

小麥 提到...

code在你眼下變成了美學, 我卻只當它是數學. 倦了.

To Be Two Bee 提到...

其實我同意 code 是
邏輯 加上 數學的總合
所以數學好 寫程式就很快
數學很像是內功
寫code 是外功
依照金庸的理論
內功強 通常都是主角
因為內功都是花時間修練來的

按日期找

EMAIL :

xpeoplex.bee@gmail.com

Total Visitors