"The world is built on C++ and so is Microsoft," proclaimed Herb Sutter at Microsoft's Build conference last week in Seattle, Washington. Sutter is chair of the ISO C++ standards committee and Microsoft's Visual C++ language architect. Native code is currently ascendant inside his company, with C++ prominent in SDKs for Windows …
I like reference counting. It makes me feel like a manly man type programmer. IGMC.
Points and laughs.
So glad I don't suffer from those 'where are my keys, wallet, bollocks' style bugs anymore.
Visual Studio they messed it up too due to all the Metro nonsense at Microsoft.
Metro is the worst thing ever.
Way worse than .NET (the Microsoft Java clone, way more messed up than Java itself).
Visual Studio does not force you to write "Metro" applications. Want free? There you go.
For one I welcome increased compatibility with C++11 and hope that remaining features (deleted and defaulted functions please, and "rvalue for *this" too)
"Way worse than .NET (the Microsoft Java clone, way more messed up than Java itself)."
Uhm, you do realize that .NET is nothing more but a framework which can be used to gain easier access to specific Windows components? Its not a programming language and most certainly not a Java clone.
What you're referring to is C#(.NET); a programming language which can be used to write applications which fully utilize the .NET framework, comparable to the way a Java program is build upon the Java runtime. And indeed; in a way C# mimics Java.
But don't forget that you can also use Visual Basic as well as C++ to build .NET applications. Heck, MS' own application server (IIS) even provides .NET support for ASP build webpages.
Problem with the VS 2012 Express stuff is that you're still somewhat tied to Windows 8, which is something I'm really not looking forward of using.
So instead of that stuff I'd sooner recommend grabbing one of the VS 2010 Express versions instead. Works excellent on both Windows 7 or Windows 8 (if that's your thing).
You don't even have to deal with the "Desktop version" nonsense (personal opinion) but instead can focus on language; are you going to use C#, VB or C++ ?
Oh I forgot to mention it - CTP also adds support for running applications on Windows XP.
Should have been mentioned by El Reg, really.
In case you mean that I will be unable to run VisualStudio on Windows 7 - duh! didn't see that one coming :( Is it true?
You have no clue what you are talking about, really.
.NET is a virtual machine just like Java.
"nothing more but a framework" you wrote there means absolutely nothing that way.
The C# language for accessing .NET components and programming doesn't mean that it isn't a virtual machine because .NET is a virtual machine, plain and simple.
That is the reason why .NET apps are so slow and bad compared to C++ ones.
And that is a good reason why since Microsoft forced video cards/GPU manufacturers to write drivers using .NET the distribution packages became a bloated mess and the number of bugs increased like never before.
C# and .NET just like Java are suited for not real programmers. Real programmers use C/C++ and in-line assembly at least.
VB.NET is not BASIC. It looks a bit like BASIC to some one who isn't familiar with BASIC, in the same way that C# looks a bit like C++. But decades of programming BASIC don't give you any familiarity with VB.NET. Quite the reverse: your deep understanding of the way any BASIC will work just makes VB.NET irritating.
And to continue the thought, ASP (vbscript) is not ASP.NET (CLR).
Anyway, Dot Net is in no way a "framework which can be used to gain easier access to specific Windows components". It is the framework which is required to achieve access to Windows from the CLR.
Which is not quite the same thing.
C# is actually the "Java clone".
There are several hundred reasons why it is superior to Java not least the ability to compare strings with the "==" operand rather than the awful aString.equals(anotherString) construct.
I would not normally consider myself an MS fan. I use Ubuntu with Python or C as my preferred development platform. But must use a variety of languages in my day job which pays the rent (Java, COBOL, C, bash, Rexx, VBA and C#) the only computer language I really don't like using is C++ -- the learning curve is way too steep for anyone not using it full time.
So all credit to MS for C# and .net.
.NET is a virtual machine just like Java.
Java is a language, not a VM. Compiled Java code may, or may not, run on a VM.
Pfft. Real programmers use a magnet, a needle and a steady hand.
Real programmers code in any given language that fits the task they are given and the platform they need to integrate to. Be it C++, C# VB.NET, Perl, Python etc etc etc. At the end of the day they are all pretty easy to pick up.
Sticking to one platform is usally the domain of amateur developers. Professsionals who stick to one platform severely limit their employment options.
The thumbs-down is curious. Perhaps you'd care to actually explain to me what exactly is wrong with this statement:
Java is a language, not a VM. Compiled Java code may, or may not, run on a VM.
Before explaining, you could perhaps look up some Java compilers that compile direct to machine code, or perhaps even open a text book.
don't forget that you can also use Visual Basic as well as C++ to build .NET applications
Yes, and dozens of other languages. VB.NET would be somewhere around my last choice, personally.
See for example the list at . It's rather idiosyncratic and not terribly accurate (it lists F# only as a Caml implementation, for example, and the information for .NET COBOL implementations is rather out of date), but it gives a sense of the state of play.
Never understood why the world and his dog don't spend more time making C++ better rather than inventing loads of junk languages. Or at least improve other solid languages that run well and fast.
Abstraction and virtualisation was possible and desirable on desktops, but on the mobile device you really want as little of that as you can get.
C++11 is BETTER THAN YOU CAN HANDLE. No, seriously, it is. It's added so many new, better features that's it's now barely usable. For example, user defined compile time constants.
The idea of improving the language by *reducing* the number of features so as to make it more flexible, consistent and understandable (and removing some of the outright bugs in the syntax) does not seem to have occurred to them.
Mutter mutter. Use defined compile time constant *formats*. Formally known as 'user-defined literals'. See http://en.wikipedia.org/wiki/C%2B%2B11#User-defined_literals
(Icon referring to me this time.)
"Never understood why the world and his dog don't spend more time making C++ better rather than inventing loads of junk languages."
Because the world + dog isn't on the C++ standards committee. Which is why there are so many junk languages out there.
What the world really needs is a serious competitor to Visual Studio instead of a bunch of pale imitators (written in Java of all things) that are constantly playing catch up. Give Microsoft a serious run for their money in the C++ Windows development tool arena, and maybe the quality (and performance) of Visual Studio will improve.
Its called C.
You have a problem with the natural complexity of computing being expressed in a computing language?
You should try using Windows then.
People are downvoting this, but probably many forgot what MS C/C++ compiler was before Borland C++ became a serious competitor. It forced Microsft to deliver far better tools (and meanwhile do whatever they can to crush Borland - especially hiring its better employees like Hejlsberg....). Unluckily the current owner of the ex-Borland products is not capable of delivering nothing at that level... and no one else dares to enter such a market.
Am I alone in recalling Microsofts original ambition was a framework that would allow applications to run on hardware independent platforms ?
You'll have more luck moving a .net application between x86, x64 and ARM than you will with an unmanaged language. If your code is trivial, you can even get it to run on Mono.
Just how trivial?
>>Am I alone
You mean like how you can run .NET code on Linux through Mono, or Mac through Silverlight?
Yeah sure go ahead and put a mission critical business app on Mono so you can save on windows licenses and see how long you stay employed. There are plenty of cross platform solutions but .Net is not one of them.
mono also runs on iOS
I remember attending some of the earlier .NET stuff about how the DLL hell was at an end. I loved C# and the VS for it.
Then they upgraded to .NET 2 and you couldn’t run the two together. Kinda lost faith then.
I know a company that's doing that, sort of. Luckily in the years that the planned release has slipped, Mono has improved to the point where it might actually work. Equally luckily, NIST changed the policy on SHA-1 that originally gave a hard limit of 2010 for the release date.
No - if you have a common set of API whatever the underlying hardware architecture is you just need to recompile - a PCode/IL just defers the compilation step to execution time. Only kernel code may have to face different hardware architecture issues - and not all of it.
Windows NT supported Alpha and MIPS also - do you remember?
Look at Linux and GCC - on how many hardware platform does it compile? C itself was devised to allow for porting operating system easily from an hardware platform to another - as long as you have a compiler for that platform you can run it on it (of course you will need some ad-hoc drivers....)
This happens quite a lot. Any problems would be in the quality of the mono implementation, just as the JVM implementation can be bad on a given platform.
.NET is a cross-platform solution just as soon as the open-source community choose to make it so.
>.NET is a cross-platform solution just as soon as the open-source community choose to make it so.
Which is exactly my point. OSS can smell the trojan horse that .Net has been from a mile away regardless of Microsoft's promises. Thats why most distributions don't include Mono and any apps by default. Until Microsoft explicitly supports .Net on a platform, to use it for anything business critical is just plain stupid. Oracle understands this and is one more reason Java is eating .Net lunch.
Mono has improved to the point where it might actually work
I wouldn't go that far!
Plus I'd put money on version 2 being in C++.
"Still, that is past history."
Did you mean "history?"
You'll probably find that Apple or Samsung or the Swiss Railways or someone have a patent on future history.
I'm sure the USPO would probably approve it anyway.
I don't know about a patent, but I'm fairly sure Robert A. Heinlein had a copyright...
Future History? Aasimov has prior art.
Indeed he does and also on something ( I think it was called a calcpad ) that might be a rounded rectangle.
All from the opening pages of "Foundation"
"We have a really mature compiler and optimiser. It's been around for a decade or two, on x86 and x64. Then we have a version 1 release of ARM. You can expect that to get better."
The Microsoft ARM compiler is not much younger than the x64 compiler. The former dates back to the early WinCE releases, and the latter post-dates the era when Intel were trying to convince everyone that there would be no 64-bit extension to x86. If Microsoft's ARM compiler is immature, it certainly isn't because it is new.
I'm fairly certain they're pushing out a preview of new C++ features in the near future, with an actual release at the beginning of next year. Variadic templates are on the way, but I don't think that C99 compliance will be advanced at all :-(
I suppose MS simply don't consider C as worth focusing on. Since most C development is done on Linux, it doesn't seem too stupid a decision - they have limited resources and would rather focus on C# and (yay!) C++.
As the error box that pops up about 1 in 20 kindly tells me before the whole thing crashes in flames before restarting itself phoenix-like.
They should use gcc for ARM. It's quite good and used by loads of people already.
But even that isn't as good as Arm's (the Company) compiler, which can produce better optimised binaries. MS should just license that.
There's probably about as much chance of that happening as them basing IE on WebKit!
"But there are no plans for OpenCL, an open standard for GPU and accelerator programming."
As Direct3D is to OpenGL, C++AMP is to OpenCL ;)
So this article all but admits .Net has been a failure (obvious to rest of world) and caused M$ to badly neglect MFC (which they have done) which is still how many pros build windows clients that will run on virtually every modern version of windows (sorry web folks but even HTML 5 is not fit for a fat client). Now much like with .Net and Silverlight they are pushing WinRT which like Silverlight will fail and be deprecated in three years. Hey Microsoft how about fixing MFC, and modernizing it instead of pushing out crap 3rd party add ons like the BCGSoft ribbon stuff which is badly broken. Give up trying to be sexy, you suck at it and get back to making tools real developers will use in the enterprise.
Managed code has its place but Microsoft was stupid to believe unmanaged code would disappear by now. Just because fresh out coding hacks don't understand how a computer works and can now hack out crap doesn't mean there is not a need for people who do understand how a computer works and can write efficient code to take advantage of that.