I mean, this is the same bunch of creepy cheap bastards who charge households a license fee for EVERY TV in their home!
With which they fund the BBC, a widely respected media organisation about which most foreign citizens can only have wet dreams.
And it only applies if you have A/V equipment capable of actually receiving and displaying broadcast TV. If your TV is detuned and not connected to an aerial because you only use it to watch DVDs and play computer games, you don't have to pay a licence fee.
There are always debates about exactly how the BBC should be funded, particularly given that those who listen to BBC radio and use the BBC web site but don't have a TV don't pay for it. Still, in every survey of the British public I've ever seen, and indeed IME, the overwhelming majority want to keep the BBC even if it means paying the licence fee.
As I read the relevant statute, we have no right to format shift or even to create a backup of a purchased copyrighted work
FWIW, that's our understanding at the dancing club.
IIRC, making back-ups of software is legal in the UK, but that's a separate provision elsewhere in law, and doesn't cover backing up music CDs and such. Yes, that's daft, given that music CDs get scratched to unplayability PDQ when you play them for several hours six evenings a week, while most software CDs probably leave the box about twice in their lifetime, but there you go.
I help run a large dancing club in the UK that regularly deals with PPL and such. Sorry, but the parent post is completely wrong on several counts.
Even to play the original media at public classes and special events requires a licence here if you don't hold the copyright. We submit a form to PPL each year, basically describing the number of hours of music we'll be playing that year, the venues we'll be using, and what the tracks we'll be playing are. (These are necessarily approximations, and FWIW this has never caused us a problem, not that that means much these days.) We then get told how much we have to pay for the rights to play the music as requested. This is not a flat rate, so I have no idea where the figures quoted by others in this discussion have come from.
This is a wholly separate issue to format-shifting, which is illegal by default under UK copyright law. Just because you've bought an MP3 player or your laptop has media playing software doesn't actually give you the right to put any of your CD collection on it, and copying a CD onto tape to play in your old car cassette deck is against the rules. No, I'm not kidding. I haven't read the latest PPL guidelines that apply here yet, but I'm guessing (as in, check it yourself before you rely on it!) that this licence actually covers the format-shifting required to get the material onto the other system. It may or may not cover the same things as the regular PPL licence as well, but I'm guessing not if it's a flat rate or everyone would be doing it (our PPL "contribution" is well over £200 per year).
If you're in the UK and think that charging for a CD, charging for the right to use it in public performances, and charging a significant amount to play the music you've already paid for to an audience you've already paid for, then you might like to consider contributing to the Gowers review of UK IP law when it starts consulting in Febuary 2006.
Re:Don't talk to me about Boost
on
Demise of C++?
·
· Score: 1
Thanks for the reply. We'd love to be doing several of the things that you suggest, but alas the practicalities prevent it.
For example, we ship libraries, not end user products. That means we have to build and test with the same compilers that our customers use on each platform, which may well not be gcc. We also supply source code to some customers who build on more obscure platforms, so our code has to be fairly lowest-common-denominator to avoid tripping these folks up. In any case, our code is heavily mathematical, and g++ is still some way behind the field when it comes to optimisations for now. We do support it on an increasing number of platforms as its improvements catch up with the "home team" compiler, but it's got a way to go before it catches things like Intel C++ or Visual C++.
The build process isn't a problem for us. We long ago wrote our own system for managing makefiles on different platforms portably, not dissimilar to bjam.
As for exceptions, yes, architecturally they would be useful. Unfortunately, the product I work on has been around for a lot longer than exceptions in C++ have, and as you're probably aware, retrofitting an exception framework onto a project that wasn't design to use them is almost always a losing option. They're a great tool, but IME to get the most out of them, they really need to be used (or at least planned for) from the start.
Re:Don't talk to me about Boost
on
Demise of C++?
·
· Score: 1
Damn near every modern CADD program is writtenin C++. Oh and BOOST kicks ass. Obviously you don't write scientific software of system level software or you would see some of the obvious advantages of what BOOST has to offer.
I do write libraries for use in CAD software, and we don't use Boost, or any templates or exceptions at all, for that matter. We'd love to, but a lot of the more obscure platforms we have to support still don't have compilers that are up to the job. The problem with the pace of standardisation in C++ isn't the standards committee, it's that nearly a decade later, there are still absurd, trivial bits missing on many minor platforms, and it's not even worth thinking about using the "new" bits.
Sorry, rereading my previous post I didn't describe what I did very well.:-(
Have you tried the following? (I don't think I needed all of this, but IIRC it was the "total" fix described in one of the Thunderbird forum posts.)
With Thunderbird not running, back-up all files and directories associated with your problem folder(s).
Start Thunderbird.
Create a new, empty folder, and copy any real e-mails from your problem folder to it.
Close Thunderbird.
Delete the index file for your new folder.
Delete the files and directories associated with the original folder. Replace them with the equivalents for an empty placeholder folder, as taken from a newly created profile or similar.
Start Thunderbird. (It should recreate the missing index file for your new folder from scratch.)
Compact the new folder. (This should work properly now, where it probably wouldn't have worked on the original because of the corrupt index.)
Copy the messages from your new folder back to their original home, and delete the new folder.
Remember that Thunderbird needs its folders compacting regularly, and notice that Google can find you instructions on how to set it to do this automatically using a devious, not-very-well-documented hack.
Also, be aware that if you're using the global inbox feature, you can get stuck with improperly indexed inboxes for individual accounts, which you can't access directly as long as the global inbox is enabled. You might need to switch it off temporarily, and apply the fix above to any inboxes for separate accounts that have unexpectedly large data files on the disk, before reactivating the global inbox.
I used to have a similar problem. You get phantom unread messages reported, even in empty folders, and sometimes the count goes up when you click on the folder, right? If that's the case, then it could be the same corrupt data file problem I had.
The solution was (with Thunderbird not running) to copy the folder data in your profile safely elsewhere just in case, and then delete the index file for the offending folder. When you restart Thunderbird, it detects the missing index file and rebuilds it, correctly this time. Bingo, no more phantom unread messages and related irritations.
Apparently the corruption happens if you don't compact your folders regularly and they get too big. Don't ask me why a serious e-mail client requires this level of user intervention to perform routine maintenance on its data files that can cause serious errors if forgotten, because I have no idea.:-)
If you need the details of which files are which, it's worth Googling for the symptoms of the problem; there are a couple of sites with quite detailed analyses that had appeared fairly recently when I had to fix this a few weeks ago.
Numeracy levels among the general population are dropping.
Fitness levels among the general population are dropping.
Communication skills among the general population are dropping.
Basic survivial skills among the general population are dropping.
Overall result: many people find themselves in worse situations than they would have been a few years ago, due to over-reliance on technology and lack of basic knowledge. If people learned how to do the basics properly before learning to use technology to make it easier, a lot of problems in today's world would go away.
It seems we have very different experiences here. Maybe it's because I'm based in the UK, and our IT industry is moving in a different direction to that in Germany.
I don't personally write games, but a couple of friends do, and their code is almost entirely C++.
Of course there are applications that end users rely on for mathematical modelling, but what are they written in? It's usually C++.
I used to work for a company that wrote instrument control applications for customers in diverse industries. Everything we wrote was written in C++ (though sometimes the firmware and/or device drivers we talked to were written in C).
I'm afraid you're completely wrong about CAx. My current employer makes libraries used, quite literally, in almost every major CAD application in the world, together with countless smaller developments. Several of the big CAD firms have offices here, and I have friends working at most of them. I promise you, with complete confidence, that the vast majority of development in this industry is done using C++.
I don't think there's much doubt about system tools. Old ones were written in C, and many are still in use, but newer things are mostly C++ now IME. Just pick you favourite compiler or VM and check what language it's written in.
Perhaps it's a matter of perspective, or your industry has just evolved differently to ours, but IME all of the above categories are dominated by C++ today.
CAD/CAM/CAE and similar heavily numerical applications?
System tools?
Telecomms?
(I realise that C and other languages are also used heavily in some of these fields, I'm just giving some examples of areas where C++ has been very successful.)
I suspect we're mostly in agreement here. The sorts of redundant comment I'm talking about do include banner comments at the top of each function that repeat what the line of code below them used to say, and classics like "// Increments i" after the line "++i;". However, they also include (for example) comments that basically repeat what's in the design documentation, but tied into the implementation. These don't really help anyone, but they do waste space, and as I mentioned before, they tend to obscure the really useful comments. If 4/5 comments in a 30-line function are basically repeating what's better said elsewhere, even if correct, then it reduces the impact of the last 1/5 significantly, IMHO.
His last few films have been very much geared toward propping up the ideals of the state. --Painting the law to look like an immovable edifice we must all simply accept regardless of how fair or unfair the law really is. And that any defiance which happens, must do so within the boundaries set out by the law itself.
I guess you're not going as far back as Minority Report, then?
I agree about the prequel Star Wars trilogy, though; I think the parallels are now so obvious that it's even in my sig, as least until I find something I like better tomorrow.
I'm terribly sorry, but I do believe you'll find it's the media group that doesn't know what a DVD is. If they did, they wouldn't be in this rather unfortunate predicament, you see? Do keep up, old chap.
Nah, this is only going to mean missing award or two, and it'll probably win plenty of others. To risk really serious trouble, you'd have to do something really serious with DRM, like mess up the security of millions of computers so they're vulnerable to viruses or something, and I'm sure no major media company would ever be that stupid.
The theory goes that if there wasn't region encoding, the distribution companies wouldn't be willing to pay as much for their monopoly rights to distribute a film in a region, as everyone would buy the version with the extras and packaging they wanted at the cheapest price they could find wherever it came from in the world, rather than pay full retail price in their local country for the version their distributor has decided to produce.
Hey, we used to use words like "free trade" and "capitalism" to describe that sort of behaviour, and they were supposed to be good things. I guess words like "anticompetitive" and "monopoly abuse" have gone out of fashion with government lawyers these days...
I never claimed to know much about C# (but the person supplying the information to me certainly does). And I realise that the overheads are probably per-object. I'd be interested to know how this applies to, say, an integer that is a member of a class rather than an array. Are there overheads for thread safety, padding, etc. then?
In any case, my point is that if this kind of overhead applies even in some common circumstances, then that is a big minus point for C# as a possible language in many contexts. One of the biggest strengths of C++ is the zero overhead approach, and it's hard to see any language that doesn't at least approach a comparable standard making a dent in C++'s core market.
This entire thread is a complete straw man: you may be comparing cout with puts but the original post by OzPeter, and the rest of the discussion elsewhere, is talking about whether using a C++ compiler inherently slows things down. It doesn't, and to say otherwise is simply and demonstrably wrong.
I'm not going to do what you did and put words into Bjarne's mouth, though I will say that I've personally never heard him claim that using puts isn't writing C++, and I've seen him write on many occasions that the compatibility with C has been a major strength of C++ from the start. He may not recommend using the C-style output routines, but that's a different thing entirely.
In any case, you can't start arguing about speed based on a single, biased example (particularly one that wouldn't be apples-to-apples even if you were comparing recommended approaches, on account of your handling of newlines). If you're going to do that, I'll suggest you go try sorting a few arrays of thousands of entries with qsort, and then try again with C++'s std::sort, and see how you do. It's just as biased an example, if not more so, and it'll come down heavily in C++'s favour with any half-decent C++ compiler. Now, which is more likely to be relevant to performance, the speed of printing a line of text to the standard output stream, or the sorting of a large array?
There are fair criticisms one could make of C++, but I'm afraid your posts in this case are little more than straw man attacks and provably false conjecture. The reason there are so many ill-founded rumours flying around about C++ isn't because of people like Bjarne, it's because of people like you.
Re:Balkanization
on
Demise of C++?
·
· Score: 2, Insightful
Is that the same C# that a friend uses, which apparently requires 12 bytes of memory to store a single 32-bit integer?
If that's accurate, then I don't think C++ has much to fear from C# in its natural areas of strength...
With the rise of lulu.com (a print-on-demand "publisher" to whom you upload a.pdf which they make into books for sale on Amazon complete with ISBN) we have lowered the barrier to entry for publishing to the lowest common denominator.
Given that looking through the first few IT books I find random things with random titles, where the comments describe the contents as the words "f***ing w**kers" or something similar, I'm guessing that lulu.com isn't the best ambassador for self-publishing around...
If only we had really reached a crossroads
on
Demise of C++?
·
· Score: 1
C++ has always taken what's good (STL), and dropped what wasn't (auto_ptr), and now more than ever developers using it will require assistance in understanding some of the latest developments in the language (Template MetaProgramming, concepts).
I think you've hit the problem with today's programming world right there. The STL -- or rather, the part of the C++ standard library that comes from Stepanov's original ideas -- actually isn't very good.
Don't get me wrong, it was a very interesting concept, and has some great ideas. It's just that the potential was never realised in practice within the C++ framework. The containers and iterators relationship is a decent start, but the toolbox isn't full yet: the support is poor for concepts like ranges (and maps between ranges from different containers), sources and sinks (or "generators" or whatever we're calling open-ended ranges this week), indexing... And of course, the algorithms would be great if C++ had good support for closures/lambda expressions/whatever, but as it stands it's often better to write a simple loop than to use one of the standard algorithms.
In fact, the STL suffers from much the same core problem as C++ itself: it had a lot of potential and introduced new ideas in its day, but with the benefit of hindsight that we now have, the design seems clunky, the quality is patchy, and we could do a lot better by starting over and learning from what worked and what didn't last time. I'm just waiting for someone to do that; it seems to me that there's an obvious and enormous market waiting for the natural heir to C++ (which doesn't look much like Java, C# or D, IMNSHO).
When that successor (or possibly several successors with some common advantages but different foci) does arrive, then we'll have your crossroads, and C++ and the STL can be retired to a well-earned place in programming history. Until then, they're the best we've got for a lot of jobs, but that still doesn't make them good on an absolute scale.
I think the reason the CUJ has died is very simple: it wasn't very good any more.
A few years ago, there would be many useful things going on in the C++ world. Then there would be many useful articles to accompany them in the C++ and more general programming press.
Today, the C++ world seems to have degenerated into two camps: the naive group who still think it's great for everything and love playing with intricate templatey stuff just because they can, and the much larger, practical group, who continue to use it because as a pragmatic tool, it remains unrivalled for many programming jobs. Everyone else has long since jumped ship.
What the C++ press should have been doing is continuing to educate the programming population. One only has to read any programming language thread on Slashdot to see how many people still don't understand simple but very effective ideas like RAII, never mind the power of C++'s object/exception model in comparison to some of the alternatives. But today, most of the C++ press is just the same in-crowd of authors repeating the same tired mantras over and over again. And it's almost all negative: I'm surprised no-one's ever written "50,000 Ways Not To Blow The Whole Leg Off" or something.
As a practical tool, C++ remains one of the most useful and adaptable languages around. It's just a shame that almost none of the professional authors seems to want to talk about how to use it well. Maybe it's just easier to find yet another obscure way to break it, or yet another way to reproduce an example from chapter 1 of a functional programming textbook using only 150 lines of template code. Until your magazine fails because no-one cares anymore, anyway.
Submitting just to gain attribution is the wrong reason to do it.
That may well be true, but using someone else's material without permission and attribution is just bad manners, unless you're very clear up front that this will be the case.
I've submitted a handful of articles to/. over the years. I don't know what my acceptance rate is, probably around 40-60% under my name, and most of the rest appear in some other form. Personally, I submit the articles in the hope that they'll prompt some interesting or informative discussion, and apparently I'm doing reasonably well at picking the targets for this forum. I don't think I've ever linked to a personal URL from the article, and I only ever submit under my/. nickname, but I'd still consider it rude if my text appeared as if posted by some random AC instead.
With which they fund the BBC, a widely respected media organisation about which most foreign citizens can only have wet dreams.
And it only applies if you have A/V equipment capable of actually receiving and displaying broadcast TV. If your TV is detuned and not connected to an aerial because you only use it to watch DVDs and play computer games, you don't have to pay a licence fee.
There are always debates about exactly how the BBC should be funded, particularly given that those who listen to BBC radio and use the BBC web site but don't have a TV don't pay for it. Still, in every survey of the British public I've ever seen, and indeed IME, the overwhelming majority want to keep the BBC even if it means paying the licence fee.
FWIW, that's our understanding at the dancing club.
IIRC, making back-ups of software is legal in the UK, but that's a separate provision elsewhere in law, and doesn't cover backing up music CDs and such. Yes, that's daft, given that music CDs get scratched to unplayability PDQ when you play them for several hours six evenings a week, while most software CDs probably leave the box about twice in their lifetime, but there you go.
I help run a large dancing club in the UK that regularly deals with PPL and such. Sorry, but the parent post is completely wrong on several counts.
Even to play the original media at public classes and special events requires a licence here if you don't hold the copyright. We submit a form to PPL each year, basically describing the number of hours of music we'll be playing that year, the venues we'll be using, and what the tracks we'll be playing are. (These are necessarily approximations, and FWIW this has never caused us a problem, not that that means much these days.) We then get told how much we have to pay for the rights to play the music as requested. This is not a flat rate, so I have no idea where the figures quoted by others in this discussion have come from.
This is a wholly separate issue to format-shifting, which is illegal by default under UK copyright law. Just because you've bought an MP3 player or your laptop has media playing software doesn't actually give you the right to put any of your CD collection on it, and copying a CD onto tape to play in your old car cassette deck is against the rules. No, I'm not kidding. I haven't read the latest PPL guidelines that apply here yet, but I'm guessing (as in, check it yourself before you rely on it!) that this licence actually covers the format-shifting required to get the material onto the other system. It may or may not cover the same things as the regular PPL licence as well, but I'm guessing not if it's a flat rate or everyone would be doing it (our PPL "contribution" is well over £200 per year).
If you're in the UK and think that charging for a CD, charging for the right to use it in public performances, and charging a significant amount to play the music you've already paid for to an audience you've already paid for, then you might like to consider contributing to the Gowers review of UK IP law when it starts consulting in Febuary 2006.
Thanks for the reply. We'd love to be doing several of the things that you suggest, but alas the practicalities prevent it.
For example, we ship libraries, not end user products. That means we have to build and test with the same compilers that our customers use on each platform, which may well not be gcc. We also supply source code to some customers who build on more obscure platforms, so our code has to be fairly lowest-common-denominator to avoid tripping these folks up. In any case, our code is heavily mathematical, and g++ is still some way behind the field when it comes to optimisations for now. We do support it on an increasing number of platforms as its improvements catch up with the "home team" compiler, but it's got a way to go before it catches things like Intel C++ or Visual C++.
The build process isn't a problem for us. We long ago wrote our own system for managing makefiles on different platforms portably, not dissimilar to bjam.
As for exceptions, yes, architecturally they would be useful. Unfortunately, the product I work on has been around for a lot longer than exceptions in C++ have, and as you're probably aware, retrofitting an exception framework onto a project that wasn't design to use them is almost always a losing option. They're a great tool, but IME to get the most out of them, they really need to be used (or at least planned for) from the start.
I do write libraries for use in CAD software, and we don't use Boost, or any templates or exceptions at all, for that matter. We'd love to, but a lot of the more obscure platforms we have to support still don't have compilers that are up to the job. The problem with the pace of standardisation in C++ isn't the standards committee, it's that nearly a decade later, there are still absurd, trivial bits missing on many minor platforms, and it's not even worth thinking about using the "new" bits.
Sorry, rereading my previous post I didn't describe what I did very well. :-(
Have you tried the following? (I don't think I needed all of this, but IIRC it was the "total" fix described in one of the Thunderbird forum posts.)
Also, be aware that if you're using the global inbox feature, you can get stuck with improperly indexed inboxes for individual accounts, which you can't access directly as long as the global inbox is enabled. You might need to switch it off temporarily, and apply the fix above to any inboxes for separate accounts that have unexpectedly large data files on the disk, before reactivating the global inbox.
I used to have a similar problem. You get phantom unread messages reported, even in empty folders, and sometimes the count goes up when you click on the folder, right? If that's the case, then it could be the same corrupt data file problem I had.
The solution was (with Thunderbird not running) to copy the folder data in your profile safely elsewhere just in case, and then delete the index file for the offending folder. When you restart Thunderbird, it detects the missing index file and rebuilds it, correctly this time. Bingo, no more phantom unread messages and related irritations.
Apparently the corruption happens if you don't compact your folders regularly and they get too big. Don't ask me why a serious e-mail client requires this level of user intervention to perform routine maintenance on its data files that can cause serious errors if forgotten, because I have no idea. :-)
If you need the details of which files are which, it's worth Googling for the symptoms of the problem; there are a couple of sites with quite detailed analyses that had appeared fairly recently when I had to fix this a few weeks ago.
Numeracy levels among the general population are dropping.
Fitness levels among the general population are dropping.
Communication skills among the general population are dropping.
Basic survivial skills among the general population are dropping.
Overall result: many people find themselves in worse situations than they would have been a few years ago, due to over-reliance on technology and lack of basic knowledge. If people learned how to do the basics properly before learning to use technology to make it easier, a lot of problems in today's world would go away.
Ah, so there is a word for chavs driving pimped up blingmobiles... Thanks!
Sometimes. Other times, the whole "acceptable risk" thing kicks in and over-reliance on the new features undoes any real benefit. :-(
Isn't that what Sunbird is supposed to be for?
It seems we have very different experiences here. Maybe it's because I'm based in the UK, and our IT industry is moving in a different direction to that in Germany.
I don't personally write games, but a couple of friends do, and their code is almost entirely C++.
Of course there are applications that end users rely on for mathematical modelling, but what are they written in? It's usually C++.
I used to work for a company that wrote instrument control applications for customers in diverse industries. Everything we wrote was written in C++ (though sometimes the firmware and/or device drivers we talked to were written in C).
I'm afraid you're completely wrong about CAx. My current employer makes libraries used, quite literally, in almost every major CAD application in the world, together with countless smaller developments. Several of the big CAD firms have offices here, and I have friends working at most of them. I promise you, with complete confidence, that the vast majority of development in this industry is done using C++.
I don't think there's much doubt about system tools. Old ones were written in C, and many are still in use, but newer things are mostly C++ now IME. Just pick you favourite compiler or VM and check what language it's written in.
Perhaps it's a matter of perspective, or your industry has just evolved differently to ours, but IME all of the above categories are dominated by C++ today.
Games?
Mathemetical modelling?
Engineering/instrument control?
CAD/CAM/CAE and similar heavily numerical applications?
System tools?
Telecomms?
(I realise that C and other languages are also used heavily in some of these fields, I'm just giving some examples of areas where C++ has been very successful.)
I suspect we're mostly in agreement here. The sorts of redundant comment I'm talking about do include banner comments at the top of each function that repeat what the line of code below them used to say, and classics like "// Increments i" after the line "++i;". However, they also include (for example) comments that basically repeat what's in the design documentation, but tied into the implementation. These don't really help anyone, but they do waste space, and as I mentioned before, they tend to obscure the really useful comments. If 4/5 comments in a 30-line function are basically repeating what's better said elsewhere, even if correct, then it reduces the impact of the last 1/5 significantly, IMHO.
I guess you're not going as far back as Minority Report, then?
I agree about the prequel Star Wars trilogy, though; I think the parallels are now so obvious that it's even in my sig, as least until I find something I like better tomorrow.
I'm terribly sorry, but I do believe you'll find it's the media group that doesn't know what a DVD is. If they did, they wouldn't be in this rather unfortunate predicament, you see? Do keep up, old chap.
Nah, this is only going to mean missing award or two, and it'll probably win plenty of others. To risk really serious trouble, you'd have to do something really serious with DRM, like mess up the security of millions of computers so they're vulnerable to viruses or something, and I'm sure no major media company would ever be that stupid.
Hey, we used to use words like "free trade" and "capitalism" to describe that sort of behaviour, and they were supposed to be good things. I guess words like "anticompetitive" and "monopoly abuse" have gone out of fashion with government lawyers these days...
I never claimed to know much about C# (but the person supplying the information to me certainly does). And I realise that the overheads are probably per-object. I'd be interested to know how this applies to, say, an integer that is a member of a class rather than an array. Are there overheads for thread safety, padding, etc. then?
In any case, my point is that if this kind of overhead applies even in some common circumstances, then that is a big minus point for C# as a possible language in many contexts. One of the biggest strengths of C++ is the zero overhead approach, and it's hard to see any language that doesn't at least approach a comparable standard making a dent in C++'s core market.
This entire thread is a complete straw man: you may be comparing cout with puts but the original post by OzPeter, and the rest of the discussion elsewhere, is talking about whether using a C++ compiler inherently slows things down. It doesn't, and to say otherwise is simply and demonstrably wrong.
I'm not going to do what you did and put words into Bjarne's mouth, though I will say that I've personally never heard him claim that using puts isn't writing C++, and I've seen him write on many occasions that the compatibility with C has been a major strength of C++ from the start. He may not recommend using the C-style output routines, but that's a different thing entirely.
In any case, you can't start arguing about speed based on a single, biased example (particularly one that wouldn't be apples-to-apples even if you were comparing recommended approaches, on account of your handling of newlines). If you're going to do that, I'll suggest you go try sorting a few arrays of thousands of entries with qsort, and then try again with C++'s std::sort, and see how you do. It's just as biased an example, if not more so, and it'll come down heavily in C++'s favour with any half-decent C++ compiler. Now, which is more likely to be relevant to performance, the speed of printing a line of text to the standard output stream, or the sorting of a large array?
There are fair criticisms one could make of C++, but I'm afraid your posts in this case are little more than straw man attacks and provably false conjecture. The reason there are so many ill-founded rumours flying around about C++ isn't because of people like Bjarne, it's because of people like you.
Is that the same C# that a friend uses, which apparently requires 12 bytes of memory to store a single 32-bit integer?
If that's accurate, then I don't think C++ has much to fear from C# in its natural areas of strength...
Blockquoth the AC:
Given that looking through the first few IT books I find random things with random titles, where the comments describe the contents as the words "f***ing w**kers" or something similar, I'm guessing that lulu.com isn't the best ambassador for self-publishing around...
I think you've hit the problem with today's programming world right there. The STL -- or rather, the part of the C++ standard library that comes from Stepanov's original ideas -- actually isn't very good.
Don't get me wrong, it was a very interesting concept, and has some great ideas. It's just that the potential was never realised in practice within the C++ framework. The containers and iterators relationship is a decent start, but the toolbox isn't full yet: the support is poor for concepts like ranges (and maps between ranges from different containers), sources and sinks (or "generators" or whatever we're calling open-ended ranges this week), indexing... And of course, the algorithms would be great if C++ had good support for closures/lambda expressions/whatever, but as it stands it's often better to write a simple loop than to use one of the standard algorithms.
In fact, the STL suffers from much the same core problem as C++ itself: it had a lot of potential and introduced new ideas in its day, but with the benefit of hindsight that we now have, the design seems clunky, the quality is patchy, and we could do a lot better by starting over and learning from what worked and what didn't last time. I'm just waiting for someone to do that; it seems to me that there's an obvious and enormous market waiting for the natural heir to C++ (which doesn't look much like Java, C# or D, IMNSHO).
When that successor (or possibly several successors with some common advantages but different foci) does arrive, then we'll have your crossroads, and C++ and the STL can be retired to a well-earned place in programming history. Until then, they're the best we've got for a lot of jobs, but that still doesn't make them good on an absolute scale.
I think the reason the CUJ has died is very simple: it wasn't very good any more.
A few years ago, there would be many useful things going on in the C++ world. Then there would be many useful articles to accompany them in the C++ and more general programming press.
Today, the C++ world seems to have degenerated into two camps: the naive group who still think it's great for everything and love playing with intricate templatey stuff just because they can, and the much larger, practical group, who continue to use it because as a pragmatic tool, it remains unrivalled for many programming jobs. Everyone else has long since jumped ship.
What the C++ press should have been doing is continuing to educate the programming population. One only has to read any programming language thread on Slashdot to see how many people still don't understand simple but very effective ideas like RAII, never mind the power of C++'s object/exception model in comparison to some of the alternatives. But today, most of the C++ press is just the same in-crowd of authors repeating the same tired mantras over and over again. And it's almost all negative: I'm surprised no-one's ever written "50,000 Ways Not To Blow The Whole Leg Off" or something.
As a practical tool, C++ remains one of the most useful and adaptable languages around. It's just a shame that almost none of the professional authors seems to want to talk about how to use it well. Maybe it's just easier to find yet another obscure way to break it, or yet another way to reproduce an example from chapter 1 of a functional programming textbook using only 150 lines of template code. Until your magazine fails because no-one cares anymore, anyway.
That may well be true, but using someone else's material without permission and attribution is just bad manners, unless you're very clear up front that this will be the case.
I've submitted a handful of articles to /. over the years. I don't know what my acceptance rate is, probably around 40-60% under my name, and most of the rest appear in some other form. Personally, I submit the articles in the hope that they'll prompt some interesting or informative discussion, and apparently I'm doing reasonably well at picking the targets for this forum. I don't think I've ever linked to a personal URL from the article, and I only ever submit under my /. nickname, but I'd still consider it rude if my text appeared as if posted by some random AC instead.