C++ Renaissance (the Channel9 talk)

C++ Renaissance

http://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance

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.

In Channel9, there will be more and more videos about C++. Visual Studio will bring unique features and some C++ only tools and designers. Visual C++ has been the first language for MSDEV. It became now, the central place for C#, VB, HTML and C++ and in a near future, JavaScript. There are a lot of things that look equal among languages. But C++ compiler is far complicated versus others so Visual Studio could be dominated by C++ superiority but is not oriented like that. Visual C++ and Visual Studio fit very well together. Target audience is diversified. The value added by Visual Studio, example productivity, designers and ALM tools is shared for all languages. VS is multi role environment and the goal is not to replicate tools with equality for all languages. Differences in VS11 will be more important.

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: