Craig Symonds: Lead PM on Visual C++, 20 years at Microsoft
Mogen Agsen: C++ Team and Experience Team, 20 years at Microsoft
In 2011, let’s talk about C++.
I think we are going to a renaissance. It is a language that was important. There is a resurgence of the native developers. We have carefully selected our job. The conditions are starting to happened. Things are happening in that space, passion. We are in a reengagement, inside and outside Microsoft. Native developers have not gone away. There are busy people. Microsoft is making a re-engagement with the community. C++ is used in line of business, in mobile, in servers, game development, everywhere. We think the community is smaller over the years but it grows. It is always bigger the way we think.
Even inside Microsoft, managed code was the next big thing. But, all the major products, Windows, Office, SQL Server is made using C and C++. C++ is a very low-level and high level language. Some guys told C++ was unsecure, unsafe. C++ gives full power. Microsoft used to do C with classes and now, modern C++. C++ is done in such a way that power and performance is provided by default in C++. C++ can do the same fast things C developers used to do, but you can use safe types and OO programming. It gives the performance – look at the generated assembly code. It is amazing. COM programming was pointer and vtable way to do this. In modern COM, it is built with smart pointers. ATL introduced that, it is bind using smart pointers and it is safe. Compared to .NET, C++ is made for super performance and it Is also very high level. We focus on values and others languages love to mix code with C++.
Performance is always non negotiable.
C++ compilers and optimizers use CPU register and it rocks. C++ is type safe.
C++ gives you first access the ability to innovation as soon it is available. It can be a market advantage. We talk a lot about productivity but the key impact is immediate access to innovation. C++ allows that.
Native productivity is different that managed productivity.
In C++, you don’t have to be object oriented or to use classes. You can but you can’t just use functions.
C++ and templates meta programming is made for esoteric audience. It is surprising to see template meta programming. You can’t think at a different think but it is always C++. The transition from C programming could be large but it is part of the C++ shape.
Concurrency is next major topic for the past 15 last years.
Garbage collection and C++.
C++ is not made for classic garbage generation. It does not work.
C++ brings diversity. There are many memory management systems. Some apps brings their own memory management system, using OS API or STL usage.
The problem is not that an app leaks, the fact is that it starts fast. This is what is important.
In game development, the application pre-allocates a large bloc of memory, build partitions it and use it.
GC is fantastic for AI and managed languages.
In C++, shared pointers do a better job for objects lifecycle. The tradeoffs are important. There are a lot of techniques in C++ world. In .NET, there is only one way to allocate memory.
If you want to be fast and small, GC is not the way to go.
In 90’s, it was write once, run everywhere rules. C++ is more than a language, it is coupled with libraries, like C runtime and C++ STL. Library can be generic and portable, example for a math library. Also, UI can be portable. C++ can be low level and high level. C++ developers are very sophisticated to understand what can be portable and what can be platform dependent. Sophistication is one thing we are fascinated.
There is no one size fits all in C++. You need to think what part of the platform you have to call. C++ has an eco system.
C++ language has so much features elegant like template and not elegant like macros. C++ has so unique attributes in the language and C++ is bound to software development excellence. C++ is native and the platform is native so it is much and much easier to achieve such superior power and performance.
C++ known as unsafe and unsecure is a myth and is wrong. It is provided by marketing guys.
VS dot not ship every 6 months. Microsoft read a backlog for Visual C++ and Visual Studio. They want to hear from the community. What do you want new and more ? There a lot of future plans. Diego D. (community Pm for Visual C++) want the community to help the Visual C++ Team, by sorting its internal backlog.
Don’t be surprised if in the future, new designers and tools address C++ first. And on the opposite, ther will be specific tools for specific language. These are existing scenarios in VS11.
Christophe Pichaud | Visual C++ user since VC1.52c in 1992