I've not experienced those problems with the latest version of the IBM compiler, but it's worth noting that the C++ language itself does not include any standards for link format (although Intel was developed a standard for x86... sort of, as G++ and ecc are both compliant, but still not 100% interoperable;-). Generally, there is a reason why compiler vendors ship their own debuggers with their product.;-)
G++ is, AFAIK, actually the least compliant of the compilers I mentioned in that list, which is in itself a powerful statement of how much progress has been made in standards compliance (G++ made significant progress from the 2.x series to the 3.x series). I believe Metrowerks is also more compliant than G++, but I haven't used it in ages.
Most C++ IDE's do a pretty good job of showing you the functions you can invoke on a type.
Also keep in mind that nothing says that your Date functions have to be "spread all over the place". Indeed, it is quite logical to have calendar-type manipulations in one place, standard temporal operations in another, and formatting stuff idealling in a third place. Amazingly, this is actually what happens in the case of Java, despite the fact that it uses classes for all this stuff.
This is just like Hungarian notation, where people stupidly decided they wanted to know the type of a variable by looking at its name
Sadly, the original idea behind Hungarian notation seems to have been lost to the ages. The idea behind it was that the C language's weak typing made it quite easy to accidently use the wrong type, particularly when doing parameter passing. The idea was to encode the type into parameters and variables, such that it would become blantantly obvious when one was making such a mistake (i.e. the parameter list calls for lpuiSize and you're passing iSize). This was particularly problematic in the Win16 days when you had near and far pointers. While it is definitely a hack, and I'd much rather see the language standard fixed in this regard, and the notation itself is very Windows-centric, it is nonetheless not a stupid idea.
Has he now seen the error of his ways? Is contracting (in any form other than an assert) going to get added to C++?
No, the kind of invariants he's talking about are already there. The STL is built around a whole host of invariants. All that C++ lacked was a user friendly way of expressing these invariants. Some of the work the Boost folk have done has provided standard libraries for expressing this stuff more clearly, using the language as-is. Nothing wrong with his ways, and nothing need be added.
as any C++ programmer knows, most compilers completely blow when it comes to standards conformance at the moment.
This is the conventional wisdom. It is (sadly) based on how things used to be. However, there has been a significant amount of progress in the last few years with regards to standards compliance. Aside from the Comeau compiler, you have Microsoft's, Intel's, IBM's, and G++. The last time I used Sun's C++ compiler, the only problems I had were with the antiquated version of the STL that they insist on using for backwards compatilibity purposes. The lastest issue of Dr. Dobbs has actually looked at this based on examples from the C++ standard, and while Borland seems to be making little progress (I don't think their compiler itself has changed in a while), most of the other vendors are rapidly approaching full compliance (although export seems to remain a mystery to everyone besides Comeau).
Actually, all of the most popular C++ compilers are getting pretty close to standards compliance (even g++;-). This is largely thanks to the work of The Edison Design Group, who license compiler front ends, and are very focused on standards compliance.
If you don't want to spend a lot of money, and you don't want to stop using the compiler that you have, I highly recommend The Comeau Compiler. It is a compiler front end derived from the EDG codebase, and only costs you $50. The big downside is that your compile times will be much longer than usual, but at least you can use the export keyword to help with that a bit.
This is also a pretty strong indication of just how noteworthy this article is. This kind of stuff has been time and again. Things like OceanStore are far more innovative. But of course that stuff isn't from Google, which is what makes this article noteworthy.;-)
Tomorrow's slashdot headline: Google proves definitively that 1 + 1 = 2
Sounds rational to me, although obviously a judge sees it in a different light. I guess it seems to me like the FCC governs commerical communications as much as the FTC does, and given that the judge seemed to suggest the FCC had the right to enact a DNC list, why not just go along with him.
Actually, it's my understanding that the ruling was that the FTC did not have the jurisdiction to do this, and it was implied that the FCC did. I am surprised that congress's solution is to give the rights to the FTC rather than just require the FCC to enact the list exactly as the FTC had been required.
Have you actually experimented with this? I believe that compliant MTA's should take a delivery failure as presented by "Snubby" as a reason to reroute to the backup MX record, just as if they failed on a host name lookup.
SCO's comments do not indicate that it was news to them that the code emanated from SGI. All they said was that word got out that SGI was the source, and they were fielding a lot of questions about it, so they went public with their position. It was news to the public, not the SCO.
They don't flat out state it, but from their comments it seems likely they've been in negotiations with SGI on this matter for quite some time. Given that some of this code was from XFS, they'd have to be complete idiots not to know that it likely came from SGI.
They get better mileage in town than on the freeway, because of regenerative braking.
Actually, regenerative breaking reduces the penality for stop-and-go in the city, but breaking still reduces the net fuel economy of the vehicle. The reason why they tend to do better in the city is because at freeway speeds most of hybrids out there are going to use the gas motor far more than at slower speeds, where the electric motor gives you plenty of acceleration.
If you check out the EPA's Fuel Economy Guide for 2003 you'll find that while the automatic transmission hybrids do slightly worse on the freeway, the standard transmission models still do better on the freeway.
2 of my friends have hybrids (one the Insight and the other the Prius), and they both like them. They are great on the city streets, very quiet and lots of pickup from a standing start thanks to the electric motors. For longer trips, you'll love the quiet, the fuel economy, and the insane distances you can go without needing to fill up your tank. The downside tends to be that they have poor pickup at freeway speeds.
The other big issue is the feel of the ride. Some people love it, others don't. They have low-friction tires and stiff suspensions (to minimize the amount of energy loss). This tends to make the car ride more like a sporty car (you feel every bump) than a luxury car (soft suspension smooths out the bumps). Some people love that, others hate it.
Overall, I'd suggest taking it out for a spin, and see whether you like it. They are practical cars though.
It's worth noting that most free-trade zones that have been created also have fairly nice rules for moving employees across borders. This is true both with the EU and with NAFTA.
The WTO doesn't pursue this because just getting the trade barriers down is hard enough. If you start trying to push a world immigration policy things get even dicier.
This is an information theory/pattern recognition problem. Something that mathematicians would be very good at. In a lot of ways, this is a lot like a cryptography problem.
It's sad when people in Computer Science don't realize that what they are doing is essentially math.
Yeah, I think this is the interesting aspect of the whole thing. My guess is Linux Networx may quickly become one of the big SCO licensees, at which point the money from the Linux gig becomes funnelled in to the anti-Linux legal fund.:-(
In practice you may be right, but the intent of patents is the reverse. The key thing to think about is that without patents there is an incentive to keep ideas secret. So, you end up standing *beside* people until the idea comes out. If something gets patented, it is public knowledge, and you can stand on the person's shoulders so long as you pay them a "small" fee. Even without their consent you can do research that takes advantage of the knowledge in the patent.
The problem is a little more complex than that. If SCO is correct in their claim that they own the copyright in the Linux kernel, and that they haven't released it under the GPL.
If this is true, then the non-SCO code in the kernel is in violation of the GPL, as it's dependant on non-GPL'd code.
In order for SCO to license their copyright in a way that still allows one to use the rest of the GPL'd in the Linux kernel, they'd have to allow users the right to distribute the copyrighted material under the terms of the GPL. This means if one person pays the licensing fee, they can distribute the code and the problem goes away.
So in words this thing really is a money grab, because if they are wrong about their copyright ownership, there is no reason to pay, and if they are right, there is no reason to pay. The whole idea of the GPL is to prevent someone from somehow contributing to a GPL'd project and then somehow restricting distribution of the whole project.
High performance implementations of Smalltalk yield comperable performance to C++. Sometimes they are slower, sometimes they are faster. Certainly there are some things where it's going to be hard to beat C++, but Smalltalk is not far behind.
I've not experienced those problems with the latest version of the IBM compiler, but it's worth noting that the C++ language itself does not include any standards for link format (although Intel was developed a standard for x86... sort of, as G++ and ecc are both compliant, but still not 100% interoperable ;-). Generally, there is a reason why compiler vendors ship their own debuggers with their product. ;-)
G++ is, AFAIK, actually the least compliant of the compilers I mentioned in that list, which is in itself a powerful statement of how much progress has been made in standards compliance (G++ made significant progress from the 2.x series to the 3.x series). I believe Metrowerks is also more compliant than G++, but I haven't used it in ages.
Most C++ IDE's do a pretty good job of showing you the functions you can invoke on a type.
Also keep in mind that nothing says that your Date functions have to be "spread all over the place". Indeed, it is quite logical to have calendar-type manipulations in one place, standard temporal operations in another, and formatting stuff idealling in a third place. Amazingly, this is actually what happens in the case of Java, despite the fact that it uses classes for all this stuff.
- In C++, in terms of writing effort, a class and a struct are the same
- In Java, you can have multiple classes in a single file. Indeed, the compiler could care less, just like in C++.
- You can compile Java code to binary, indeed you can do so with gcc.
- Try benchmarking Java vs. Python some day. You'll discover that aside from start up time, Java outperforms Python in the majority of cases.
This is the C++ code for a class:This is the C++ code for the equivalent struct:This is the Java code for the equivalent class:Not a lot of difference is there?Actually, all of the most popular C++ compilers are getting pretty close to standards compliance (even g++ ;-). This is largely thanks to the work of The Edison Design Group, who license compiler front ends, and are very focused on standards compliance.
If you don't want to spend a lot of money, and you don't want to stop using the compiler that you have, I highly recommend The Comeau Compiler. It is a compiler front end derived from the EDG codebase, and only costs you $50. The big downside is that your compile times will be much longer than usual, but at least you can use the export keyword to help with that a bit.
Man, I'd love to see a bluetooth version of this. That would get rid of the whole USB cable issue.
This is also a pretty strong indication of just how noteworthy this article is. This kind of stuff has been time and again. Things like OceanStore are far more innovative. But of course that stuff isn't from Google, which is what makes this article noteworthy. ;-)
Tomorrow's slashdot headline: Google proves definitively that 1 + 1 = 2
Sounds rational to me, although obviously a judge sees it in a different light. I guess it seems to me like the FCC governs commerical communications as much as the FTC does, and given that the judge seemed to suggest the FCC had the right to enact a DNC list, why not just go along with him.
Actually, it's my understanding that the ruling was that the FTC did not have the jurisdiction to do this, and it was implied that the FCC did. I am surprised that congress's solution is to give the rights to the FTC rather than just require the FCC to enact the list exactly as the FTC had been required.
Could this be an inter-agency power grab?
Have you actually experimented with this? I believe that compliant MTA's should take a delivery failure as presented by "Snubby" as a reason to reroute to the backup MX record, just as if they failed on a host name lookup.
SCO's comments do not indicate that it was news to them that the code emanated from SGI. All they said was that word got out that SGI was the source, and they were fielding a lot of questions about it, so they went public with their position. It was news to the public, not the SCO.
They don't flat out state it, but from their comments it seems likely they've been in negotiations with SGI on this matter for quite some time. Given that some of this code was from XFS, they'd have to be complete idiots not to know that it likely came from SGI.
Thanks for catching that typeoh. Couldn't have made it without you.
They get better mileage in town than on the freeway, because of regenerative braking.
Actually, regenerative breaking reduces the penality for stop-and-go in the city, but breaking still reduces the net fuel economy of the vehicle. The reason why they tend to do better in the city is because at freeway speeds most of hybrids out there are going to use the gas motor far more than at slower speeds, where the electric motor gives you plenty of acceleration.
If you check out the EPA's Fuel Economy Guide for 2003 you'll find that while the automatic transmission hybrids do slightly worse on the freeway, the standard transmission models still do better on the freeway.
2 of my friends have hybrids (one the Insight and the other the Prius), and they both like them. They are great on the city streets, very quiet and lots of pickup from a standing start thanks to the electric motors. For longer trips, you'll love the quiet, the fuel economy, and the insane distances you can go without needing to fill up your tank. The downside tends to be that they have poor pickup at freeway speeds.
The other big issue is the feel of the ride. Some people love it, others don't. They have low-friction tires and stiff suspensions (to minimize the amount of energy loss). This tends to make the car ride more like a sporty car (you feel every bump) than a luxury car (soft suspension smooths out the bumps). Some people love that, others hate it.
Overall, I'd suggest taking it out for a spin, and see whether you like it. They are practical cars though.
It's worth noting that most free-trade zones that have been created also have fairly nice rules for moving employees across borders. This is true both with the EU and with NAFTA.
The WTO doesn't pursue this because just getting the trade barriers down is hard enough. If you start trying to push a world immigration policy things get even dicier.
This is an information theory/pattern recognition problem. Something that mathematicians would be very good at. In a lot of ways, this is a lot like a cryptography problem.
It's sad when people in Computer Science don't realize that what they are doing is essentially math.
There are a bunch of books that address these areas. Some quick ones off the top of my head:
Modern C++ Design
Exceptional C++
The Standard Template Library
IOStreams and Locales
Effective C++
I could go on. Sadly though, not nearly as many C++ programmers read this kind of stuff as should.
Yeah, I think this is the interesting aspect of the whole thing. My guess is Linux Networx may quickly become one of the big SCO licensees, at which point the money from the Linux gig becomes funnelled in to the anti-Linux legal fund. :-(
That isn't too surprising since both companies are Canopy Group companies.
In practice you may be right, but the intent of patents is the reverse. The key thing to think about is that without patents there is an incentive to keep ideas secret. So, you end up standing *beside* people until the idea comes out. If something gets patented, it is public knowledge, and you can stand on the person's shoulders so long as you pay them a "small" fee. Even without their consent you can do research that takes advantage of the knowledge in the patent.
;-)
Of course, in practice patents are a mess.
The problem is a little more complex than that. If SCO is correct in their claim that they own the copyright in the Linux kernel, and that they haven't released it under the GPL.
So in words this thing really is a money grab, because if they are wrong about their copyright ownership, there is no reason to pay, and if they are right, there is no reason to pay. The whole idea of the GPL is to prevent someone from somehow contributing to a GPL'd project and then somehow restricting distribution of the whole project.
High performance implementations of Smalltalk yield comperable performance to C++. Sometimes they are slower, sometimes they are faster. Certainly there are some things where it's going to be hard to beat C++, but Smalltalk is not far behind.
"C++ can get pretty damn these days"
;-)
I of course meant "pretty damn expressive", although many would argue the original version was correct.