微軟新任Visual C++架構師Stanley Lippman訪談
Chris Maunder
Stanley Lippman 在C++語言方面和C++社團里有很長的歷史背景了。他是C++最早的使用者和實現者之一,曾是Bjarne Stroustrup領導的貝爾實驗室基礎項目組的一員,做過Walt Disney特色動畫公司首席軟件工程師,并撰寫了象《C++ Primer》這樣的大量膾炙人口的專著。
Stanley 最近加入微軟,出任Visual C++架構師,我抓住時機做了個隨訪,以了解他眼中的Visual C++的過去、現在和將來以及他對Visual C++的個人目標。首先也是最重要的是,我要為廣大C++開發人員提供一個權威的答案—大多數人都有郁悶已久的疑問: 我們原先掌握的技術在.NET的世界里是否還能派上用場?C++會降級到Win32 開發的次要位置嗎?微軟會實現持續改進C++兼容性的承諾嗎?
記住這一點很重要: Stanely是Visual C++語言架構師,并且他是新任的,因此,象MFC、ATL、WTL等庫和Visual Studio這樣的工具,都不在Stanley的影響和經驗作用范圍之內。因此,這次訪談就集中于絕大多數開發人員都關心的問題: Visual C++的將來究竟如何?
首先,我問Stan是什么吸引他愿為微軟工作。
Stanely的Unix技術背景深厚,同時兼具多種異質平臺開發經歷。顯然,一些平臺要比另外一些易用。談及.NET,Stanley毫不掩飾對其蘊藏理念的欣賞之情?!翱蚣軣o疑是令人驚奇、豐富和有意思的?!盨tanely曾經有在讓即使是線程這樣概念簡單的東西運作起來都很痛苦的平臺上工作的經歷,因此,有那么一個容易理解的基礎類庫,提供諸如容易理解的線程模型之類的功能,并可被你選擇的任何一種.NET語言所訪問,就極為重要。
對于Visual C++如何適應于.NET整體藍圖,起初Stanley只有有限的想法,但進一步研究后,他驚訝地(同時也是高興地)意識到,C++非但未被.NET遺棄,實際上更是一等.NET語言!
那么,對于Visual C++的將來你怎么看?并且,作為新任架構師,你的目標是?
對于將來,Stanley非常明晰?!拔覉孕臯isual C++會有更加繁榮的將來!”。Stanley已經會見過Visual C++開發組,并說他(她)們都有無容置疑的激情和活力。Stanely的目標非常簡單,“Visual C++將是值得選擇的C++實作品”。他的個人目標是讓廣大C++開發者選擇Visual C++并不僅僅是基于工具和平臺方面的考慮,而是因為它是C++標準首屈一指的實作品。
關于編譯器的兼容性
談及C++兼容性,Stanley坦言最新發行版(Visual C++ 7.0)還沒有正式出爐,但實質性工作早已潛在進行,這就意味著更廣泛的兼容性實現指日可待。他將推動這種兼容性的進程,尤其是在模板領域。
盡管Visual C++ 7.0并沒有完全實現Stanley樂于看到的所有特性,但他宣稱這仍是直到目前為止微軟發行的所有版本的C++中兼容性最好的一個版本。它并非百分之百完美,但仍不愧是一個優秀的高度標準兼容的編譯器。凡是仍有爭議的問題,將會完整描述于署題為“Visual C++標準兼容性問題”的VS.NET文獻里。
微軟的目標是提供一個“富有競爭力的兼容的”編譯器—這就意味著它并非百分之百兼容。ANSI/ISO標準提到的幾個特性(如施行于模板類的“export”關鍵字)將不會予以實現,因為至少在眼下,理論上講,微軟認為他們語意不清。然而,微軟正在努力工作以確保Visual C++能夠編譯諸如Boost、Blitz、Loki等絕大多數流行庫,并且完全兼容STL。兼容的重點在于能夠編譯最流行的庫,而不是百分之百的兼容。
微軟C++產品經理Nick Hodapp也補充說,盡管高度兼容無疑是一個非常重要的目標,但微軟絕不會以犧牲生成的代碼質量和強健性為代價來換取極端兼容。盡管如此,最近實驗室測試仍表明:在兼容性測試方面,它仍擊敗了時下幾個流行的編譯器。
什么時候可以看到新版本?
Stanely大笑起來,他說如果由他來決定的話,他每周都會發布一個升級版。但是,和Visual C++本身一樣復雜的諸如質量控制和過程(控制)同樣必須要遵守。最新版將于2002年2月左右發行,并預期同年隨后對編譯器做個升級,但目前尚不能確定是否可能。當然了,他將為早日實現升級而奮戰。Nick hodapp也同意這一點,并說極有可能在明年可以升級到VC7。微軟正在研究發行專注于兼容性的編譯器的最佳機制,以期給明年帶來新氣象。
很多C++開發人員感覺微軟更寵愛象C#這樣的新語言而讓Visual C++靠邊站。
Stanley希望C++將來能比現在在.NET上占有更多的席位。目前,Managed C++最大的好處在于作為一種過渡語言。你可以移植你的本地應用到.NET框架中,或在你的本地應用中使用.NET組件,但這并不是開發完全托管應用的最佳語言選擇。
在這個尚未發行的Visual C++.NET(VC7)中,微軟專注于互操作能力的特征。在所有托管語言中,VC7具有最好的互操作能力,并且具有在同一個映像中兼具托管代碼和非托管代碼的能力。他們還專注于生成MSIL的優化技術—VC7是唯一能夠產生優化的MSIL的編譯器。在將來,微軟將集中于ANSI/ISO的一致性的實現 (使托管/非托管代碼兼容更多的特性),就象專注于賦予Visual C++和C#同等功能(例如WinForms)一樣。Visual C++將被定位于.NET的系統級語言。
模板支持和泛型編程是必需的,并且微軟也非常熱切地準備實現codeDOM支持,同樣還有ASP.NET和WinForms。隨著這些特性的加入,Stanley認為Visual C++必將成為.NET框架下極具威力的程序語言選擇。即使不支持模板,Stanley仍堅持認為Visual C++是唯一能夠提供比C#或VB.NET更多特性的語言。
Stanley慶幸微軟從以公司為導向轉變為更多地以開發人員為中心。他將推動公司對開發者更加公開化,并樂于看到微軟越來越對開發者更加負責。微軟以改革和創新而著稱,但也可能成為置標準和開發者需求于不顧的冒進分子,Stanley將努力保證微軟更多地傾聽開發者社團的聲音,同時確保更高的標準兼容。
諸如C99規范里的新特征
在談到關于是否擴展Visual C++以采納C99規范的新特性時,Stanley聲稱有關標準本身尚有待商榷。在C和C++開發中的分歧已經越來越受到關注,因為C++已經不再是前者的超集了。微軟的目標是實現高度標準兼容(但那是針對C++而不是C),如果C++標準被升級并加入新特性的話,微軟將把它們納入Visual C++的實現中。
微軟會考慮加入的新特性是:
1.已經被使用于代碼中并可被其他編譯器所編譯,或者
2.這些特性已經成為迫切要求并且顯而易見開發者需要它們。
微軟不會僅僅因為那些特性在標準中提到就實現它們,而會因為對開發者有用而實現之。
啟示
在.NET世界里,Visual C++顯然有一個充滿生機和活力的光明前景。在簡單性、趣味性和兼容性方面,Stanley的目標是把這個編譯器做成其他編譯器可以參照的基準。它應該易用、通用、討喜,甚至無論何時,開發者一想到C++就會想到它。對C++兼容性的持續改進以及將來對ASP.NET和WinForms的特性支持,將確保Visual C++必將成為.NET平臺以及本地開發的極具威力的語言。
在談到開發人員是否會轉向C#而不是Managed C++時,Stanley認為會有更多的人從VB轉向C#而不是從C++轉向C#。(Visual)C++是更好的、更具通用性的并且是.NET上唯一優化的編譯器。
-全文完-
原文轉自:http://www.anti-gravitydesign.com