Click here to Skip to main content
Click here to Skip to main content

An interview with Microsoft's new Visual C++ Architect Stanley Lippman

, 13 Nov 2001
Rate this:
Please Sign up or sign in to vote.
Stanley Lippman talks about the future of Visual C++ .NET

Stanley Lippman has a long history with the C++ language and the C++ community in general. He was one of the first users and implementers of C++, he worked under Bjarne Stroustrup at the Bell Laboratories Foundation Project, was the principal software engineer at Walt Disney Feature Animation and has written a number popular titles such as the C++ Primer.

Stanley recently joined Microsoft as the Architect for Visual C++ so I caught up with him to have a chat on what he sees as the past, present and future of Visual C++, and what his own personal goals are for Visual C++. First and foremost my aim was to provide a definitive answer as to what's in store for us C++ developers. Many of us are wondering whether or not our skillset will remain valuable in a .NET world. Will C++ be relegated to win32 development? Will Microsoft make good on it's promise to pursue C++ compliance?

It’s important to remember that Stanley is the architect for the Visual C++ language - and new to the job - and so libraries such as MFC, ATL, WTL, and tool such as Visual Studio are outside Stanley’s role sphere of influence and experience. The interview therefor concentrated on the questions that most developers have been asking: What is the future of Visual C++.

Firstly I asked Stan what it was that attracted him to work for Microsoft.

Stanley's background is in Unix, and he's developed against many different platforms. Obviously some platforms are easier than others. When it came to .NET Stanley absolutely loved the concepts behind it. “The framework is amazing, rich and interesting.” Stanley has worked on platforms where even simple concepts such as threading are intensely painful to get working, so having a comprehensive Base Class Library that provides you with such things as a comprehensive threading model that can be accessed using any .NET language of your choice is very important.

Stanley initially had only limited notions of where Visual C++ fitted into the .NET picture, but once he investigated further he was pleasantly surprised when he realized that C++ was not left out of .NET, but was in fact a first class .NET language.

So what do you see as the future of Visual C++, and as the new Architect what are your goals?

Stanley is very clear on the future: “I believe Visual C++ has a prosperous future”. He has met the Visual C++ team and says they have undeniable enthusiasm and energy. His goal is very simple: “I want Visual C++ to be the C++ implementation of choice”. Stanley’s personal goal is to have C++ developers choose Visual C++ not only because of the tools and platform, but because it’s the premier implementation of the C++ standard.

Compiler compliance

In terms of C++ compliance Stanley admits that the latest release (Visual C++ 7.0) isn’t quite there, but the substantial work that has been carried out on the underlying implementation means that moving towards a more comprehensively compliant implementation is within reach. He’ll be pushing forward with compliance especially in the area of templates.

Even though Visual C++ 7.0 does not have the full range of features that Stanley would like to see implemented, he says it is still by far the most compliant implementation of C++ that Microsoft have released. It’s not 100% perfect, but it’s still an excellent compiler with high compliance to the standards. Areas that still have issues are fully documented in the VS.NET documentation in the article titled "Standard Compliance Issues in Visual C++". 

Microsoft’s goal is to have a ‘competitively compliant’ compiler – meaning it won’t be 100% compliant. There are a couple of features of the ANSI/ISO standard (for instance the ‘export’ keyword as applied to template classes) that won’t be implemented because they are considered by Microsoft to be obscure and, at this stage, theoretical. Microsoft is however working to ensure that Visual C++ will compile the most popular libraries such as Boost, Blitz, Loki and a fully compliant version of STL. The emphasis is on a level of compliance that allows popular libraries to be compiled, not 100% compliance.

Nick Hodapp, Microsoft’s C++ Product Manager also added that while high compliance is definitely a very important goal Microsoft will not sacrifice code-generation quality or robustness at the cost of extreme compliance. However in recent lab tests they are still beating several popular compilers on conformance tests.

When will we see the next version?

Stanley laughs and says if it were up to him he’d email out updates each week, but there are pesky things like quality control and processes that must be adhered to in anything as complex as Visual C++. With the latest version to be released around February 2002 he would like to see an update for the compiler late the same year, but is unsure as to whether that is possible. He’ll certainly be fighting for an early update. Nick Hodapp backs this up by saying that it’s extremely likely that an update to VC7 will be available next year. Microsoft are investigating the best mechanism to release a compiler refresh next year that would focus on compliance features.

Many C++ developers feel that Microsoft is relegating Visual C++ to the sideline in favour of the newer languages such as C#.

