5 Questions With Herb Sutter

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!"

  • 0
  • 0
  • 0
  • 一键三连
  • 扫一扫,分享海报

<p style="color:#666666;"> <span style="font-size:14px;">本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">平时不明白的知识点,放在项目里去理解就恍然大悟了。</span> </p> <p style="color:#666666;"> <span></span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>一、融汇贯通</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>二、贴近实战</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>三、课程亮点</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>适合人群:</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">2、有Django基础,但是想学习企业级项目实战的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">3、有MySQL数据库基础的朋友</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><img alt="" src="https://img-bss.csdnimg.cn/202009070752197496.png" /><br /> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
钱包余额 0