The Future of C++ As Seen By Its Creator 424
holden writes "In a rare public talk, C++ creator Dr. Bjarne Stroustrup discusses his ideal in programming languages, as well how he sees the next version (and beyond) of C++ developing. He explains the general selection criteria used for adding new features, some of the legacy of C++, and many other interesting topics. Especially interesting is during the Q&A he explains his views of the embrace and extend mentality some implementations, such as VC++, have taken."
uh... (Score:4, Insightful)
Re:uh... (Score:4, Funny)
Re:uh... (Score:5, Funny)
After this we can get onto the main proceedings which might or might not return anything.
We move to the future by emitting a string of "Hello world" before returning zero.
This is the end of the discussion I hope it was informative.
Re:uh... (Score:5, Insightful)
That ruined the joke for me. Like Stroustrup would ever include the legacy non-namespaced header!
Re: (Score:3, Funny)
Re:uh... (Score:5, Funny)
Re:uh... (Score:5, Funny)
I'm sure he only did that to ensure compatability with older members of the audience.
Then the joke should have been in COBOL.
Re:uh... (Score:5, Funny)
Jokes in Cobol (Score:3, Funny)
The other came out on Usenet in the 80s and went something like
Some of my coworkers got it, but a couple of them didn't. The disturbing part was that they r
Size of iostream? (Score:3, Interesting)
Good afternoon everybody, I would like to start by including iostream.h into the discussion.
After this we can get onto the main proceedings which might or might not return anything.
We move to the future by emitting a string of "Hello world" before returning zero.
This is the end of the discussion I hope it was informative.
Yes, all quarter megabyte of it. A Hello World program that uses <iostream> has been seen to take nearly that much space [pineight.com] when compiled with g++ and linked statically with GNU libstdc++, on fairly recent versions of both MinGW and devkitARM toolchains. Compare this to an equivalent program that uses only <cstdio>, at under 6 kilobytes each. (Actual source code, binaries, and makefiles are available on request [pineight.com].) This hurts especially on one of the platforms that devkitARM supports, which has only
Re: (Score:3, Informative)
That entirely depends on how you use templates. A single instantiation of a template will likely be smaller than the equivalent generic code, especially in a complex class where you only have to instantiate the members you use. However, if you allow the same code to be instantiated several times, it will quickly blow up your executable size. Any way you avoid this, you quickly lo
Re: (Score:3, Funny)
Mod Parent Insightful (Score:5, Insightful)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Funny)
Re: (Score:2)
Re: (Score:2)
scratch that itch (Score:2)
texttospeech --output-format simplehtml vid.txt
Re: (Score:3, Funny)
Re:uh... (Score:5, Funny)
Interviewer: Well, it's been a few years since you changed the world of software design, how does it feel, looking back?
Stroustrup: Actually, I was thinking about those days, just before you arrived. Do you remember? Everyone was writing 'C' and, the trouble was, they were pretty damn good at it. Universities got pretty good at teaching it, too. They were turning out competent - I stress the word 'competent' - graduates at a phenomenal rate. That's what caused the problem.
Interviewer: Problem?
Stroustrup: Yes, problem. Remember when everyone wrote Cobol?
Interviewer: Of course, I did too
Stroustrup: Well, in the beginning, these guys were like demi-gods. Their salaries were high, and they were treated like royalty.
Interviewer: Those were the days, eh?
Stroustrup: Right. So what happened? IBM got sick of it, and invested millions in training programmers, till they were a dime a dozen.
Interviewer: That's why I got out. Salaries dropped within a year, to the point where being a journalist actually paid better.
Stroustrup: Exactly. Well, the same happened with 'C' programmers.
Interviewer: I see, but what's the point?
Stroustrup: Well, one day, when I was sitting in my office, I thought of this little scheme, which would redress the balance a little. I thought 'I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers? Actually, I got some of the ideas from X10, you know, X windows. That was such a bitch of a graphics system, that it only just ran on those Sun 3/60 things. They had all the ingredients for what I wanted. A really diculously complex syntax, obscure functions, and pseudo-OO structure. Even now, nobody writes raw X-windows code. Motif is the only way to go if you want to retain your sanity.
Interviewer: You're kidding...?
Stroustrup: Not a bit of it. In fact, there was another problem. Unix was written in 'C', which meant that any 'C' programmer could very easily become a systems programmer. Remember what a mainframe systems programmer used to earn?
Interviewer: You bet I do, that's what I used to do.
Stroustrup: OK, so this new language had to divorce itself from Unix, by hiding all the system calls that bound the two together so nicely. This would enable guys who only knew about DOS to earn a decent living too.
Interviewer: I don't believe you said that...
Stroustrup: Well, it's been long enough, now, and I believe most people have figured out for themselves that C++ is a waste of time but, I must say, it's taken them a lot longer than I thought it would.
Interviewer: So how exactly did you do it?
Stroustrup: It was only supposed to be a joke, I never thought people would take the book seriously. Anyone with half a brain can see that object-oriented programming is counter-intuitive, illogical and inefficient.
Interviewer: What?
Stroustrup: And as for 're-useable code' - when did you ever hear of a company re-using its code?
Interviewer: Well, never, actually, but...
Stroustrup: There you are then. Mind you, a few tried, in the early days. There was this Oregon company - Mentor Graphics, I think they were called - really caught a cold trying to rewrite everything in C++ in about '90 or '91. I felt sorry for them really, but I thought people would learn from their mistakes.
Interviewer: Obviously, they didn't?
Stroustrup: Not in the slightest. Trouble is, most companies hush-up all their major blunders, and explaining a $30 million loss to the shareholders would have been difficult. Give them their due, though, they made it work in the end.
Interviewer: They did? Well, there you are then, it proves O-O works.
Stroustrup: Well, almost. The executable was so huge, it took five minutes to load, on an HP workstation, with 128MB of RAM. Then it ran like treacle. Actually, I thought this would be a majo
Re: (Score:3, Insightful)
Re:uh... (Score:5, Informative)
Re: (Score:3, Funny)
One word per definition
Haiku would be dull.
Re: (Score:3, Insightful)
They don't remotely mean the same thing. (Putting aside that you then go on to demand that more words mean the same thing.)
Re: (Score:3, Informative)
1 : marked by, affording, or suggesting rest and repose
2 : being at rest : quiet
http://mw1.merriam-webster.com/dictionary/restless [merriam-webster.com]
1: lacking or denying rest : uneasy
2: continuously moving : unquiet
3: characterized by or manifesting unrest especially of mind ; also : changeful, discontented
Re:uh... (Score:5, Funny)
Re: (Score:3, Informative)
Re:uh... (Score:5, Funny)
Embedded video? no thanks (Score:2, Funny)
But seriously, I like slashdot because, unlike digg, we get ARTICLES, not videos. I'm not watching this. In protest, here's a completely misinformed and irrelevant comment which extrapolates a lot of very outlandish conclusions from the article summary:
Stoustrup just wants to make sure VC++ doesn't eat into the market share of his new linux-powered RC car, CTTOX. He has been embracing and extending C ofr many years now; if congress weren'
Re: (Score:2)
Re: (Score:3, Funny)
In other news. (Score:3, Funny)
Next version? (Score:5, Funny)
Re: (Score:2)
Do you mean C-hashed?
Re: (Score:2)
Re: (Score:2, Insightful)
Why is this candidate "bad" because he interprets a piece of marketing twaddle (i.e. the name of C#) in a different way from Bill?
Round here we (mostly) purposefully call things the wrong name, usually as an exclusive in-joke because we all really know what the real term is meant to be. This includes Giga- pronounced "jigga-" and internet called "interweb" or "interwebnets". My favourite is referring to C# as "coctothorpe" as the proper name for the # symbol is octothorpe. I also used
Re: (Score:3, Interesting)
Re: (Score:2)
Would you say, when asked about C-Sharp in an intervew: "Well, if you're going to talk about the language I'll just write with if I want to be comfortable, it's coctothorpe."
Torrents of vid available (Score:4, Informative)
http://csclub.uwaterloo.ca/files/stroustrup.ogg.t
http://csclub.uwaterloo.ca/files/stroustrup.avi.t
http://csclub.uwaterloo.ca/files/stroustrup.mp4.t
http://csclub.uwaterloo.ca/files/stroustrup.mpg.t
AC to prevent karma whoring.
The problem with VC++ (Score:5, Insightful)
If you look at the new Visual Studio 2008 - in the three years since 2005 was released, what does Orcas have for C/C++? Still no C99, with open admission that there are no plans to support it. No TR1 for C++. No significant compiler changes. Intellisense is still slow and quite easily stops working all together. Still no assembly support in the 64-bit compiler, missing intrinsic functions for important instructions such as CMPXCHG16B.
What we get is a newer bundled Windows SDK (which you can download NOW), updated MFC libraries (yuck), and a few new options for Vista compatibility.
In three years,
Re: (Score:2)
Re: (Score:2)
Now why would Microsoft abandon alternatives to that?
Parent is trolling (Score:4, Informative)
TR1 WILL be supported as soon as C++0x is finalized. Not sooner. If they would implement is now, it would likely change as soon as the new standard is ratified. Of course, even if they would implement now, you would criticise them as soon as the standard is ratified because ZOMG! Microsoft's TR1 is proprietary and out of date! LOLOLOLROFLMAO!
I suspect they will simply license TR1 from dinkumware which is feature complete with the current state of TR1.
Intellisense is a dog. People are working on it, and a lot of redesign is going on. Not just for intellisense, but for the whole compiler architecture to make it more scalable and plufable.
And I don't know where you are getting your info from, but asm is perfectly supported in 64 bit. Just inline assembly isn't because for 64 bit code this would make it non-portable between different 64 bit architectures.
You can still add asm files to your VC++ project and compile them.
And you can say yuck to MFC and I would agree. But a very large number of enterprise businesses still builds massive VC++ applications that use it extensively. maintaining and improving it makes lots of business sense.
And finally, C++ is not meant to be as RAD as C# and VB because that would require a lot of manpower which cannot be justified. VC++ is targeted for interoperability, performance and control over the program execution. Not for whipping up a data driven LINQ doc. People who want to use LINQ would simply build a C# project for data interaction and add it to their mixed mode C++ project.
Re:Parent is trolling (Score:4, Interesting)
C++ was not meant to be RAD like C#, but VC++'s compiler and IDE are _far_ from perfect. There are still several annoying little issues you come across when you play with real C++. My point was that there is so much room for improvement in the C++ compiler but they have completely neglected it and the IDE to implement features for their proprietary languages. Which all in all, this being Microsoft, is not that surprising - but it is still a shame.
You got one thing right - I did mean inline assembly (sorry, typos happen). It would be just as non-portable as using seperate
Re: (Score:3, Insightful)
I agree that a good developer will almost never need to use assembly. Unfortunately there are some (very few, but still some) things you just can't do efficiently in C++ - be it a limitation of the language or the compiler.
Believe me, I wish Microsoft could implement intrinsic functions for everything I need (like CM
Re: (Score:3, Interesting)
gcc has a TR1 implementation and they have started implementing some of the c++0x features (that should be enabled explicitely on the command line)
In any case, VC++ majorl
Re: (Score:3, Informative)
Alternatives are out there if you take the effort of using google.
Your apathetic comment demonstrates what I meant by "market inertia".
Re:The problem with VC++ (Score:5, Informative)
Microsoft had the following to say:
http://forums.microsoft.com/MSDN/ShowPost.aspx?Po
See bdunlap's response.
Re: (Score:2)
Re: (Score:3, Informative)
They more or less own the market for C# and IDEs for
BTW, it's really hard to migrate a Windows C++ program away from Windows. A Windows C++ program may be legal C++, but is something horridly deformed and barely recognizable.
Re:The problem with VC++ (Score:5, Insightful)
If you look at the new Visual Studio 2008 - in the three years since 2005 was released, what does Orcas have for C/C++?
I'll see you VC++ 2008 and raise you VC++ .Net (aka VC++ 7.0, aka the 2002 release).
The sad thing is, from a pure C++ programmer's point of view, a lot of people still regard VC++ 6 as the peak. Sure, the standards compliance is better now, and that's a real improvement. Sure, there have been a few optimisation improvements, and those are worthwhile (when they don't introduce bugs). Sure, the debugger has better visualisation support (autoexp.dat) even for native code, and that's definitely useful (if only they'd document it properly).
But when they moved to .Net for everything, the IDE slowed down horribly, even without the Intellisense/multi-threading mess that they finally fixed in 2005SP1. Certain features (I'm looking at you, browse toolbar) actually disappeared from VC++, for the rather poor reason that they couldn't be supported in all .Net languages. I understand that the whole unified architecture thing makes sense from a development perspective at Microsoft, but the bottom line is that users don't care, and removing useful functionality is bad. I also appreciate that, several versions later, we now have most of the same basic functionality back again, but it's still a mess compared to the simple, effective browse toolbar. Similar comments apply to various being-too-clever changes to Intellisense, incidentally.
Perhaps more seriously, as great as all these new optimisations are, we've found far more compiler bugs recently than we ever used to. We write serious mathematical libraries at work, and I promise you it is not fun to spend several days tracking down a bizarre floating point problem, because it turned out that the global optimiser got it wrong fifteen functions up the call stack and now the FPU stack is overflowing.
Meanwhile, we get to see Microsoft putting lots of goodies in for .Net developers. I'm sure they'd love us all to develop for .Net, but until they support it on seven different platforms (where all versions of "Windows" are grouped together as just one of those), it's never going to be of much interest to us.
Right now, Visual C++ is still (in my personal opinion) the best C++ compiler/IDE combination available today. But things move fast in software. Code compiled with g++ has lagged in performance for a long time, but if the recent work behind the scenes on things like SSA bears fruit, that performance gap could close very fast. Eclipse/CDT is so clunky as to be almost unusable for C++ development right now (don't flame me, it's just a personal opinion) but I check every now and then to see how things are going and it sounds like someone might be planning a big clean-up so it doesn't feel like C++ forced into a Java-friendly IDE any more. With Microsoft pushing all their funky new UI support into things like WPF that almost no-one uses, and portable GUI toolkits like wxWidgets and Qt becoming better all the time, it's not like having MFC support is a great bonus for new developments anyway.
In other words, if VC++ 2008 doesn't deliver real improvements for non-.Net-only C++ developers, it's entirely possible that the serious players will be switching to genuinely better open source alternatives for new developments well before the next version of VC++ is out. And that should scare Microsoft, because the superiority of VC++ and the ease of use of VB are the reason so many people have been making effectively Windows-only software for so long.
Re: (Score:3, Insightful)
Not that I have anything against C or C++, but for applications (i.e. anything made by Visual C++) I don't think it's an ideal language. We've (as an industry) wasted too
Re: (Score:3, Informative)
You know you have a sucky language when your important function is called CMPXCHG16B (not to be mistaken with that other little SOB, the good ole CMPCHXG16B)
Re: (Score:3, Funny)
That Windows C++ stuff, boy, it sure is weird!
Just one thing (Score:2)
Thank you.
Re: (Score:3, Informative)
Re: (Score:2)
That and a standardized, platform-independant networking library.
Re: (Score:3, Informative)
Re: (Score:2)
Re: (Score:2, Interesting)
The main benefit of C++ abstract classes is that you can have a single class inherit from multiple abstract classes without having to resort to something like Java's interfaces.
You think multiply inheriting from a bunch of C++ abstract classe
Re: (Score:2)
Still though, it would be nice to have a mechanism that can't be easily abused, but I guess my main concern has been taken care of
Re: (Score:2)
D [digitalmars.com] is, it's C++ done right.
C++ is a freak of programming languages. It has grown like cancer, much like HTML.
If you wanted to add OO features to C, I think a simplistic approach like Perl's would be better.
Re: (Score:2, Interesting)
Does a compiler exist for ARM architectures?
And do you think moving over to Haskell would work for my
colleagues? Some of them do not have a formal education in
CS and PL and are not too eager to learn something new.
With all respect... (Score:2, Insightful)
Yeah, go ahead, bring out your flame hose. Even if I had to burn in hell, this thing is still a monstrosity.
Re: (Score:3, Informative)
Re: (Score:2)
Pure OO C++ code I have seen, generated direct from UML, performs hopelessly against a C equivalent because of its reliance on memory allocation.
Tool misuse? (Score:2)
Re: (Score:3, Informative)
Re: (Score:3, Interesting)
Replacing C++? (Score:5, Interesting)
C++ is far too complex yes. But there is nothing that can really replace it. A language which supports functional, generic, procedural, object-oriented programming, with static typing, metaprogramming, and heavily geared towards native building?
The thing is, most development projects that use C++ today don't need all of that.
C++ is a fine, pragmatic tool, and I have great admiration for Stroustrup's ability to build such a useful thing. C++ is also a powerful systems programming tool.
But C++ is not a good language for most application development, which is what a great deal of code written in it really is. I think there are several separate but somewhat related reasons for this.
One is the safety argument. Most people simply don't need the flexibility/footshootability [delete as applicable] of C++. You need only look at the much-hyped field of garbage collection to see that (a) many professional developers find this one feature useful that they regard Java as superior to C++ for this reason alone, (b) many more professional developers have no clue about the overheads involved (which are almost zero for typical applications using modern approaches to GC implementation), and most importantly (c) a great many developers using languages without GC make mistakes that developers using languages with GC wouldn't. Similar arguments apply to other routine problems, such as pointers/NULL.
The second is the expressive power argument. Life is too short to be using programming languages with primitive, error-prone control flow constructs, functions that aren't first-order entities, no syntactic support for common data structures, crude macros, header files, etc.
Third we have the standard library argument. Yes, yes, you can get a C++ library for almost anything. That's not the point. The key word is "standard". Take a look at the huge practical success of Java and Perl, and tell me the vast Java standard library and CPAN have nothing to do with them. Sure, C++'s standard library is, technically, of a higher quality than most. But it still has stupid flaws (string support and IO streams are both fundamentally broken, for example). More seriously, it has stupid gaps. In the 21st century, it's hard to seriously advocate application development in a language with no standardised support for user interfaces, networking, concurrency, file systems, etc. No, I'm not going to spend days trying to find the right non-standard library for me. Non-standard libraries are for solving significant problems, where the difficulty and scope make it worth investing the time to find and hook in someone else's code. They're not for trivia that everyone uses all the time.
And finally, we have the tools argument. Working with header files sucks, and while just about everyone else is playing with their funky, auto-refactoring, navigation supporting editors, what do we have? VC++ (where refactoring still isn't available in native C++) and Eclipse (which is C++ forced into a Java-like IDE)?
The really scary thing is that reality bites now. It's not like I'm the first person to identify these practical flaws with using C++ for application development. It's not like other people haven't developed languages and tools with all these improvements already. And yet C++ continues to be one of the most important application programming languages today. Why?
Momentum. That's why. Building a new programming language with a syntax that doesn't look like C is asking for trouble; just look at the arguments Python sees over whitespace. (Curiously, I've never seen such complaints made about Haskell. Perhaps this shows a difference between the insight of your average professional programmer vs. your average language geek academic?) More to the point, trying to advocate a new programming language for industrial application development that isn't some form of block-structured, OO-based clone is asking for trouble.
I'm hopeful that over the next few years, as hardwar
Re: (Score:3, Informative)
I think you may be confusing me with either a Java evangelist or a C++ basher. I am neither, but I will go through the various points you raised one by one to clarify what I meant.
"Primitive, error-prone control flow constructs"? Such as?
Well, in terms of loops, things like foreach (a real one, not an awkward function template that doesn't work with built-in arrays) and labelled break/continue are no-brainers in any modern procedural language. However, in that area I was really thinking of more powerful things like pattern matching and guards on functions as sp
It is?! (Score:3, Informative)
How do you figure that? I work in low-level code, where performance really matters, and I still can't remember the last time I used pointer arithmetic. Sure, I use array indexing all the time, but the fact that this is semantically equivalent to pointer arithmetic in C++ is coincidental. As long as a language supports arrays (as in contiguous memory that supports fast random access — contrast with linked lists) and indirection (call it a pointer, a reference, a link, whatever you like — somethin
Re: (Score:3, Insightful)
3...2...1... (Score:2, Funny)
not bad... (Score:5, Interesting)
I haven't yet written (or debugged) any large programs in C++, so that could be why I'm still enthusastic. Perhaps after some time with the language I might see what everyone is so worked up about.
I'm reading through "Effective C++" by Scott Meyers, and although the language seems like it has its warts and complexity, it also offers a great deal of power and is a hell of a lot more fun to program in than C because you get the abstraction support of objects, namespaces etc. Streams - awsome. Shared (reference counting) pointers - awsome. Less need for the preprocessor - awsome. And the standard library (plus Boost too) is so vast... containers, algorithms, it's all there.
Python is still my favourite general-purpose language, but if I need something compiled, then I don't see what is so bad about C++. Sure, Objective-C is a far better approach to the "lets-make-a-better-C" idea, but I'm not sure how to use it (and the standard library) outside of OSX or GNUStep.
Re: (Score:2, Insightful)
C++ is anti-C (should have been named ~C):
can't tell what's going to happen just by looking at code
(you have to look way behind the scenes
Re:not bad... (Score:5, Funny)
Re: (Score:3, Insightful)
The problem is that there are so many ways to do things wrong in C++. Writing proper code takes experience. It doesn't help either that monsters like MFC easily mess things up.
I was going to quit coding C++ when I discovered Boost [boost.org] and wxWidgets [wxwidgets.org]. Now I don't want use anything else.
Re: (Score:3, Interesting)
I have compiled C++ code down for a PIC microcontrol
Watch the video (Score:3, Interesting)
The Future Is Already Here... (Score:2, Funny)
C++ needed improvements several years ago. (Score:4, Informative)
Stroustrup is, unlike most programmers, an excellent writer. His FAQ [att.com] is an example. Quote: "What's a good certification for C++ programmers? To the best of my knowledge, there isn't a good certification program for C++ programmers. That's a pity. A good certification program would be most useful. However, C++ lacks the central organization that would produce a solid certification program, and a certification program without authority or that focused on syntax would be worse than useless."
I'm certainly not an expert in this subject. However, I get the same impression from the words "C++ lacks the central organization" in that paragraph that I get from his other recent work. Something like, "What, me be a leader?"
Note that Java and C#, which are sometimes seen as replacements for C++, are proprietary languages from companies that are routinely mismanaged. If you use those languages, you partner with those companies, and it is possible that you too will suffer from their mismanagement. For that reason, there is a big need for strong leadership in maintaining a language unencumbered by issues of proprietary behavior.
Concerning Java, Dr. Stroustrup says [att.com] "Java isn't platform independent; it is a platform. Like Windows, it is a proprietary commercial platform. That is, you can write programs for Windows/Intel or Java/JVM, and in each case you are writing code for a platform owned by a single corporation and tweaked for the commercial benefit of that corporation."
Concerning C#, he says [att.com], "It will take a lot to persuade me that the world needs yet another proprietary language (YAPL). It will be especially hard to persuade me that it needs a language that is closely integrated with a specific proprietary operating system."
Again, I'm not an expert in this area, but it seems to me that Dr. Stroustrup tends to define his leadership narrowly and concern himself with programming constructs rather than larger issues such as extension, standardization, and certification of libraries, for example. About C++ garbage collection he says, partly: "See
It's amazing to me, but true leaders are very rare. After all these years, we still depend on Dr. Stroustrup, even though he has been less than a complete leader in the more social aspects of developing the C++ language, in my opinion.
Re: (Score:3, Insightful)
Again, I'm not an expert in this area, but it seems to me that Dr. Stroustrup tends to define his leadership narrowly and concern himself with programming constructs rather than larger issues such as extension, standardization, and certification of libraries, for example. About C++ garbage collection he says, partly: "See ... Hans-J. Boehm's site [att.com]". It seems to me that there are too many areas in which the C++ answer is "You can just go there", rather than "This is the standard, certified method."
Re:C++ needed improvements several years ago. (Score:4, Interesting)
Tried to post a reply, it failed (Score:4, Funny)
(sigh)
give it a rest (Score:3, Insightful)
What we need is a language with C++-like performance characteristics and a C-like syntax that will feel familiar to C/C++ programmers but without all the baggage of 30+ years of C history.
(And, no, neither Java nor C# are that language.)
What follows C++ is probably (Score:4, Interesting)
As a C++ programmer, I can tell you that it is nearly impossible for C++ to make coding, compiling and debugging easier without redesigning the language.
Coding: Name one C++ editor or IDE that offers accurate code completion or code refactoring (compared to other languages.) I've tried Source Insight, SlickEdit 2007, Visual Studio 2005, Understand for C++, Vim, etc. and it is clear C++ is too complex compared to most other mainstream programming languages.
Compiling: Implementing a C++ compiler is far too difficult. And compiling takes too long even when you use C++ idioms like pimpl.
Debugging: Sure, boost.org's smartpointers and RAII are helpful but how many hours do C++ programmers spend tracking down bugs that would've taken minutes (if not seconds) to track down or avoid in other programming languages?
Why do I use C++? Because it is compiled, has numerous 3rd-party libraries, and is widely used. Like Windows XP, it might be a pain but it is so widely used that you'll have no problems finding employers that will pay you to use it.
Simply put, we deserve something better than C++ and it isn't going to be enough to enhance C++ because a full redesign is needed in order to address the issues noted above. We need and deserve a language that takes what we've learned from C++ and is designed from the ground up to address those issues.
So far, D programming language seems to offer the best hope, and some really talented C++ gurus like Walter Bright and Andrei Alexandrescu are involved.
Re: (Score:3, Interesting)
Strostrup is now part of the problem. (Score:5, Interesting)
C++ has many problems. Some, like "an array is a pointer", it inherited from C. Some were mistakes in the original design that were later fixed, like unchecked downcasts, "this" as a pointer rather than a reference, and the lack of generics. And some are there because Strostrup is in denial about the problems, like the fact that the language gives no help with either thread or memory management.
Memory management remains the biggest problem. The fundamental problem is that C and C++ require the programmer to obsess on who owns what, while providing zero assistance in managing that information.There are ways out of this, involving syntax and compiler support for owning and non-owning pointers. But instead, attempts have been made to paper over the problem with templates. This never quite works, because for some things you still need a raw pointer, which breaks the abstraction. The history of auto_ptr (up to standard revision #4 now, I think) makes this clear.
Bolting on a garbage collector doesn't help much in a language with destructors; see the mess in Microsoft's "managed C++". If you're going to go with a garbage collected approach, it's better to go to a language designed for it, like Java.
Most of the standards effort is going into template features that few will use and fewer still will use well. Trying to use the template expansion engine as a general purpose macro system is a terrible idea for production code. But it has a big fan club on the standards committee. Worse, the C++ commitee does very little to improve language safety and reliability. Which is why we still have buffer overflows in C++ code, fifteen years in.
Incidentally, none of this has anything to do with C++ being compiled directly to machine code. There have been safer compilable languages usable for system-level programming. Modula 3 was probably as good as it got. But that language died when DEC went under. It's possible to hard-compile Java; there's a version of GCC for that, and it's getting some interest in the embedded community. The problem could be fixed. But it won't be, because the people responsible are in denial.
Re: (Score:3, Insightful)
No thread management : this is an OS-s
Re: (Score:3, Insightful)
IMHO, I think: .NET languages. You can't have the ability to do whatever you want to a variable, and the ability to be safe from it simultaneously.
a) If you want garbage collection, you have to leave C++ and go to a truly safe language like Java or one of the
b) If you are trying to code a GUI application with cool RAD development tools (like VisualBasic and Eclipse), then C++ is the wrong language. It was never built to be quick and easy for the programmer. Additionally, the windows based object-orient
Re: (Score:3, Insightful)
Obviously, you never used modern C++ extensively.
Templates are not a ma
null keyword rant (Score:3, Insightful)
C++ is dying while C is thriving (Score:3, Interesting)
Re:C Plus Plus Bye Bye (Score:5, Informative)
Not that job listings are a particularly good indicator of anything, but from Monster:
The C++ ones include plenty of new systems.
Re:C Plus Plus Bye Bye (Score:4, Interesting)
but, if we talk about managed languages, I'd go straight for Python or Common Lisp.
How good it is, isnt a major plus (Score:2)
Search for C++ and find 10000s of results/samples/etc....
People do more than just back end database integration to web front ends. The day intel implements C# decoding on CPU side to make it as fast
or faster than native code, that might move a LOT OF mindset to it.
Re: (Score:2)
but, if we talk about managed languages, I'd go straight for Python or Common Lisp.
I've heard a few people saying this. Is Common Lisp really an industrial strength development tool? I thought it was just for functional programming acolytes and emacs power users.
Peter
Re: (Score:3, Interesting)
Sadly, I generate new Fortran code on a regular basis. I wish I was generating new C++