Stanley wants C++ to be far more a part of .NET than it is currently. At the moment the biggest benefit of managed C++ is as a transitional language. You are able to move your native apps into the .NET framework or consume .NET components within your native applications, but it’s not quite the language of choice for developing fully managed applications.

For the pending release of Visual C++ .NET (VC7) Microsoft focused on enabling interop features.  VC7 has the best interop scenarios of all the managed languages and includes the ability to have both managed and unmanaged code in the same image.  They also focused on enabling optimization technology on the generated MSIL - the result is that VC7 is the only compiler to generate optimized MSIL.  In future releases Microsoft will focus on ANSI/ISO conformance (enabling many more features for both managed/unmanaged code), as well as features that will give Visual C++ feature parity with C# - WinForms, for example.  Visual C++ will be positioned as the power-systems language for .NET.

Template support and generic programming are a must and Microsoft are very keen to implement codeDOM support, both for ASP.NET and WinForms. With these added features Stanley sees Visual C++ as being the power programmers language of choice for the .NET framework - to compliment it’s current role as the language of choice in unmanaged development. Even without the template support that is currently being pursued Stanley sees Visual C++ as the only language suitable for those who need more than C# or VB.NET can offer.

Stanley went on to congratulate Microsoft for shifting away from being corporate oriented and moving towards being a more developer-centric organization. To this end he will be pushing even more to open up the company to developers and would like to see Microsoft to be even more responsive to the developer community. Microsoft is renowned for pushing ahead with innovation but there can be dangers in moving too far head of not only standards, but also developer’s needs. Stanley will be pushing to ensure that Microsoft listens more to what the developer community has to say while ensuring higher standards compliance.

New features such as those in the C99 specification

On the topic of extending Visual C++ to embrace the new features found in the C99 specification Stanley stated that these are issues for the relevant Standards bodies. There is growing concern that a rift is developing between C and C++, with C++ no longer being a superset of the former. Microsoft’s aim is to have the most standards compliant implementation so if the C++ standard is updated to include new features then Microsoft will work towards implementing them in Visual C++.

Microsoft’s approach to adding new features is whether those features are

  1. being used in code that other compilers can build, or
  2. whether those features are compelling enough that it becomes apparent that their customers want them. 

Microsoft will not simply implement features because they are specified in the standard.  They will implement them when people want them because they are beneficial.

The Message for us?

The message is that Visual C++ is definitely alive and kicking and has a very bright future in the .NET world. Stanley's aim is to have the compiler at a point where it’s the benchmark against which all other compilers are compared – in terms of simplicity, fun factor and conformance. It should be easy to use, versatile, enjoyable, and it should be what developers think of whenever they think C++. Continuing improvements in C++ compliance along with future support for ASP.NET and WinForms will ensure that Visual C++ be the power language for .NET and for native development. 

As to the question of whether developers will move to C# instead of managed C++ Stanley thinks there will be more of a move from VB to C# than C++ to C#. C++ is the better, more versatile and the only optimised compiler available in .NET.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Chris Maunder
Founder CodeProject
Canada Canada
Chris is the Co-founder, Administrator, Architect, Chief Editor and Shameless Hack who wrote and runs The Code Project. He's been programming since 1988 while pretending to be, in various guises, an astrophysicist, mathematician, physicist, hydrologist, geomorphologist, defence intelligence researcher and then, when all that got a bit rough on the nerves, a web developer. He is a Microsoft Visual C++ MVP both globally and for Canada locally.
 
His programming experience includes C/C++, C#, SQL, MFC, ASP, ASP.NET, and far, far too much FORTRAN. He has worked on PocketPCs, AIX mainframes, Sun workstations, and a CRAY YMP C90 behemoth but finds notebooks take up less desk space.
 
He dodges, he weaves, and he never gets enough sleep. He is kind to small animals.
 
