You've been a pretty independent C++ guy for the last few years. Now you're working with Microsoft too. What's up with that, and what are you doing there? Are you going to switch to writing about Windows?
I'm going to keep doing all the things I'm already doing — working on the C++ standards committee, writing Addison-Wesley books (two are out, two more in the pipeline), writing my four C++ columns, helping to edit C/C++ Users Journal, moderating the comp.lang.c++.moderated newsgroup, speaking at C++ conferences, all that. I'll also be at Microsoft as their liaison to the C++ community, making sure that stuff the community needs gets into Visual C++. A big part of that is conformance to the C++ standard; Microsoft wants VC++ to be the most conformant compiler. There's a bit of a way to go, but the community will see some pretty significant progress this year.
Oh, and Windows...nothing new there. I've been doing DOS, OS/2, and Windows development using Microsoft tools since Microsoft C version 4. That makes Visual Studio .NET, which includes Visual C++ version 7, my ninth major generation with that product. Of course, it's my first generation on the "inside," so to speak. Till now I've been a developer using the tools, and/or a consultant whose clients often use them. Yet I've always written for the global C++ community using Standard C++ on any platform, and that's my continued priority. No change there.
Who in your field do you most admire, and why?
It's hard to pick out a particular person when so many have made such significant contributions.
In my field, Bjarne Stroustrup of course comes to mind as a language designer and implementer par excellence, having the good judgment to hit a useful real-world balance between purity (a language you'd design in a vacuum) and pragmatism (a language you'd design to be compatible with C, no easy task and a source of many compromises, but something that more than anything else made C++ the dominant language it is).
Donald Knuth just dives into any field that interests him, learns it better than just about anyone else on the planet, documents the whole thing, and moves on to the next thing. His depth in so many areas is just amazing, stunning diversity when even just his classic The Art of Computer Programming series alone would have been a lifework any computer scientist would be proud of.
Edison Design Group (EDG), currently comprising John Spicer, Steve Adamczyk, and David Vandevoorde, is a simply wonderful example of what a three-man company who don't even share office space can accomplish, as to date they've developed the most-compliant commercial C++ compiler that money can buy. Microsoft intends to catch up and compete, naturally, don't get me wrong, but these guys are just amazing. When I try some code on the EDG-based compilers and what it does disagrees in some detail with my reading of what the standard says it should do, almost always it's my reading of the standard that's wrong.
There are many more solid people like that, too many to give complete credit to here.
What new possibilities in your field are most exciting to you?
The next generation of the C++ standard (aka "C++0x") will be a big deal, both important and exciting. We're working on that now.
Another is managed environments like .NET, sort of a JVM done right but much more so. I was pretty skeptical of .NET's "flavor of the year" flavor when I first heard of it. Now, the more I see, the more I like. It's really cool. I hope it won't remain only a Windows thing; several groups are already working to implement parts of it on other operating systems. Now that I'm with Microsoft in addition to my other work, some people are going to think the attraction to .NET is because of that, but my interest in .NET's possibilities predates my Microsoft involvement and in fact was one of the things that intrigued me about the possibility of going to spend some time there.
What advice would you give to someone starting out in your field today?
Learn everything you can. Don't get stuck knowing one or just a few things. That's the best way to grow in your profession, by building not just depth but also breadth of experience, and by keeping your mind open and sharp.
One reason we have "language wars" is that a lot of people seem to be happy learning just a few languages, or even just one. (The other main reason is nontechnical — vendors' marketing budgets.) Then they defend it to the death, because it's all they know. They may even imagine that it's all they need, or will ever need. If so, they haven't got the first clue what they're missing, and choosing willful ignorance like that just is not a smart career choice in this field. For one thing, the market will change sooner or later and it's rare that someone can rely on just one or a few languages for his whole career. For another, even if we were to imagine that were possible for the sake of argument, a one-trick pony developer is diminished even within their chosen language because they only know one narrow way to think — exposure to many languages means exposure to many ways of thinking, exposure to many libraries and tools means exposure to new approaches and new methods, and all of that is essential to being a good developer in any chosen language you happen to be using this week. There's no substitute for breadth of learning, in addition to depth.
Now, these days I'm a C++ guy, so some people could get the idea that I'm narrow and deep and not practicing what I just preached above. But that's not the way it is. It's true that I do primarily C++ today, but I've used dozens of languages over the course of my education and career. I certainly wouldn't know how to use C++'s features and modern libraries nearly as well without exposure to alternative ways of doing things — many of which can be adapted to work in C++.
Anyone who thinks that programming languages all look pretty much alike should try Prolog, APL, Lisp, and Perl. That should be enough of a start to jolt them out of "but everything looks sorta like C or Visual Basic" mode. It'll also twist their brains inside out. This is a Good Thing.
So learn everything you can. Chances are it will come in handy directly. And those things that don't eventually come in handy directly will still benefit you because they've helped to keep your mind open and sharp.
Which of these do you prefer or lean towards:
Creativity or Persistence?
Creativity is wonderful, and you need persistence to get there. What was that about 99% perspiration, and 1% inspiration...? It's like when people talk about luck, and most of the time it's not chance at all but people have set themselves up to be "lucky," to be in the right position so that when opportunities come up they can take advantage of them. They put themselves in the right place, not knowing quite what will happen, but ready for it when it does. They make their own luck. It's the same with so-called "overnight successes" that really take years of work to develop and then just into get the spotlight overnight. And it's the same with creativity and persistence — I don't know any author or inventor who just had a Eureka! moment without first spending months and years in front of a keyboard or in a lab.
Both. True justice grants forgiveness where merited, and judgment where not.
Truth. Beauty that is not true is a dangerous sham.
The Jetsons or the Flintstones?
"Aaaw, I dunno, Fred..." Definitely the Flintstones. Barney's a cool guy.
That's a tough choice. Lennon by a nose.
Hmm. I think the most appropriate answer about, and from, both of those would be: "No comment!"
分享到:
相关推荐
Herb Sutter是C++界的一位重量级人物,以其深入的编程理论和对标准委员会的贡献而闻名。"Herb Sutter - Conversation经典对话系列"是一份珍贵的资源,汇集了他与同行、读者之间的精彩讨论,涵盖了C++语言的各个方面...
《Exceptional C++》是Herb Sutter撰写的一本经典编程书籍,主要针对C++编程语言的高级特性和最佳实践。这本书旨在帮助开发者理解和利用C++的复杂性,提升代码的质量和效率,同时避免常见的陷阱和错误。以下是该书...
[C++编程规范101条规则、准则最佳实践].Herb.Sutter.Andrei.Alexandrescu]
《Exceptional C++》是美国著名C++专家Herb Sutter撰写的一本经典书籍,它深入探讨了C++编程中的高级主题和最佳实践。这本书旨在帮助程序员写出更高效、更安全、更易于维护的C++代码,提升他们的编程技能。在阅读这...
C++编程规范.pdf 01 共2 herb sutter
### Herb Sutter写的C++ Future提案详解 #### I. 概述 Herb Sutter是一位著名的C++专家,他撰写了这份关于改进`std::future<T>`及其相关API的提案(N3634),旨在进一步增强C++在异步编程方面的能力。此文档取代了...
C++编程规范.part2.rar 共2 herb sutter
Exceptional C++ 英文版 文字版 PDF格式 无水印 完整版 47 Engineering Puzzles, Programming Problems, and Solutions Herb Sutter 内容简介 · · · · · · 《Exceptional C++:47个C++工程难题、编程问题和解决...
讲解开发团队应遵守的101条编程规则、准则以及最佳实践。Herb Sutter 和Andrei Alexandrescu 著,刘基诚 译。
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 ...
根据提供的信息,我们可以推断出这是一篇关于高级C++编程技术的文章,特别是涉及Herb Sutter的作品《Exceptional C++》的相关内容。虽然提供的“部分内容”无法直接解读,但结合标题、描述以及标签,我们可以围绕...
《Exceptional C++》是著名软件工程师Herb Sutter撰写的一部关于C++编程的经典著作。这本书主要关注C++中的高级特性和最佳实践,旨在帮助程序员编写出更高效、更安全、更易于维护的代码。Herb Sutter以其深入浅出的...
《Herb-Exceptional C++ Style》是关于C++编程风格的著作,作者Herb Sutter是C++领域内的专家,曾参与制定C++标准。本书深入探讨了C++编程中的优秀实践和风格,为程序员提供了大量实用的编程指导。 首先,C++是一种...
Herb Sutter Andrei Alexandrescu著 刘基诚译
About the Authors Jim Hyslop ...Herb Sutter is chief technology officer of PeerDirect Inc. and secretary of the ISO/ANSI C++ standards committee. He can be reached at hsutter@peerdirect.com.
在本书中,著名的C++大师Herb Sutter给出了40个编程问题。其目的是为了使读者不仅“知其然”,更要“知其所以然”,并帮助读者在软件开发中进行正确的决策。本书是围绕实际问题及其解决方案展开论述的,对一些至关...
Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions More Exceptional C++ By Herb Sutter
改善C ++ 11和C ++ 14使用的42种特定方法” Herb Sutter:“杰出的C ++:47个工程难题,编程问题和解决方案” Herb Sutter:“解决C ++中的复杂问题” Herb Sutter:“新的C ++挑战” 。 关于语言渐近和抽象级别...
两位知名的C++专家(Herb Sutter & Andrei Alexandrescu)将全球C++界20年集体智慧与经验整理凝结成 一套编译规范,这些规范可以作为每一个开发团队制定实际开发 规范的基础,更是每一位C++程序员应该遵循的形式准则...
More Effective C++, by Scott Meyers, AW 1996 3. Exceptional C++, by Herb Sutter, AW 1999