`
varsoft
  • 浏览: 2543925 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

C++大师Herb Sutter加盟微软,面对Codeproject侃侃而谈。

阅读更多
Herb Sutter is secretary of the ISO/ANSI C++ standards committee, is an accomplished author and C++ expert, and has just joined Microsoft in the Developer and Platform Evangelism Division. Herb will be primarily engaged in liaising with the C++ developer community, and will also be working in product planning and design of Visual C++ .NET.

Since Herb is new to the Microsoft fold I grabbed a few minutes (well, hours) of his time so we could get aquainted with who he is, what he does, and what, exactly, is happening with our beloved Visual C++.

So Herb - can you give us a quick rundown of your background and what you were doing before signing on with Microsoft.

Well, I've been doing mainly a lot of C++ writing, teaching, and consulting, and the C++ community is very important to me. By the way, I'm going to continue doing those things; that community contact is why Microsoft saw a good fit to hire me, and they want me to keep doing it.

So what is that today? Well, right now I'm secretary of the ISO/ANSI C++ standards committee, and I've participated actively in that committee since 1997. I'm also writing four columns about C++, mostly in C/C++ Users Journal where I'm also half of the magazine's editorial board, reviewing and editing other authors' articles and recommending what should be published and what needs work. I've got two C++ books out with Addison Wesley, Exceptional C++ and More Exceptional C++, and I'm working on two more, one with Andrei Alexandrescu. Everything I write, except for the final versions of material in the books, gets posted free for public reading on my website, www.gotw.ca. I've also been a moderator of the primary Internet newsgroup for the C++ language, comp.lang.c++.moderated, since its inception in 1995.

Again, all of that's going to continue. What's new is that I'm now also going to be Microsoft's liaison with the C++ community on all platforms, not just Windows, to keep the Visual Studio .NET team in touch with the community and make sure that what the community needs gets into the product.

What made you decide to join Microsoft? Did they have to convince you or did you pursue Microsoft?

I'll admit that it would have been a lot less tempting two years ago, back when Microsoft didn't seem all that interested in Standard C++. But in the past 12 to 18 months I've noticed a real change in priorities at Microsoft, as they've resumed joining us at the committee meetings and as they've started contributing to the community and started making noticeable progress with their product's standards conformance. I discovered, to our mutual pleasure, that now not only is conformance to the existing 1998 C++ standard as important to them as it is to me, but that they want to keep tracking the next-generation C++ standard whose development is just underway.

What will be your role at Microsoft?

My job is to be Microsoft's liaison with the C++ community. "The community" includes the standards committee, C++ conferences, and developers on all platforms. After all, Microsoft is naturally interested in making their tools appealing to everyone, even those who aren't using them yet, and conformance is an important part of making migration possible. There are many reasons, plus my own pre-existing personal ones, to be committed to fulfilling today's C++ standard and assisting the future development of the standard. A rising tide floats all boats, and standards conformance is good for everyone.

I hope to make a noticeable mark in the product. So now I need to give you a heads-up about something that I want to be very clear about, and namely "why" and "when" I will be pushing for language extensions in Microsoft's C++ even before the product is fully compliant to today's standard. Let me put it in perspective and then lay out my personal agenda:

Microsoft intends to conform 100% to Standard C++ as soon as possible. Period, no question. It won't all be in the next release, although many conformance improvements will be. Admittedly there's some catching up to do and it can't all happen in a week or a month or a dot release. But it will happen, and as soon as possible.

Having said that, let me tell you the two groups of conformance-related features that are the most important to me, because they're what the C++ community consistently tell me they need: My one "must-have" feature group consists of everything needed to conform 100% to current Standard C++ (a.ka. C++98). My other "must-have" feature group is key extensions that we as a community know perfectly well we need, but which are missing in C++98, usually due to just oversights or mistakes - yes, we standards guys are just humans, and we sometimes miss stuff too. Some of these are just obvious omissions that will certainly appear in some form in the next version of the standard (a.k.a. C++0x).

Here's the punchline: To me, those are not two lists, where you do everything on the first list (C++98 conformance) before you start working on the second (key necessary extensions). To me, those things all make up one list, that then gets prioritized so we can put as many of the most important things as possible into each release. That means that you can bet I will be pushing hard to get some key extensions beyond C++98 into the product even before we finish all the things to conform to C++98, because frankly some of the extensions are more important to the Standard C++ community than some missing C++98 features. We're definitely going to do all of C++98, no question. But if I have my way we're going to do it in the order that will benefit the global C++ community the most quickly - that's my assigned vested interest to promote within Microsoft, that we deliver what the global community needs as quickly as we can.

Let me give you a concrete example: Visual Studio .NET (Visual C++ version 7.0) doesn't yet have support for the "export" keyword which is in the C++98 standard, nor does it have typedef templates which are not in the C++98 standard. (As I'll point out in a second, nobody else has either of those features yet, either.) I will be pounding on the table during every design meeting you'll find me in to put typedef templates into the product before support for "export" simply because typedef templates are a lot more important. Even though typedef templates aren't in C++98, that's just a bad oversight; I don't know of an expert in the world who doesn't agree that typedef templates are obviously needed, and needed more than "export". On the other hand, as of our interview today, there's not a single released C++ compiler in the world that supports "export" (Microsoft is not alone here!) and the community is hardly clamoring for it. Edison Design Group and their licensee Comeau have an "export"-capable compiler in beta and will be shipping sometime soon, which I think is great, but if you sit me down at a table and put "export" beside typedef templates in front of me, I'll choose typedef templates every time, even though they're not officially in C++98, because key community libraries like Boost and Loki would really benefit from them; hey, the standard itself had to do that funky alloator::rebind hack just because we didn't have typedef templates, and the standard even says so! Here's a direct quote: "The template class member rebind … is effectively a template typedef"! That's just way more important. We'll do "export" too, of course, but first things first.

Don't get me wrong, I'm certainly not pushing for a lot of extensions, and certainly not anything where there isn't already a clear need and some community agreement. And when I propose those features within Microsoft, it will be after I've already talked with the world's top experts about how important they are and how they should be specified; I hate half-baked homebrew misfeatures and that's certainly not what I'm after here. I'm pushing for a handful of carefully chosen and carefully implemented extensions that the community is clamoring for, and which are not proprietary but rather the opposite: things we already know are certain or likely to come in C++0x and which we hope all compiler vendors will provide too. A standards committee can sometimes be inventive, but mostly it's supposed to standardize existing practice; I want to help Microsoft help the standard by providing just that "existing practice in the field" for these key upcoming features. Indeed, by trying to carefully wield Microsoft's product as a leader in this way I personally hope to help move the whole community forward on all compilers and platforms, as other products are encouraged to implement them too, which will benefit everybody no matter whose tools they're using.

Bluntly, if I have my way, then people are going to ask, "how come Microsoft put Extension X into the next version of VS.NET, when they haven't even finished conforming to C++98 yet?", and I hope they ask that because if they do then I've done my job. No worries, full C++98 compliance with "export" and the kitchen sink is coming on apace, and will get done, no question. But if I have my way we'll do that whole unified wish-list of C++98 and pre-C++0x standard features in the order that best serves the community, because that community priority is what I'm being paid to push inside the company.

As 'Community Program Manager' will you be involved directly with the community? In what way? Will you be providing more of a direct link for the community and Microsoft itself? Can I pass all the 'how do I do X in C++' questions I get from readers on to you? Please?

Yes, lots, yes, no oh please no, and not even if you say pretty please, respectively. Ahem. Seriously, though some questions are okay, but at least get people to read the C++ FAQ (www.parashift.com/c++-faq-lite) and my website (www.gotw.ca) first to see if there's already a well-known answer.

It's my job to know what the community wants. That's why I'm going to continue speaking and listening to attendees at conferences, in my private independent consulting, on the public newsgroups, in email conversations with readers of my columns and books, over coffees and dinners at standards meetings with the top gurus and with the other vendors, and everything else I'm already doing.

C++ developers are still not getting as much love from Microsoft as VB.NET or C# developers. Is this something you hope to change? How?

That may have been more true until recently. I've seen some changes already in the past six months, and I'm looking forward to seeing more. There's no question that Microsoft is investing in C++, internally and externally. Look for further Microsoft community participation by contributing to platform-neutral community libraries and in other ways.

What do you see as C++'s role in a .NET world?

C++ is still by far the most powerful language in the .NET universe, and the one that more commercial Windows apps are written in. That's not likely to change anytime soon.

What do you see as the future of C++ overall?

C++ continues to be relevant, dominant, and in widespread and still-growing use. The C++ standard and standardization process also continues to be relevant - committee membership and participation has increased since the first standard was published in 1998, and lately we've had more countries represented at our ISO meetings than ever before. Usually the opposite happens when a standard is completed and the committee goes into maintenance mode for a while - companies stop sending people, because they all have their own work to do after all. But not here: even while we were in maintenance mode for several years, ISO/ANSI membership has pretty much never been stronger, and all the vendors, including Microsoft, are there together actively working on the next-generation C++0x standard whose work is now getting underway.

Managed extensions for C++ have received a lukewarm reception from many developers. What do you feel Microsoft can do to make MC++ more approachable for the typical C++ developer?

For one thing, MC++ has to support more of Standard C++. There is (how can I say this politely) room for more overlap. There, I think that was subtle enough. The team is hard at work on these kinds of issues. I think that .NET is good for C++.

Do you really believe that .NET is good for C++? Why?

I do. I'm hopeful that it can contribute something valuable, perhaps even beyond Windows-based platforms.

Here's a for-instance: Within the standards committee and the standards process, I've seen several key recurring questions and wishes since C++98 was passed. Three of them are: a) "what about standardizing thread support?"; b) "what about compiling C++ to the JVM?"; and c) "what about a portable GUI library, something basic that will help with teaching?" I think it's very interesting that .NET provides all three, and more, and that it makes those things available to C++ programs. In particular, well before I had any idea I would come to Microsoft, I'd thought that .NET was "a better JVM" (plus a lot more of course). If we could get better convergence between "Managed C++" and "Standard C++," which is something that the team as a whole and Stan Lippman in particular are working on right now, this whole thing could get really interesting and there might be some useful standard technology to offer here someday if the C++ committee wants any parts of it. I'm saying that with my "committee-member" hat on, not my "Microsoftie" hat on. After all, this very possibility is one of the cool ideas that hooked me into wanting to participate with Microsoft and see what I could be part of contributing to the committee and the community, because like everyone else I've been looking for answers to those same three questions, and here's a technology that's already being standardized (in ECMA and soon ISO), and look, it works with C++! Well, with a lot of C++, anyway. We'll have to see how it goes, though. I don't think it's any shape yet to submit it; we'd pretty much have to be able to run nearly all of Standard C++ on .NET just to have a proof-of-concept starting point that the committee would be interested in. It's a goal. We want to contribute where we can.

But C++ developers on all platforms wants these kinds of things - threads, running on a VM, a managed GUI library. Windows-based developers have a lot of it today, and I know that the Visual Studio .NET team are working hard to make it better so that you don't have to give up so much of Standard C++ to get those benefits.

Why should C++ developers be excited about what Microsoft is doing for C++?

Besides the .NET stuff I just talked about, which I think has potential to help C++ as a language, Microsoft is also interested in contributing more, and more often, to the C++ community. Part of my job is to make sure that stuff that Microsoft has been developing in Research can start more regularly getting submitted openly to community libraries like Boost, so that developers on all platforms can benefit from them. We're working hard on that. Pardon me, I've got to go beat on some lawyers' heads about that; back in a sec.

How large is the C++ community?

Depends how you count, but the best numbers I keep seeing put the global developer community at something like 9.5 million people, and those using C++ at about 3 million of that. That's well ahead of Java in nearly all studies I've seen, by the way, usually by a factor of 1.5-to-1 or 2-to-1. And showing C++ still modestly growing, also by the way. All without aggressive marketing, yet again by the way. The reports of C++'s demise have been, well, "exaggerated."

What sets the C++ community apart from other types of developers?

C++ developers need power and know how to use it. I've always said you should use the best language for the job, and I've used dozens of languages professionally. Depending on how you count languages, I've probably used a dozen professionally in the past year. People who want to write efficient, tight, fast code often tend to choose C++ because it lets you get the job done with powerful code but without sacrificing efficiency.

People who want mature, stable compilers and tools often tend to use C++ because it's been around a while and the tools and libraries are plentiful and solid. Commercial client-side application development with more than a few screens, most kinds of server-based software, and most kinds of libraries are all done more often with C++ than with other languages, according to the best numbers I've seen and according to my own experience as a developer and as a consultant who shows up at other developers' shops.

How will C++ evolve going forward? What is Microsoft's role in determining this?

The coming C++0x standard will heavily emphasize additions to the library, not to the core language. Expect to see a few well-chosen core language extensions, such as typedef templates, but not any huge fundamental changes like templates and exceptions were in their day. In the standard library, on the other hand, do expect many extensions, from obvious low-hanging fruit like hash-based containers and threading support to possibly things as big as a VM model or a basic GUI library, and lots of useful stuff in between. To get some idea of what kinds of things you might see, check out Boost (www.boost.org), although I hasten to add that we on the committee are looking for input from the whole community, don't think Boost has some inside slam-dunk track.

Along with the other C++ vendors and experts, Microsoft will continue as an active participant in the ISO/ANSI C++ committee, contributing its people's expertise to help formulate and refine proposals that will improve the coming C++0x standard. It also wants to contribute technologies or research of its own, if the committee thinks that those facilities will help the C++ language's evolution. Microsoft is now committed to supporting the community and being an active participant and contributor.

What's currently happening with C++? What's the latest gossip?

C++0x, man! It's a whole new standard out there! Or, at least, it will be once we're done. Give us a few years, it's just getting underway now. At the most recent standards meeting, held in October 2001, we already started considering the first batch of potential additions to the C++ standard library. There were seven proposals, from threading support to hash-based containers, all of them fairly self-contained and smallish ones to start with (well, okay, the threading one isn't that small). There's a lot more exciting stuff on the way; that's just the beginning. I've recently started writing a new column for C/C++ Users Journal called "The New C++" that will cover these topics, and in fact already has detailed many of the above - see the links on my Publications page, www.gotw.ca/publications, that are tagged "TNC++" (the acronymized column name).

No matter how many statements are made about C++'s rosy future, pessimists continually use these same statements to conclude that C++ is dead. How would you respond to the pessimists?

I recently read an interview with some C++ guy, and when he was asked about the size of the C++ community, he said something like: 'Depends how you count, but the best numbers I keep seeing put the global developer community at something like 8.5 million people, and those using C++ at about 3 million of that. That's well ahead of Java in nearly all studies I've seen, by the way, usually by a factor of 1.5-to-1 or 2-to-1. And showing C++ still modestly growing, also by the way. All without aggressive marketing, yet again by the way. The reports of C++'s demise have been, well, "exaggerated." '

I think he's got a point.

<!-- Article Ends -->
分享到:
评论

相关推荐

    Exceptional C++中文版((美) Herb Sutter)

    《Exceptional C++》是美国著名C++专家Herb Sutter撰写的一本经典书籍,它深入探讨了C++编程中的高级主题和最佳实践。这本书旨在帮助程序员写出更高效、更安全、更易于维护的C++代码,提升他们的编程技能。在阅读这...

    Exceptional C++ 中文繁体字版 Herb Sutter

    《Exceptional C++》是Herb Sutter撰写的一本经典编程书籍,主要针对C++编程语言的高级特性和最佳实践。这本书旨在帮助开发者理解和利用C++的复杂性,提升代码的质量和效率,同时避免常见的陷阱和错误。以下是该书...

    Herb Sutter - Conversation 经典对话系列

    Herb Sutter是C++界的一位重量级人物,以其深入的编程理论和对标准委员会的贡献而闻名。"Herb Sutter - Conversation经典对话系列"是一份珍贵的资源,汇集了他与同行、读者之间的精彩讨论,涵盖了C++语言的各个方面...

    [C++编程规范101条规则、准则最佳实践].Herb.Sutter.Andrei.Alexandrescu]

    [C++编程规范101条规则、准则最佳实践].Herb.Sutter.Andrei.Alexandrescu]

    Herb Sutter写的C++ future提案

    ### Herb Sutter写的C++ Future提案详解 #### I. 概述 Herb Sutter是一位著名的C++专家,他撰写了这份关于改进`std::future&lt;T&gt;`及其相关API的提案(N3634),旨在进一步增强C++在异步编程方面的能力。此文档取代了...

    C++编程规范.pdf 01 共2 herb sutter

    C++编程规范.pdf 01 共2 herb sutter

    C++编程规范.part2.rar 共2 herb sutter

    C++编程规范.part2.rar 共2 herb sutter

    Exceptional C++ 英文版 文字版 PDF格式 无水印 完整版 Herb Sutter

    Exceptional C++ 英文版 文字版 PDF格式 无水印 完整版 47 Engineering Puzzles, Programming Problems, and Solutions Herb Sutter 内容简介 · · · · · · 《Exceptional C++:47个C++工程难题、编程问题和解决...

    Exceptional C++ Style中文版

    在本书中,著名的C++大师Herb Sutter给出了40个编程问题。其目的是为了使读者不仅“知其然”,更要“知其所以然”,并帮助读者在软件开发中进行正确的决策。本书是围绕实际问题及其解决方案展开论述的,对一些至关...

    Exceptional C++ - 47 Engineering Puzzles, Programming Problems, and Solutions

    exceptional c++ style 是C++大师Herb Sutter通过40个编程问题,使读者不仅“知其然”,更要“知其所以然”,帮助程序设计人员在软件中寻找恰到好处的折中,即讨论如何在开销与功能之间、优雅与可维护性之间、灵活性...

    C++编程规范

    讲解开发团队应遵守的101条编程规则、准则以及最佳实践。Herb Sutter 和Andrei Alexandrescu 著,刘基诚 译。

    Effective Concurrency

    Herb Sutter is a leading authority on software development. He is the best selling author of Exceptional C++ as well as three other books and hundreds of technical papers and articles, including the ...

    Herb-ExceptionalC++

    根据提供的信息,我们可以推断出这是一篇关于高级C++编程技术的文章,特别是涉及Herb Sutter的作品《Exceptional C++》的相关内容。虽然提供的“部分内容”无法直接解读,但结合标题、描述以及标签,我们可以围绕...

    C++名家对话和C++完整学习路线 C++ 学习 C++ 大师

    而Herb Sutter,C++标准委员会的成员,可能会就C++11到C++20的新功能提供实用的指导。这些对话不仅是技术知识的传播,也是对编程思维和解决问题策略的启发。 其次,"完整的学习C++的读书路线图.txt"文件则为C++学习...

    计算机科学经典著作Exceptional C++

    Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions More Exceptional C++ By Herb Sutter

    Exceptional C++ 中英文版

    《Exceptional C++》是著名软件工程师Herb Sutter撰写的一部关于C++编程的经典著作。这本书主要关注C++中的高级特性和最佳实践,旨在帮助程序员编写出更高效、更安全、更易于维护的代码。Herb Sutter以其深入浅出的...

    The Free Lunch Is Over(附评论)

    微软著名的C++大师Herb Sutter在2005年初的时候曾经写过一篇重量级的文章:”The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software“,预言OO之后软件开发将要面临的又一次重大变革-并行计算...

    《C++ Coding Standards》Part1 > 101 Rules,Guidelines,and Best Practices

    两位知名的C++专家(Herb Sutter & Andrei Alexandrescu)将全球C++界20年集体智慧与经验整理凝结成 一套编译规范,这些规范可以作为每一个开发团队制定实际开发 规范的基础,更是每一位C++程序员应该遵循的形式准则...

    C++相关的书籍

    Herb Sutter的这本书深入讨论了C++中的异常处理和错误处理策略,适合想要提升代码质量的开发者。 8. 《C++编程规范》 - Herb Sutter,Andrei Alexandrescu(作者),刘基诚(译者) 这是一本关于C++编码风格和最佳...

Global site tag (gtag.js) - Google Analytics