Chris was born and bred in Australia but splits his time between Toronto and Melbourne, depending on the weather. For relaxation he is into road cycling, snowboarding, rock climbing, and storm chasing.
Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

 
GeneralMy vote of 3 Pinmemberajaypanchwagh212-Nov-10 1:43 
GeneralThe way how MS wants C/C++ to consume .net is ugly PinsussAnonymous28-Oct-03 0:01 
GeneralSome comments and suggestions PinmemberUwe Schnitker31-Jan-02 23:16 
GeneralTemplated CView classes PinmemberSatheesh17-Dec-01 13:01 
GeneralThis seems weird Pinmemberbswen5-Dec-01 0:55 
GeneralRe: This seems weird PinmemberKenneth Kasajian21-Jan-02 9:19 
GeneralRe: This seems weird PinsussAnonymous6-May-03 4:36 
GeneralRe: This seems weird PinsussAnonymous24-Sep-03 17:01 
Generaltemplate export PinmemberRCL Software19-Nov-01 23:27 
GeneralRe: template export PinmemberMichael Kochetkov20-Nov-01 1:49 
GeneralRe: template export PinmemberRCL Software20-Nov-01 2:56 
> You may compile it once with explicit template instantiation indeed right now with 12.0.
> It is not automatic however but the effective solution.
Indeed, this is what we do now:
template class CAnyTemplateClass;
Frown | :(
 
> And IMO the automation of such process may appear to be harmful in some situations.
I would be interested in seeing an example of where it could be harmful.

 

------------------------------
http://www.rcl-software.org.uk
------------------------------
GeneralRe: template export PinmemberMichael Kochetkov21-Nov-01 1:44 
GeneralRe: template export PinmemberMichael Kochetkov21-Nov-01 1:48 
GeneralRe: HTML PinmemberRCL Software21-Nov-01 3:32 
GeneralRe: template export PinmemberRCL Software21-Nov-01 3:03 
GeneralRe: template export PinmemberMichael Kochetkov21-Nov-01 5:39 
GeneralRe: template export PinmemberRCL Software22-Nov-01 2:40 
GeneralRe: template export PinmemberMichael Kochetkov22-Nov-01 8:35 
GeneralRe: template export PinmemberRCL Software22-Nov-01 13:45 
GeneralRe: template export PinmemberRCL Software20-Nov-01 2:57 
GeneralRe: template export PinmemberDave Handley10-Nov-04 3:27 
GeneralTemplate template support PinmemberSimon Hughes19-Nov-01 3:31 
GeneralRe: Template template support PinmemberWalter Sullivan19-Nov-01 15:52 
GeneralM$ templates are a pox upon win32 coding Pinmembernehrzul17-Nov-01 11:09 
GeneralRe: M$ templates are a pox upon win32 coding PinmemberRonald Laeremans17-Nov-01 18:55 
Question"...Visual C++ be the power language for .NET "?????? PinmemberStormwind15-Nov-01 15:10 
AnswerRe: "...Visual C++ be the power language for .NET "?????? PinmemberMichael P Butler15-Nov-01 22:29 
AnswerRe: "...Visual C++ be the power language for .NET "?????? PinmemberDaniel Turini15-Nov-01 23:05 
GeneralRe: "...Visual C++ be the power language for .NET "?????? PinmemberMike Burston25-Nov-01 11:11 
GeneralRe: "...Visual C++ be the power language for .NET "?????? PinmemberStormwind27-Nov-01 15:26 
AnswerRe: "...Visual C++ be the power language for .NET "?????? PinmemberSteven Hicks25-Nov-01 9:52 
QuestionStandard ? PinmemberJim Crafton14-Nov-01 7:36 
AnswerRe: Standard ? PinmemberFazlul Kabir14-Nov-01 7:59 
GeneralRe: Standard ? PinmemberJim Crafton14-Nov-01 8:05 
GeneralRe: Standard ? PinmemberGeorge14-Nov-01 14:25 
GeneralRe: Standard ? PinmemberFazlul Kabir15-Nov-01 4:15 
GeneralRe: Standard ? PinmemberMichael P Butler15-Nov-01 4:21 
GeneralRe: Standard ? PinmemberGeorge15-Nov-01 10:01 
GeneralRe: Standard ? PinmemberAndy Metcalfe15-Nov-01 22:33 
GeneralRe: Standard ? PinmemberGeorge15-Nov-01 23:02 
GeneralRe: Standard ? PinmemberAndy Metcalfe15-Nov-01 23:17 
GeneralRe: Standard ? PinmemberWalter Sullivan19-Nov-01 16:05 
GeneralRe: Standard ? PinmemberChris Maunder15-Nov-01 23:13 
GeneralRe: Standard ? PinmemberDon19-Nov-01 4:06 
GeneralRe: Standard ? PinmemberGeorge15-Nov-01 10:17 
AnswerRe: Standard ? PinmemberRonald Laeremans14-Nov-01 18:26 
GeneralRe: Standard ? PinmemberAnonymous14-Nov-01 22:38 
GeneralRe: Standard ? PinmemberWilliam E. Kempf15-Nov-01 5:50 
GeneralRe: Standard ? PinmemberJoaquín M López Muñoz15-Nov-01 21:10 
GeneralRe: Standard ? PinmemberWilliam E. Kempf16-Nov-01 2:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140827.1 | Last Updated 14 Nov 2001
Article Copyright 2001 by Chris Maunder
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid