Stan Lippman On Version 2 Of Managed C++ 40
Lansdowne writes "Stan Lippman, one of the founding fathers of C++ and currently a language architect at Microsoft, has prepared an exhaustive translation guide, comparing old Managed C++ to the revised CLI/.NET version of C++. According to Lippman, "There are a number of significant weaknesses in the original language design (Version 1), which we feel are corrected in the revised language design (Version 2).""
better colors (Score:2, Insightful)
Managed C++ and Mono (Score:2)
I believe that this is a real standard, whereas VB.NET (which Mono supports) is not a standard at all.
Re:Managed C++ and Mono (Score:3, Informative)
Ungh, what horrible timing (Score:2)
I'm not complaining about the new syntax, though - what I've read about it seems like it's much cleaner and better thought out than the current stuff. I just wish it was here now so I could use it instead of having to rewrite it down the road.
Re:Ungh, what horrible timing (Score:2)
I mean, things like this:
In effect, under the revised language design, destructors are once again paired with constructors as an automated acquisition/release mechanism tied to a local object's lifetime. This is a significant and quite astonishing accomplishment and the language designers should be roundly applauded for this.
If it was so goddamn simple, why didn't they do it in the first fskuing place. Even I
I don't understand (Score:4, Interesting)
Re:I don't understand (Score:1, Troll)
Re:I don't understand (Score:2, Informative)
Re:I don't understand (Score:2)
Re:I don't understand (Score:2)
Leave it up to Microsoft who never saw a technology they couldn't "improve" by bloating it beyond all reason.
Everything MS comes out with is only easier when you use it exactly the way they do. Anytime you want to branch off into something new, you're suddenly faced with practically reverse engineering it to figure out what the heck is going on.
I've never understodd the need to keep cramming new more and more levels of stuff between the code and w
Re:I don't understand (Score:4, Interesting)
Because running a program under the CLR is quite a bit different than running under a native CPU, and stock C++ doesn't really lend itself to the environment (for example, the CLR does not provide deterministic destructors). Rather than try to shoehorn C++ into a place it doesn't really fit, Microsoft did the right thing and extended the language in a way that makes it fit in with the other
Plus, without new keywords, how would you specify which classes are garbage collected and which are manually managed? How would you specify class attributes? What about boxing/unboxing? The CLR is a very powerful environment, and I'd rather C++ have the ability to use this power.
Re:I don't understand (Score:5, Insightful)
Managed C++ has less features than ISO C++, namely templates and multiple inheritance.
You cannot mix code from the two in many ways, like having a class from one inherit from another.
Sizeof of managed classes is impossible. Managed classes cannot use const or volaitle.
Managed objects cannot be passed by value; only references or value types. (ISO C++ objects are structs that can always be passed by value)
Operator delete doesn't work if no user-defined destructor exists in a managed object.
Managed classes cannot override operator& or operator new.
A managed object cannot be used as a member in a union.
Managed c++ does not use unions; instead a complicated field offset system.
Pointers to objects cannot always be casted in managed C++, pointers of the same size can always be casted in ISO C++.
Data in managed C++ is zero-initialized. Data in ISO C++ has arbitrary values unless explicitly initialized.
Managed C++ adds certain members to all classes (as derived from Object), like GetType; all classes derive from System::Object. ISO C++ classes can have no parent class.
Static sized arrays are illegal in .net
C-style multiple parameters are not supported; use param array instead
Normal c++ supports static-only typing. Managed c++ requires dynamic typing, at least to some extent.
Pointers to members are not supported in any way in managed c++; delegates replace them.
Normal C++ makes absolutely no library requirements on outputted code; not even the startup library is necessary. Managed c++ requries the entire .net runtime, and requries you to include mscorlib.
Classes cannot be defined inside of functions in managed C++.
Any class can be derived from in normal C++. Sealed classes cannot be derived from in managed C++.
Conversion functions are always static in managed c++. The naming convention is different.
RTTI is not supported in managed c++.
Only public inheritance is supported in managed c++.
Normal c++ explicitly has no garbage collector as part of the language; if you want one, use a library. Managed c++ requires you to use .net's GC.
The layout of members in a class or struct in normal c++ can always be known at runtime. Managed makes them permanently opaque.
Removing anything from C++, espescially something as important as templates or multiple inheritance, makes managed C++ a distinctly different language. And this is just a list of some of the things that normal c++ has that managed doesn't. The list of extensions is much longer.
Re:I don't understand (Score:2)
Type templates are going to be available in
I also forgot to mention that pointers to pointers (a pointer to a __gc reference) are illegal in managed C++. That was a pretty big feature of C and C++. (this is due to the fact that
Re:I don't understand (Score:1)
Yeah, but this story was about the C++/CLI language which (unlike "Managed C++"!) is supposed to be compatible with C++ -- until you use one of the .NET-specific extensions, something which will happen pretty soon, I'm afraid.
One person's positive view here [brinkster.com].
I still don't like this at all. P
Re:I don't understand (Score:1, Informative)
what MS have done is invent 2 new languages, managed C++ and C#. one of them is ok, the other is an abomination.
They didn't need to invent managed C++, all the interopability could have been provided by some library helper classes and COM. I've never heard of an explanation for manC++, and never heard of a new project using it. to link up with existing C++ codebase it's used, but should have been done as a library, not a new language.
Stan L
What's happening to C++?! (Score:5, Insightful)
Someone remarked the other day, possibly on this very board, along the lines of "the C++ standardisation committee is now full of template-loving metaprogramming fans" who are more concerned with fixing their pet superlibraries than they are with fixing the more glaring flaws in C++ as a modern programming language. I'm sure anyone who follows developments around the language, particularly the serious Usenet groups, will see at least an element of truth in that claim.
This is almost worse, though. We now have at least two of the biggest names in C++ -- Stan Lippman and Herb Sutter -- following the Microsoft banner. At first, I figured that would be good for the language, driving up standards compliance in one of the most popular implementations, Visual C++. Now I begin to suspect that it's just another Embrace And Extend(TM) manoeuvre.
The first round of "Managed C++" needed horrible syntax kludges, because C++ is simply too flexible a language to become another .Net language clone like C# or VB.Net. At least it was fairly standard-compliant before, though. Now, if you thought VC++ 6's for loop scoping bug was annoying (and having fixed numerous bits of code broken in that way that failed on other compilers, I promise you it can be very annoying) that's going to be nothing: at Microsoft, they care about standards compliance, but not so much that they won't add random extra keywords to the language! I fail to see how this will be any better than back when Borland used to add properties and such, and then anybody wanting to move away from their component libraries was screwed.
C++ sucks if you want to use .Net anyway; if that's the sort of programming environment you want, why not just use C# and be done with it? For all Microsoft's banter about interoperability, no-one who's got 100,000 lines of MFC code and a workforce trained to maintain it is really going to change to .Net overnight. Technologies like that are for new projects, started from scratch and able to match the architecture from the ground up, not for random porting exercises of existing code.
Ultimately, managed C++ is just another lock-in technique, but it's sad that it's apparently being supported so enthusiastically by people who used to know better.
Re:What's happening to C++?! (Score:2, Troll)
Re:What's happening to C++?! (Score:2)
Re:What's happening to C++?! (Score:2)
Re:What's happening to C++?! (Score:2)
Re:What's happening to C++?! (Score:2)
Re:What's happening to C++?! (Score:2)
Sure, but unless you can get that test suite recognised as testing C++ standards compliance, its totally useless.
I could write one, the FOSS community could write one, but then what? Unless the standards committee ratified it, anyone who used it to test their compiler might as well use their own tests.
Re:What's happening to C++?! (Score:2)
When did the standards committee ratify the Plum Hall tests? I never saw anything about that.
Re:What's happening to C++?! (Score:2)
I have a test, that once you're run your compiler against it, will allow you to say it is 'standards compliant'.
That's optional actually, the real test is that you pay me some money. Then you can say you're standards compliant.
Re:What's happening to C++?! (Score:3, Insightful)
BTW, has it occured to you that the implementor of a library test suite might just have extremely good understanding of the library and its flaws, and hence recommends more changes to it than committee members who focus on other parts of
Re:What's happening to C++?! (Score:1, Offtopic)
Re:What's happening to C++?! (Score:2)
It does seem strange. I don't think I would voluntarily use managed C++, only native C++ wrapped in C# (or even VB.NET!). The sheer annoyance of using a language that looks superficially familiar but is fundamentally different (all RAII code would break, IIUC etc.) would make it easier to learn a separate language for
But I like reading and writing as portable code as possible. I find reading code that uses eg. GCC extens [redhat.com]
Re:What's happening to C++?! (Score:1)
#define for if(false);else for
Re:What's happening to C++?! (Score:2)
What does Microsoft use to write its OS and applications? From everything I've heard it's all C and Win32. Now if they don't use, why should we?
My experience with all these new technologies is that you are trading one set of headaches for another. You can either write the piece of functionality yourself, or you can beat yourself senseless trying to figure out how to use Microsoft's tools that supposedly p
Re:What's happening to C++?! (Score:2)
Very little is written in C, it's mostly C++.
Re:What's happening to C++?! (Score:1, Troll)
Yes. The top priority of the C++ st
Re:founding fathers ? (Score:4, Interesting)
Stroustrup is the original creator of C++, but several of the other big names were involved pretty much from the start, and a lot of them have worked together over the years. Stan Lippman is one such person.
Re:founding fathers ? (Score:2)
Ok, my memory may be faulty, but I'd have to agree with the grandparent post. I don't recall much from Stan before the mid-nineties, while (again, IIRC) Bjarne sired it in the early 80's. "Founding Father" seems a little bit of a st
Love the syntax! (Score:1, Funny)
Microsoft has destroyed C++ (Score:3, Insightful)
Look at the .NET versions of Visual Studio, and see how the C++ has been rammed right to the bottom in terms of features, while visual basic and C# (ACK) have all the actual useful stuff. (Forms designer, for one).
I mean, I love writing C++ and having to remember a million different __gc __huhwhut __whynotthistoo in front of all the declarations. Completely *unportable* code.
Microsoft is attempting to end the usefulness of C++ on Windows, and I think with VS2003 they did it.