The Future of C++ As Seen By Its Creator
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."
...transcript, anyone? i hate watching or listening to vids at work.
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't so impeachment-obsessed, they would have slapped him with anticompetitive sanctions. What is a doctor doing talking about languages anyhow, he should leave that to linguists like Alan Cox and stick to paediatric medicine.
Or, to rephrase, give me text links or give me fatal and catastrophic loss of message and meaning
The Banjo Players Must Die!
Video or audio just for the sake of being flashy is a dumb idea and I usually won't watch or listen. If I want audio and video I'll devote my full attention to my TV feed. Otherwise when I'm accessing information on the Internet I want text. I can read it far faster than someone speaks on a video interview for one thing, and for another text lends itself far better to (human)multitasking than video or audio does.
The future of BASIC has been envisioned as a language to do more and more intricate beeping loops in high school classes.
what about extinguish? jk, i love visual studio... (there actually are some nice features, imo.)
"Banking establishments are more dangerous than standing armies." -Thomas Jefferson
Great - I've been hearing a lot about C-Pound.
Meta will eat itself
Please use the torrents, and keep those torrent up and running after you're done d/l'ing.
o rrent Ogg/Theora (Recommended)o rrent XviDo rrent MP4o rrent MPEG
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.
Is that they have given 95% of the development time toward managed languages.
.NET has advanced from 2.0 to 3.5 with huge changes like WPF, WCF, LINQ, etc. They have all but forgotten C++.
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,
Please implement delegates and get rid of the method pointers.
Thank you.
It would be fine if there was a functional version of this:
texttospeech --output-format simplehtml vid.txt
Not that job listings are a particularly good indicator of anything, but from Monster:
The C++ ones include plenty of new systems.
"The Milliard Gargantubrain? A mere abacus - mention it not."
C99 is driven by customer demand. And I don't mean as in a bunch of geeks saying 'implement ALL of C99 now!' but as in they work with their enterprise customers to prioritize features.
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.
to Stroustrup, but don't you think it's a bit ironic that the creator of such a monstrosity is talking about ideal of programming languages? And don't even get me into the the differences between implementations!
Yeah, go ahead, bring out your flame hose. Even if I had to burn in hell, this thing is still a monstrosity.
If you really understand C++, migrating to C# is very easy. C#->C++ however...
but, if we talk about managed languages, I'd go straight for Python or Common Lisp.
This sig does not contain any SCO code.
Whats the point of something good, when you have a problem and google it and find zero results every single time.
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.
Liberty freedom are no1, not dicks in suits.
Why are you using code generation tools to write code that is performance sensitive? Of course you avoid indirection at all costs in code that has to be fast. It would have been equally as slow if you had used pure OO code in C.
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
and let the syntax criticizing begin ;)
Recently, I've just started getting into C++, and I can't understand why so many people hate the language with such a passion. The thing is, if you need/want to write your program in a compiled language with plenty of library support, then aside from C, what options are there? I'm not trying to start a flamewar, but I figure if I want to say use C (or other C++) libraries and a compiled language then I feel C++ is much better option than C. One very smart and experienced C programmer I know hates C++ with a passion complaining that "it's too complex" and just rejecting it outright.
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.
I've personally heard from a friend that Lisp is pretty damn powerful, particularly in the terms of calcuations and the like, so I can see it being used for some backend applications. Although, I personally find Lisp more obscure than C++, or C#, but that's just me.
This is slashdot, a magical land where functional languages are popular and scripting languages are fast...
As an autodidact I'm easily bored by overly long and dry technical presentations of what could be read through in a couple of minutes, but this video is getting very interesting and funny after the first couple if minutes. Lots of insight into the process of creating the new standards and and all the thoughts that go into it, mixed with anecdotes, random trivia and geek humor by Bjarne Stroustrup himself. I'm actually considering downloading the 700mb xvid version of the talk and making me some popcorn to go with it. IMO, even if you're not a C++ geek it's actually worth watching.
:/- spoon(_).
And it looks something like Haskell. Static typing, lazy evaluation, high-level parallelism, pure functionality, explicit imperative-ness. Heck, monads even sound like something from the future.
Dr. Stroustrup made a great contribution by designing the C++ language. However, in recent years it seems to me that he has been taking a leisurely approach to making improvements.
... Hans-J. Boehm's site". 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."
Stroustrup is, unlike most programmers, an excellent writer. His FAQ 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 "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, "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.
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 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.) This hurts especially on one of the platforms that devkitARM supports, which has only 262,144 bytes of program RAM and no suitable shared library mechanism. There are some people who claim to have reduced libstdc++'s <iostream> overhead by a factor of four, but they're not revealing how they did it other than a vague "RTFM".
Java: More than 1000
Someone had to mention his other famous interview.
The way I see C++ these days: it might be your only choice if you are building a mass-market "horizontal" app (like, say, mozilla), and even then I would consider alternatives such as Objective C or plain ANSI C. But for "enterprise" apps, it is absolutely dreadful! Like someone said, it is the language with the most error-inducing features.
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
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
What is an "industrial strength development tool"?
Lisp has advantages and disadvantages, like anything else. Prejudice will lead you nowere.
Rethinking email
What is an "industrial strength development tool"?
A programming language which you can use to develop, debug and distribute a real-world, functioning application in, I'm guessing. Something like, say, Firefox. Use native APIs, native GUIs, run at decent speed, behave like a native app.
Nothing without pointer arithmetics will ever replace C/C++. D is a candidate, but unlikely. Eiffel is out.
Rethinking email
C++ has gone the way of Fortran
...
Sadly, I generate new Fortran code on a regular basis. I wish I was generating new C++
Amen.
I didn't think so.
Been there, had to deal with that. No more.
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 — something you can build graph-like data structures with) then I don't see any need for pointer arithmetic at all.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
This is why I hate to work in C++:
1) Syntactic ambiguity: you can't tell from a glance whether your function call is sending a copy of an object or a reference to an object. A fault with C also, but this should've been fixed
2) Templates: buggy and inefficient. I would've preferred STL to work on a generic object class.
3) RTTI: Still not sure what this is getting you in C++. Dynamic casts? Unfortunately you have to choose to enable or disable it per-file, whereas having a base object class would let you do it per-object.
4) Operator Overloading: another case of ambiguity. You'll never be quite sure what your code is doing.
5) Lack of Garbage Collection: I would've at least liked a reference counting pointer without having to download BOOST.
6) Non-standard ABI: C object files are reusable across multiple compilers, since their format is standardized. In C++ it's not. Everything must be compiled in the same version of the same compiler.
That's just what I came up with on my own. I'm sure other people have more problems.
I thought that at linking time, only the parts of the library that are used are mapped to a symbol table. Or is it that it only links whole libraries if they're used, all or nothing? I haven't taken compiler design in college yet, but after SPARC assembly, well... I'm scared I'll lose whatever innocence I have left.
If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.
One program that was created using Common Lisp is Maxima.
I tried to post a comment on this story, but was unable to upload my video response.
(sigh)
Site has been /.ed; in the video, does he alleviate viewer boredom by occasionally pulling a string to make a model bird flap its wings?
Can we get a "-1 Wrong" moderation option?
First of all, half-assed interactive modes like ghci and hugs are not good enough, there needs to be a real repl like lisp, scheme, ocaml, etc. Second, GHC is insanely slow, it takes ages to compile even simple haskell code, and its a serious hinderance to productivity. Third, dynamic loading needs to be supported in the standard library, not a 3rd party library that is unmaintained and no longer compiles. Fourth, its arguable wether or not laziness is a virtue. There's plenty of times where eager evaluation is helpful, and the times that laziness is helpful are comparatively rare. Explicity laziness like scheme and ocaml offer is likely a better way to go. And of course, a much better GC, which is multithreaded so the entire program doesn't need to be paused to run a gc.
Good luck doing business applications that need rules based on dynamic delegates and such with LISP.
Got a pet feature you like? Fine, it gets added to the language. Never mind if it is redundant. Never mind if it causes the standard to be ambiguous or self-contradictory. Never mind if it is impossible to implement. Never mind if it will cause error messages to be misleading.
There exist C programmers. C++ programmers do not exist, because nobody knows the whole language. Lots of people can handle a subset of C++. (which they THINK is big, but is not) Put two of these C++ subset programmers on the same project and you have a problem. At least one of them, often both, is writing code that the other doesn't really fully understand.
You'd think we'd have learned from the disaster of trigraphs, but no!
Can anybody point to a real project (not an obfuscated C++ contest or C++ compiler test) that uses digraphs?
This truly is a dumb-ass make-work "feature" for everyone. Don't we all just love how we sometimes need to add a random ugly little space to our source code to keep the compiler from fucking up?
There's no way to implement clean callback interfaces in C++ without tons of noisy syntax. Delegates are such a natural idea and would be such a nice fit for C++ (static type checking, fixed value size). The method pointers have absolutely no use and have weird semantics.
Delegates deal with 90% of all practical uses of closures, but I guess acknowledging that would be too much for some people's pride.
C++ is my main development language right now, but I have to say: please give it a rest. C++ is what it is, and I don't think adding even more crap to it is going to make it any better.
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.)
always wondered who the strstr function was named after...
a new language like D and not just an improved C++.
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.
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.
OpenJDK, being yet another fork of Java, really doesn't address his concerns about the fact that Java itself is a platform and is still controlled by a single corporation.
So by that definition, Java is not an industrial strength development tool. The entirety of the financial world disagrees here.
Could it really have been that difficult to add a "null" keyword to C++? "bool" was cleanly added to C99. We could have had "null" too. I accept the argument that (void*)() isn't typesafe but then the language expects you to throw around a literal integer "0" that is imbued with magical properties. How is this a cleaner solution? This magic 0 violates the type safety principal that got us into this rathole to begin with since it can be assigned to non-integral types (pointers). It can also transform itself into another value since the null address isn't necessarily 0 on all platforms.
I am becoming gerund, destroyer of verbs.
funny.
O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
but, if we talk about managed languages, I'd go straight for Python or Common Lisp.
:)
Meh, I'll take Smalltalk, thanks.
I guess the whole parent post here is that C++ isn't tolerant of sloppy coding practices, and allows programmers to seriously hose themselves up because of it.
I've been looking at D, and it seems to address a lot of these concerns while cutting the "complexity" of C++, and borrowing things like "foreach" from other new languages. It's looking interesting, but not quite there yet for me.
Java's only real strength is that native code (native to Java's VM) can be run anywhere, but anything where there's a the runtime environment to run it. The financial word must note how slow Java applications are, I hope. (In comparison to so many other languages.)
Comment removed based on user account deletion
Read my lisp: it's a lot of smalltalk !
The guys who wrote "Jak & Daxter" thought so.
Dewey, what part of this looks like authorities should be involved?
Better yet. It seems C++ is the only "industrial strength development tool". The "behave like a native app" part assures that.
Thank God he said nothing about time to market :)
Rethinking email
Virtual machines like the JVM are all the rage nowadays. Sure they are cross-platform and have some benefits, but they will never replace true natively built code. C++ is a powerful tool that I use daily, and I would said it was anything but dying.
/. C++ fanboy.
C++ has a lot of different features, which is why some find it confusing, but it is those many features which allow the language to be so flexible. Whereas a language, again picking on java, such as java forces the programmer to follow a very strict object-oriented form, C++ gives the programmer a choice as to how they want to write their code. I can write very object-oriented code, with features java doesn't support such as operator overloading and multiple inheritance, or I can write very functional-based code that resembles C. Also, C++ gives the programmer true control over what is going on inside their application. In java for example, objects are passed by reference and primitives are passed by value. In C++, I can specify which of the two I want for either type on a per argument basis. Another example is exceptions, which are known to be a rather slow feature in a language. In a language such as Java, again sorry java fans, exceptions are an integral part of the runtime interpreter. In C++, if I find that I don't wish to use exceptions, I can disable support for them and regain that performance boost that was lost at the hands of exception checking.
Alright, alright..I am done ranting for now. All I guess I am trying to say is that yeah, maybe C++ is a bit more confusing to a beginner then interpreted languages and the like, but it is those features which can be confusing that allow a programmer to really control their code. The better the programmer understands what the code they are writing is doing, the better code they will write. That being said, long live bit flags, unsigned variable types, multiple inheritance, operator overloading and raw pointers!
-Your Local
Klingon Software is not released, it escapes, inflicting terrible damage onto the enemy as it does
It seems to me that it will be several years before Java is truly open, if ever.
Second, why did Sun and Microsoft want to make a new language, particularly when they don't use those languages internally? My answer is that Java and C# can be easily decompiled, making it easier for Sun and Microsoft to copy other people's code.
Maybe with Mono?
"That which does not kill us makes us stranger." -Trevor Goodchild
I think the focus on compatibility with C is both a blessing and a curse for C++. If it hadn't been, it would probably never have taken off; and now, it's too late to "clean up" the language.
On the other hand, there are plenty of programmers who knew C and became "C++ programmers" by memorizing that "malloc" is now spelled "new".
(ooh: captcha was "template")
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 recognized the Cobol program, but were too young to recognize Rocky and Bullwinkle...
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
Thanks for your comment. I torrented the entire video, but have watched only the beginning.
I heard the [ recently deceased ] inventor of FORTRAN talk about the future of computer programming in the late 1980s. Kind of remineded me Bjorn's talk. You can only take a dead horse so far. Incidentally Backus was working on Functional Programming languages at that time, kind of APL for the those with long memories.
Other than code obfuscation (which is getting less and less important), if you're just writing code why do you care if your language is interpreted or compiled?
If you have specific requirements like performance or packaging, state them as such.
If you implement your problem in various languages, I think you'll find that "compiled vs interpreted" is not a very useful distinction. The performance of the resulting application will depend completely on the quality of the compiler/interpreter, and not on whether it's a compiler or interpreter.
Unlimited growth == Cancer.
I want to argue that C syntax is developed to work only a CPU. If you want to make a code for a GPU for example there is a language with similar syntax to C say HLSL or GLSL or Cg. And the future is GPU, FPGA, parallel computing, multithreading clustering and specialized hardware. As long as C cannot extend its primitives to vertor3f or matrix44 and able to unified all the hardware improvements this language is dead in less than one decade or sooner. Maybe it must be something between C and the assembler, lets say B?
For me C++ is also almost dead. As a programmer I need something that works and makes my job easier. And I cannot wait to have multithreading, garbage collector, metaprogramming, modularity, standard GUIs and so on while this features has been running a loong ago, since the mid 90's. I like some aspects of C# and I dislike some other aspects, but rather prefer a lot over C++, nevertheless its design has a breach between native C and I think it is intentionally.
I agree to use the right tool for the right job. Well I have a problem. Maybe someone can help me. I have to use a library that has been developed during 8 years and it is made in C. No mention the library is huge and it takes 15 minutes to compile and to miss "xxx.h" makes me waste ours of work time. Now let's move some of the core algorithms to run them in a GPU. So let's introduce another compiler (CUDA if you ask) to the project. But now it comes the best. Let's add another layer so we can have a GUI application over OpenGL. Cannot be C. C++ is insane. Maybe C#, Java? How I link it to the core? This project is insane, isn't it?
I have seen D for a while and it looks like very promising I think I will start to support it with some modest contribution.
There are several Lisp-like DSLs (scheme for GIMP, Emacs Lisp), but I don't think that implies at all that Lisp is a good general purpose language for developing applications. Honestly I think it's just an easy language to implement (poorly :-). My understanding is that different Lisps have different sets of libraries and compatibility issues. Lisp has had 50 years to take over the world and it hasn't.
At 21:33 minutes into the video, Dr. Stroustrup says, "We don't have a marketing organization."
I think C++ needs a marketing organization. At present C++ suffers enormously from ignorance concerning the language and concerning how other languages compare, in my opinion.
For example, what about the ease of decompilation of Java and C#? Why don't Sun and Microsoft write their products in those languages? Why are those languages made for others to use? What economic advantage is there in providing a language that only other people will use?
I can't get the stupid thing to download, been trying ever since the article was posted. Yea, real genius guys, put a 660 MB file on a server that can support a maximum of 5k / second transfers and resets your connection after you download 10MB. Put up a f'ing transcript.
Java is not slow. It's not blazingly fast either, but it sure isn't slow. What financial institutions do is to throw twice the hardware at the problem, instead of 5 times the manpower. And funnily enough, I love C++, and love to hate Java, but not for its speed.
At 29:41 minutes, Dr. Stroustrup says, "People don't really want to worry about these big things", referring to issues that require a lot of thought.
That's where more leadership is needed. Perhaps a special committee could be formed and advertised as a group of people who must have plenty of available brainpower. Most people use almost all their available brainpower at work, so should not join such a committee.
Just take a look to this as an example to how frustrating, clumsy and unintuitive C++ can be.
.Net technology.
.Net there is a 3.0 version coming and everybody programming in C#.
http://www.allegro.cc/forums/thread/552652
A dozen of forms to write the same simple task and none of them and the most intuitive is incorrect and a dozen more that leads to memory fragmentation or memory leaks.
But look the new C++09.
http://en.wikipedia.org/wiki/C++0x
It is a montruosity of language. It will be even more unintuitive, harder and frustrating.
My fellows are not programmers, they are mathematicias and engineers. I am the only one who has a little knodlegde to make an average robust code, but I am still making embarrased mistakes. In my job I had a whole week wasted because someone made a memory leak.
Bjarne Stroustrup said that we should not relay on propietary languages. In the future, while propietary languages will be incompatibles, certainly and he promise, C++ will be still there.
I see another future!. I see Bjarne Stroustrup is retired and fishing in a lake and the whole old school with him. C++ slowly abandoned without ceremony while the fresh blood are programming in C# using
There are too many aspects that a dislike on C#, but. Hey! Out of there, there are real people with real jobs that need their work done. At this moment C# is a light year beyond. In least than five years of existence of
No matters how we cry out about the devil strategies of M$ and the poor performance of its products. That M$ blah...blah.... Every one will be dancing under M$ song. This time they are doing damn good well.
And if the Linux community still relay in C++ as their main language the community will be knocked down before knowing who strikes you. In this world we should think fast, move fast or your are obsolette. C++ is still there because of its enormous inertia. But it is a dying language.
Another example: math vectors.
Basic: template < typename NumericT, unsigned int Dimension > class Vec;
There are functions for adding, subtracting, normalizing, calculating dot products etc. of a Vec class.
And for Vec < NumericT, 3 > there is also a function cross(), which calculates the cross product of 3D vectors.
Did Vec fail? No, of course not. It is an improvement; I *add* functionality for special cases (here, a cross product). For 4-D vectors, I could add functionality to treat the vector as a quaternion for example. You call this a failure?
This sig does not contain any SCO code.
What is odd to me is that I see new stuff written in C all the time for embedded systems, *nix code, drivers, etc. It's odd because C++ is merely language extensions on top of C. There's really no down-side to using C++ at all (queue the thread of trolls telling me how awful OOP is and why C++ forces them to use it). My guess is that the problem is g++: I am currently writing some code for the Nintendo DS, and if I compile it in gcc the code is 100k smaller than when I compile the same thing in g++, even before using the OOP features. I don't know why, but I know other people have reported the same issues. This is perpetuatating the myths that C++ is bloated. Really, we need C++ in a lot of ways but the tools are making it look bad.