5 Questions With Herb Sutter

原创 2002年04月17日 11:04:00

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.

Justice or Forgiveness?

Both. True justice grants forgiveness where merited, and judgment where not.

Beauty or Truth?

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.

Lennon or McCartney?

That's a tough choice. Lennon by a nose.

Regular or Diet?

Regular, always.

Lawyers or Politicians?

Hmm. I think the most appropriate answer about, and from, both of those would be: "No comment!"


转自:http://www.cnblogs.com/wuerping/articles/116414.html any是个很短小的类, 代码加上空行和说明也就187行,但很有意思。它的主要作用是定义...
  • zhangxueyang1
  • zhangxueyang1
  • 2017年01月07日 21:36
  • 81

16个behavior question 的面试官解析及tips(上)

除了技术面试,behavior interview也是程序员拿到offer必经的一道关口。九章算法总结了16个常见的behavior question,并解析面试官想通过这些问题考察的内容,指出需要避...
  • JiuZhang_ninechapter
  • JiuZhang_ninechapter
  • 2015年05月26日 13:38
  • 2764


java缓存框架 说说我用过的: 1.oscache 2.whirlycache 比较: 1.应用场景:   缓存应不应该用硬盘。   缓存的存取策略。 INFO: Size: 176; Ques...
  • foxox
  • foxox
  • 2013年06月28日 11:50
  • 376

RAC 和 Oracle Clusterware 最佳实践和初学者指南(平台无关部分) (文档 ID 1526083.1)

RAC 和 Oracle Clusterware 最佳实践和初学者指南(平台无关部分) (文档 ID 1526083.1) 转到底部 ...
  • xxjj2003
  • xxjj2003
  • 2016年03月04日 21:43
  • 440

Android Questions (问题集锦)

Android 开发过程中,解决问题集锦~ Android Framework Questions Android External Storage Questions...
  • CSDNno
  • CSDNno
  • 2017年05月31日 17:27
  • 368

Behavior question如何准备以及技术复习重点

下面将分Behavior Question和Technical Question分别介绍个人的面试准备技巧:       I.         Behavior Question 这类问题...
  • u012204343
  • u012204343
  • 2014年04月20日 09:40
  • 1258


  • duzuokanyunqi1
  • duzuokanyunqi1
  • 2015年05月16日 19:47
  • 9215


JAVA学习笔记二之(5)运算符 一、运算符的分类     1、算数运算符    2、赋值运算符    3、比较运算符    4、逻辑运算符    5、位运算符    6、三元运算符二、算数运算符  ...
  • Celelong
  • Celelong
  • 2016年05月23日 13:38
  • 804

Lepus (天兔) 中的数据库中的表 lepus_table.sql

/* Navicat MySQL Data Transfer Source Server         : Source Server V...
  • xfg0218
  • xfg0218
  • 2016年11月17日 22:36
  • 705

Java 5*5数组的三种排列例子

  • daobin543
  • daobin543
  • 2017年05月28日 13:44
  • 252
您举报文章:5 Questions With Herb Sutter