OOPSLA 2004

2004 年 11 月 3 日

我已參加 OOPSLA 超過十年。它已成為我與許多朋友見面並了解他們近況的地方,並試著了解 OO 社群的發展方向。

在正式會議開始前,我參加了重新評估《GoF》一書的研討會,這本書在問世十年後。雖然這本書仍然是 OO 領域中任何人都必讀的書籍,但有許多方法可以使其現代化(儘管很遺憾,這似乎不太可能發生 - 至少不會由 GoF 本身進行)。

我們針對下一步的主題進行了許多討論,其中最有趣的一項練習是考慮將一些模式「驅逐出境」。人們對模式進行投票,以表示他們認為哪些模式需要以目前的型式刪除。

四個模式被投票驅逐出境。工廠方法(因為其含義混淆不清 - 該模式與該術語更常見的用法不同)、橋接、享元和解釋器。單例和責任鏈模式的投票結果則分歧。

我發現投票和討論很有趣。當然,不考慮替代方案很難真正考慮這一點。我感到驚訝的是,單例模式以分歧的結果逃過一劫,因為它在我朋友之間已變得不受歡迎。其他模式大多被投票驅逐出境,因為人們認為它們不夠常見,而且其他模式可能會取代它們,很遺憾,我們沒有時間考慮新成員。

Eclipse 在週日晚上舉辦了一場派對(延續了 OTI 和 IBM 的傳統)。然而,房間太小了,所以你唯一能享受它的方式就是先被壓路機輾過。

開幕主題演講由 Microsoft Research 的 Rick Rashid 擔任。演講廣受批評,因為在實驗室中發表了一段有點意思的東西後,便開始進行產品發表,很快就變成了一場典型的乏味產品展示。在看到方塊被調整大小並放入群組後,我便離開了,結果被一些朋友責備沒有早點走人。最生氣的是 Microsoft 的人,他們對於自己同意是一場不恰當的產品推銷感到非常尷尬。我想,在沒有人拿你開玩笑的情況下,要成為眾矢之的已經夠難了。

身為一位我想要成為的支持主管,我計畫參加同事關於模擬物件的會議。但是,當我發現它與 NoNoPoMo(後現代程式設計筆記的筆記)相衝突時,便放棄了這個計畫,這是 Robert Biddle 和 James Noble 最新的一場後現代主義演講。兩年前,我聽到了他們最初的 後現代程式設計筆記 演講,通常將其描述為偽裝成表演藝術的學術推測。這個版本延續了有趣的表演藝術主題,但繼續描繪出我們如何思考軟體建構的連結。我曾在 JAOO 看到 James 發表他的樂高假說演講,而這場演講有助於發展這個主題的許多內容。

我對後現代主義立場的總結是,程式設計已經發展到現代,其基本假設是進步的宏大敘事,並喜歡由較小但相似的結構組成大型結構,以提供統一且連貫的畫面。但是,現代的觀念在許多地方(特別是建築和文學)受到質疑,而後現代主義則是人類發展新階段的想法。這引入了新的主題,特別是缺乏任何宏大敘事和接受雜亂的結構。後現代程式設計觀點認為,這種潛在的潮流影響了我們對程式設計的看法,即使我們沒有意識到。這方面的一個面向是我們如何開始接受雜亂但有用的系統,例如 Perl,或軟體元件在任何實際軟體系統中整合的方式。現代主義觀點討厭這些系統的雜亂,但後現代主義則認為它們是我們世界必要的特徵。

艾倫·凱的圖靈演講是這次會議中備受矚目的亮點。特別引起熱議的是,這將是一場新的演講——笑話說這是凱二十年來的第一場新演講。演講的主題是我們在教授程式設計時,喪失了發現的樂趣。在 60 年代,學生們被教導,沒有人了解你用電腦可以做什麼和不能做什麼,這導致了一連串創意點子的爆發,而這些點子透過展示 Sketchpad 的影片示範,得到了很好的總結。現在,程式設計更像是學習我們已經做過的事情的規則,而不是鼓勵人們突破界限——而作為一個模式作者,我比大多數人都更罪該萬死。

凱的演講大部分都在談論 Squeak 和 Croquet。我聽到幾個微軟員工說,在批評了微軟當天的示範之後,這真是諷刺。我想,差異在於(除了 SqueakCroquet 是免費的)凱使用這個工具來說明他所談論的點子。這些工具是你可以做的事情的範例,而不是藝術的宣言。它們鼓勵你進一步探索,無論是使用它們或與它們競爭。正如 布萊恩·馬里克 所說:「在微軟研究院的世界裡,我們是觀察者、消費者,是某人為我們建構的體驗中的次要參與者。在艾倫·凱的願景中,我們是這個世界的行動者,這個世界積極地要求我們改變它。」我唯一吹毛求疵的地方是,使用微軟作為目標只是因為它們最大——整個產業都反映了這個問題——這就是為什麼凱(軟體界的 奧森·威爾斯)的觀點如此重要。

史提夫·麥康奈開啟了第二天。他的演講重點放在他那本傑出的著作 程式設計完全指南 的第一版和第二版之間的十年差距。布萊恩·福特將其總結為「我同意的一連串事情」。我的總結是,儘管我們周圍的天空通常會出現墜落的景象,但過去十年來,產業在這方面取得了真正的進展。

史提夫後來與我一同參加「軟體開發:數學與科學,還是藝術與工藝?」小組討論。這是 OOPSLA 每年都會探討的軟體開發隱喻議題。這些日子以來,我似乎逐漸形成一個觀點,認為唯一好的軟體開發隱喻就是死掉的隱喻。我照例對軟體工程隱喻的問題大肆抨擊,特別針對製造隱喻猛烈攻擊。

攻擊軟體製造論特別適時,因為每位 OOPSLA 與會者都在他們的禮物袋中獲得一本軟體工廠。我已經注意這本書一陣子了,而我對這個隱喻的本能過敏反應只因「我們需要工業化」的動機而更加強烈。然而,深入探討後,會發現這裡有一些好點子,特別是整合特定領域語言功能的方法。

我錯過了星期四一半的Amazon 網路服務主題演講,這場演講比我預期的好很多。許多人利用 Amazon 的東西做出許多有趣的事情,而你必須向 Amazon 脫帽致敬,因為他們很樂意透過輕鬆且免費提供資料來鼓勵這件事。當然,這麼做並非純粹的利他主義,它也有助於建立 Amazon 的品牌。長久以來,像這樣的文章都會連結到 Amazon,因為它已成為連結書籍參考的實際連結點。我這麼做是因為很簡單,即使我沒有參與他們的推薦人計畫。

我在 OOPSLA 的第二次小組討論是關於離岸開發,我受邀是因為Thoughtworks 在班加羅爾實驗室的經驗。然而,沒有任何問題是關於讓離岸開發運作的機制,而是專注於離岸開發的動機和後果。很明顯的是,對於離岸開發可能導致美國發生什麼事,仍然存在著明顯的恐懼,但我仍然認為這大部分是基於有缺陷的製造隱喻。

我最後一次小組討論是 .NET 與 Java 的對決,但我說過,加拿大人在邊境沒收了槍枝。我使用了問題時間小組討論格式,我發現這有助於讓小組討論更專注於合理的討論。我太專注於主持小組討論,無法記住太多內容,因此我很高興有eweek 報導

有兩件事確實讓我印象深刻,是 Anders Hejlsberg 對他目前思考 C# 的幾個指標。一個是處理物件和關聯式資料庫之間臭名昭著的阻抗不匹配。另一個是朝向類型推論邁進,以結合靜態和動態型別的優點。