Saturday, November 1st, 2008
其實這是昨天的事了,連續四天早上七點起床,睌上還要整理東西到一兩點,所以昨天老年人我撐不住,補個覺先了哇哈哈
第四天沒有 keynote,展示的廠商也撤了,大部份的人都被論壇吸引走了,不過今年我倒是不想聽論壇,因為根據以往的經驗,論壇打的高空要兩三年才會實現,而且一般而言會修正不少 :p 我跑了幾個 session,CLR 4.0 的那一場很有意思,基本上 CLR 4.0 有三大走向:和現有的程式可以更好地合作,安裝和執行的效能加強,增加許多除錯的支援。這些都是我四年前寫 C# 程式的時候遇到的大麻煩,微軟終於願意面對問題並解決它們了,這也代表它終於收到了阿宅們的怨念啊啊啊啊啊 ~~~
咳,回題,另外還聽了關於 XAML 的一場。XAML 一般給人的印象是拿來寫 UI 用的,但其實它可做的事情很多,目前它已經將觸角延伸到 Workflow Foundation 以及 Open Document Format。小弟在前文中提到,若能整合 C# 的 compiler as service 與 Visual Studio 的 UML 功能,微軟就能弄出一個可做出 web application 的 4GL,而微軟在 PDC 中推出的 OSLO model language,以及擴展後的 XAML 語言,很明顯地這是為了微軟的戰略目標而服務:這不只是可做出 web app 的 4GL,是做出在 Windows Azure 上跑的 [...]
Windows, 技術文章, 會議相關 |
Wednesday, October 29th, 2008
今天跑的 session 多半屬於展示型的,可寫的東西不多,反而是看 recorded session 有心得。我看的是C# 語言的未來,講師當然是 Anders Hejlsberg。我想在這裡聊一些我覺得很重要的東西
Hejlsberg 提到程式語言的趨勢將會是 declarative、dynamic 以及 concurrent,除了 concurrent 之外,其他都是為了因應 web 應用而來的。以 C# 作為 .Net 旗艦語言的身份來講,這樣的演化是非常合理的,但這並不代表這是通則。我個人認為在學校中仍應教授 procedural 語言,但可加入 functional、declarative 與 dynamic 語言的訓練,像我們以前只學 procedural 會變得太過狹隘。
因為硬體在 single core performance 已然遇到瓶頸,所以 concurrent programming 將會是 multi-core 大潮下不得不然的趨勢。但是以目前的技術來看,無法很有效率地處理 heap object concurrency,這對 Java 或 C# 這種有 automatic memory management 的語言是不利的。因此在選用工具的時候,要特別注意這個陷阱,C# 在這方面的開發成本未必低於 C++。
微軟自己應該也嘗到 version hell 的苦果了,因此不但是 CLR,連 [...]
C++/C#, Windows, 技術文章, 會議相關 |
Wednesday, October 29th, 2008
今天的 keynote 主角是 Microsoft Research,一開始有一段影片介紹微軟研究院。主講者是非常有名的大師 Rick Rashid,啥? 沒聽過? 那 mach kernel 聽過吧? NeXT 和 OS X 聽過吧? 他老兄就是 mach kernel 的發明人,至今仍有部份的 source code 仍用於 OS X kernel。
Keynote 主要在介紹微軟研究院以及他們在做些什麼,對於大部份參加 PDC 的師程工來講,算是很少接觸的,因為大部份的參加者都是黑手黨 … 呃 … 是專心做系統很少做研究的阿宅,所以這些東西實際上和 PDC 的聽眾是有點距離的。Keynote 大致介紹了微軟研究院的規模和現況,然後是他們的 sensor network 的展示,presentation 並沒有很好,感覺口味不夠重氣氛沒有 high,場子的冷氣好像太強以至於阿宅們想要閃人去吃早點了,幸好後面的 world telescope、boku 和 surface 的展示夠炫,大部份的阿宅有醒來好好看一下。
我個人對天文學是沒什麼興趣,不過那個 world telescope 實在有夠炫,迷天文的朋友一定要裝一套來玩,非常神奇! Boku 是一套 XBox 上的益智遊戲,是用來教小朋友程式設計觀念的,貌似很好玩的樣子,明年會上市大家就拭目以待吧。Surface 其實不是什麼新觀念,但他們做了些有趣的東西出來,有興趣的同學請自己上網看吧 [...]
技術文章, 會議相關 |
Wednesday, October 29th, 2008
今天聽了三個 session,這個算是比較好的,其他兩個等一下再來聊。Windows 7 的 instrumentation 和 Vista 其實是差不多的,可用的工具有 WPP、ETW 和 Event Log 三個,這個 session 主要是討論 ETW 和 Event Log 的改進 (WPP 多半是 kernel developer 在用,應該是 WinHEC 的參與者較感興趣)。Windows 7 花了很大的力氣去改進 instrumentation 的效能,簡單的說,更快,更小,可以觀察的東西更多。另外,Windows 7 內建 PowerShell 2,可以直接用 PowerShell script 來進行效能的監控,印象中好像看過類似的東西,但 Windows 7 的 PowerShell 內建的功能更完整好用些。
Troubleshooting 則是 Windows 7 想要改進 user experience 的一大步,這東西大家應該不陌生,XP 和 Vista 中的無線網路自動修復的功能就是 troubleshooting 的前身。只不過在 [...]
Windows, 技術文章, 會議相關 |
Wednesday, October 29th, 2008
今天是著名的 PDC keynote marathon,整個早上都是 keynote! 第一段 key note 基本上是 windows 7 的發表會,微軟在會中宣示他們的目標是將 PC、web 以及手機互相整合以構成完整的使用經驗。會場上微軟花了很多時間展示 Windows 7 的功能,基本上新加的功能不多 (事實上有些東西在 Vista SP1 中已經有了),微軟也公開宣布 Windows 7 和 Windows Server 2008 與 Vista SP1 的 kernel 是相同的,主要的改進是讓 Windows 跑的更快,消耗的資源更少,看來微軟也深切認識到 Vista 的主要問題在哪裡 比較有意思的展示亮點是 multi-touch 以及家庭網路的部份,某些程式用 multi-touch 來做的確有趣很多,我在聽 key note 時並不覺得 multi-touch 有什麼神奇的,但後來到外面的展示區玩 surface 的時候,發現俄羅斯方塊用手玩的話,真的好玩耶 …
對了,Windows 7 有一個非常酷的功能,它可以直接掛載 VHD,也可以直接開機進 VHD。所以以後系統回復就有新玩法了哇哈哈 [...]
Windows, 技術文章, 會議相關, 無責任評論 |
Tuesday, October 28th, 2008
現今的主流市場裡,CPU 單一核心的處理速度增加有限,而硬體大廠則致力於多核處理器的開發。多核處理器的強項在於平行處理,但它必須靠軟體的配合才能有效發揮效能。微軟在 Visual Studio 2010 中推出了不少東西來協助師程工們寫作多緒的程式,在 PDC 中自然要拿出來秀一下啦。
微軟建議的 best practice 非常值得借鏡。若要改進程式的執行效率,應該依循以下的步驟:
建立效能調校的目標,找出量測的方法。儘量使用真實的資料和直實的環境,平行處理並不是萬靈丹,真實世界中許多其他的因素才是效能的殺手 (如 I/O、memory latency)
量測現有的效能,找出執行熱點
想辦法調校現有的程式
若調校無效,找看看是否有平行處理的機會: CPU intensive,或是可以讓 UI 反應變快增加 perceptual performance
若可平行處理,則利用程式技巧去最佳化熱點
Visual Studio 的目標是想辦法讓寫作平行處理的程式變得容易一些,它提供許多基礎設施和函式庫 (如 Concurrent runtime, Parallel Pattern Library, PLINQ 等等),也提供許多 profiling 和 debugging 的工具 (我個人的偏見是這些工具和 VTune 好像!)。因此,師程工就可以集中精力在設計 synchronization 上,而不必到處尋尋覓覓好用的程式庫,或是花許多資源開發自己的程式庫。
微軟的 concurrent runtime 和 PPL 在某種程度上和 OpenMP 有重疊性,不過微軟上從 VP 下到師程工一律口風緊閉,不願意討論和 OpenMP 的未來有關的任何問題。此外,PPL 大量利用 C++0x 的 lambda expression,並刻意地將所有的東西做成 [...]
C++/C#, 技術文章, 會議相關 |
Tuesday, October 28th, 2008
微軟打算在 .Net CLR 4.0 中改進它的型別系統 (type system)。這個改進的主要動機有兩個,一是現行的 .Net 程式若是用到了 interop assembly,在安裝的時候,這些 interop assembly 的體積通常要比你寫的程式大很多。比方說,在程式中用到了 Excel 2007 interop 的話,就必須加裝 6.7MB 的 Office 2007 PIA redist,除了安裝用的 package 變大之外,程式執行時浪費的 working set 也變多 (你總不會用到 interop assembly 中的每一樣功能吧?)。此外,對於 managed to managed assembly,目前的做法是進行非常嚴格的版本檢查,若版本不合就直接踢掉。這雖然解決了 DLL hell 的問題,但卻造成更多問題: multi-target complexity 以及 deployment complexity。
multi-target 這個問題被唾棄很久,連微軟自己的師程工也很不爽,因此 CLR 4.0 就推出兩個重大的改進: type embedding 與 type equivalance。Type embedding [...]
C++/C#, 技術文章, 會議相關 |