聽Lippman講座
對Lippman的印象:
第一次在現(xiàn)場看到Lippman,比以前在視頻上看到的老了很多,頭發(fā)少了很多,胡子也沒了,說話也有些含糊不清了,但年齡的增長卻絲毫沒有抹去他的睿智和朝氣。他是一位非常smart、對喬布斯贊賞有加,很喜歡用Iphone和Ipod的老頭兒。在Q&A環(huán)節(jié)他頑皮地坐在講臺地板上回答問題,讓我看到了大師可愛的一面,也讓我聯(lián)想到了Iphone發(fā)布會上的喬布斯。
內(nèi)容:
講座的主題是下一代大規(guī)模軟件開發(fā)中的挑戰(zhàn)與解決方法,但Lippman卻講的是目前大型軟件(諸如MMOG)開發(fā)的問題,以他在皮克斯動畫公司解決的一個實(shí)際問題入手,闡述他對此類問題的解決哲學(xué)。
問題:
為什么貝爾實(shí)驗(yàn)室用以取代Unix的Plan 9會失敗,為什么宇宙探測器自動控制系統(tǒng)會失敗,為什么他們做的MMO——God & Hero只能承載不到100人?要知道,這些團(tuán)隊的成員都是非常聰明,并且有著很絢麗的工作業(yè)績的牛人。
原因:
原因在于隨著團(tuán)隊規(guī)模的膨脹,越來越多人參與到其中,代碼規(guī)模會呈幾何級增長,直到超出了個體的掌控和理解能力,團(tuán)隊中已經(jīng)沒有一個人能夠完全理解整個系統(tǒng),這時往代碼庫中添加代碼,沒有一個人能夠肯定這將給系統(tǒng)帶來什么。
解決方法:
沒有通用的解決方案,但有些原則:
1)系統(tǒng)不要超出團(tuán)隊成員的理解和掌控能力范圍;
2)不贊成一個人從頭到尾負(fù)責(zé)一個模塊,因?yàn)槊總€人的擅長不一樣,思考問題的角度和解決問題的手段也不同,讓不同的人開發(fā)一個模塊能夠讓該模塊滿足多方面的需求(從底層優(yōu)化到對上層抽象的接口);
3)從小到大的開發(fā)方法,實(shí)際上就是迭代的開發(fā),從具有簡單功能的初級系統(tǒng)迭代到功能完善的大系統(tǒng);
4)不管用什么開發(fā)技術(shù),程序=數(shù)據(jù)+算法的核心理念是不變的。程序能夠跑多快,最終取決于數(shù)據(jù)的訪問速度,而層層抽象往往會降低數(shù)據(jù)訪問速度。因此,首先應(yīng)該保證數(shù)據(jù)的訪問速度,在此基礎(chǔ)上,才考慮封裝和抽象;
5)自己擅長的技術(shù)和方法,不一定就是解決問題的最好的、最合適的方法;
6)Lippman最引人入勝的開發(fā)哲學(xué)——向大自然學(xué)習(xí)。自然界便是一個異常復(fù)雜但設(shè)計良好的系統(tǒng):原子組成分子,在由分子組成蛋白質(zhì),進(jìn)而組成DNA,最終形成生物。
Lippman給我的啟發(fā):
1、敏捷開發(fā)方法已經(jīng)深深地影響了Lippman,這一點(diǎn)可以從他對于迭代開發(fā)和提交可執(zhí)行代碼的推崇可以看出。同時,結(jié)合以前讀的書以及聽過的講座,有一個意識在我頭腦中越來越清晰了:大師在技術(shù)領(lǐng)域摸爬滾打了幾十年之后,必然會從哲學(xué)、生物學(xué)、心理學(xué)的角度來解析軟件開發(fā),并試圖解決開發(fā)過程中的一系列問題,因?yàn)樗麄兿嘈胚@才是認(rèn)知的本源。雖然Lippman沒有很直白地給出大規(guī)模軟件開發(fā)問題的解決方法,但是他給出了一條途徑——從自然界尋求解決方法,就像萬物的構(gòu)成:原子->分子->蛋白質(zhì)->細(xì)胞,從小到大,層次分明。
2、面向?qū)ο蠹夹g(shù)的誕生只是解決了C/Pascal等面向過程語言的一些問題,C++在誕生時,設(shè)計和實(shí)現(xiàn)者并沒有奢望滿足將來不確定的需求。然而,在C++誕生二十多年之后,我們居然很坦然地認(rèn)為面向?qū)ο蠹夹g(shù)是理所當(dāng)然,是符合自然規(guī)律的,這明顯是個悲劇。
3、不要迷你大師,大師只是一個傳說。當(dāng)Lippman在回答cloud computing何去何從時,他只是謙虛地說:他只是對C++比較了解,在其他領(lǐng)域,他可能還不如在座諸位。
posted on 2009-12-05 16:19 Heath 閱讀(3801) 評論(6) 編輯 收藏 引用 所屬分類: Studying