The PPC 970's power consumption at 1.8GHz is 42 watts. If it debuts at over 2GHz like many people predict, it will easily be over 50 watts. At that point, the extra 20 or so watts a P4 consumes hardly seems like a big loss. Also, it is entirely possible to make whisper quiet 3GHz P4 monsters. The newest Dells don't even put a CPU fan on the heatsink. They have a huge heatsink, and cover it with a closed heat tunnel. At the end of the tunnel, they attach a very large, but very slow, and thus very quiet, running fan. As a result, the CPU stays cool, and the machine is barely audible from a few feet away. The "jet engine" sound you get from most PCs is a result of poor case design (particularly the use of small, high-RPM fans) more than anything else.
It's not just about compile-time computations. It's about giving C++ a proper compile time metalanguage. It's not a new concept. Lisp macros do a lot of the same things, although Lisp macros are implemented properly in that it uses the regular Lisp language within the macros themselves. There is a difference in that Lisp offers the compiler at runtime, but there is no reason why C++ template "macros" couldn't be made as powerful, within the limits of what can be computed at compile time.
If you doubt the usefulness of metaprogramming, consider a simple example. I recently had to write several low-level classes that had to expose lots of state variables to higher levels of a library. I did not want to get stuck writing dozens of trivial, pass-through, accessors. It was the matter of maybe 50 lines of code, using templates and operator overloaded, to write a class that generated accessors for me. Defining each state variable went from about 7 lines of code (definition, 2 accessors) to 1 line of code. As Alexanderscu showed in his book, this technique can be extended to write code generators for class factories, etc.
Lastly, I wouldn't say template code is "incomprehensible." It's synactically ugly, but really is comprehensible if you are used to reading functional code. A lot of the ugliness is just boilerplate stuff your mind learns to ignore.
I think the main problem with C++ is that you *can't* clean it up. It took an agonizing 5 years for compilers to finally support the C++ '98 standard, and any breaks in compatibility at this point will have developers up in arms. Also, remember that there are many large software systems written in C++ than Java or Python, so they can't afford to change things in a way that would break that code. Heck, given the pains Sun is going through to implement generics, I'd say that even Sun is having problems because of the need to mantain compatibility.
So right now, the standards committie is trying to fix what it can. Since template metaprogramming is a aspect of C++ without a lot of compatibility issues they can afford to change around stuff a little bit without pissing too many people off. And god knows the template mechanism needs some attention. Template metacode is rather ugly. Some of the suggested features in C++ 0x, like template typedefs and typeof will greatly help in making template code easier to read.
Eh. The first several paragraphs of the story were unduly harsh, and the claims not really supported by the facts presented in the remaining paragraphs. For example, they make him out to be demanding by saying that he believed the movie should be shot on his own schedule. In reality, he was trying to minimize the physical pain from his back injuries. I really don't think it's all that demanding to believe that the studio would take that into account. Then there was the money thing. There were reports of him being mad that Zisken got more money for the first movie, but he says that money wasn't an issue. I have to say I'd give him the benifet of the doubt, given how reliable Hollywood "reports" can be.
You know what would help PPC and SPARC even more than getting rid of the MHz Myth? Actually releasing processors that outperformed highly-clocked P4's in real benchmarks. MHz myth is one thing, but if your processors aren't keeping up in SPEC, that's something else.
PS> I'm not comparing a SPARC *machine* to a P4, you Sun fanboys! High end SPARC's have systems architectures that blow away most PC's. But the CPU itself is a rather weak performer.
So Hiroshima was terrorism? Makes sense. Also, in the long run, more Iraqi civilians died as a result of the Gulf War than did Iraqi troops. Another act of international terrorism? To be truthful, the definition of terrorism just depends on who you ask.
Unlike Mozilla, Konq measures fonts the proper way: in points. Make sure your DPI setting is correct, and that the point size is something sane like 10-12pt.
The LCD will save your eyes. I've been using a high quality LCD for about a year, and I can stare at it for hours on end without my eyes getting tired. When I switch to a CRT for awhile, I can just feel the radiation burning into my retinas. Also, LCDs automatically have perfect convergence and perfect geometry, which is important for a lot of engineering applications. Throw in the space savings (and heat reduction), and it's a no brainer, if you can afford it.
I think the guy you were replying to has a point. I don't buy into this "I'm OK, you're OK, never judge anybody" BS. Not being judgemental is okay within certain limits, but there are limits. It's fine is somebody don't want to learn about computers or cars or whatever. But there is a large segment of the population that doesn't want to learn about ANYTHING. They don't know anything about the world, but the still think they have a right to spout their opinions about politics. They know nothing about business, but still think they have the right to complain about corporate practices. I'm talking about the kind of people who have no idea what the first ten amendments are, no idea what the platforms of the people they're voting for are, no idea about anything beyond what's on FOX tonight and what J-Lo's ass is doing this week. There are some limits to how intellectually lazy we should allow people to be. After all, we make judgement calls about child molesters, murderers, theives, prostitutes, etc, so why not stupid people? To tell the truth, I have more respect for a prostitute than someone who is intellectually lazy.
Since all overloaded operators require at least one class arguement, your example can't really exist. Thus, what you're left with is that you have to be aware of what operator overloads are in place for the class you're using. At that point, it's really no harder than just remembering what methods do. Say you have to Matrix classes. You see:
a = b + c;
Is that really any more ambiguous than:
a = c.addTo(b)
Now if you have multiple overloads in effect, then yes, things can get ambiguous. But IIRC, Java has function overloading, so over-loaded code can occur just as easily in that language. In fact, since operators are just a specialization of functions, it's not orthogonal if you can overload functions but not operators.
Having seen them both in real life, I have to point out that the difference is much larger than the pictures show. The iPod is just small enough that I wouldn't mind sticking it in a pants pocket without having an unseemly bulge. A shirt pocket is streching it, but doable if you're one of those whose accustomed to putting pens and stuff in there anyway. The Zen is definately too large to be comfortably pocketable, except maybe in my cargo pants. Even then, the weight and thickness are the killer, not really width or height.
The WWII situation tends to cloud people's perspective on foreign affairs. The situation in WWI/II was very different. Germany at the time was a highly industrialized nation and a world power. It was (and still is) the population and economic center of Europe. None of the nations in which we have intervened (not even Iraq) could be placed on a comparable scale. For the situation in Iraq to escalate to anything more than a regional conflict would require a powerful country like the UK, France, Germany, or China to get involved. Further, the alliances in place today are vastly different. Europe is no longer divided. Despite all the harsh words traded between the US and it's allies in Europe, if a country like Iraq and its allies (of which it has very few) were to wage war, the opposition would be impossible to overcome.
PS> I always find it rather funny how people keep bringing up the US in WWI/WWII. In WWI, we came in at the tail end of the war. For example, for every 100 artillery shells fired by the French of British, the US fired 6. Europe sacrified a great deal in WWI. The French (which many Americans today are fond of deriding) lost 27% of their population between ages 18 and 27, and 10% of their population overall. These "cowards" all died defending their homeland. Moreover, this war was actually fought in their homeland. WWI decimated European infrastructure. The land was literally (physically) torn up after the war. War hasn't actually seen American shores since bombs fell on Pearl Harbor, and even then, how can we compare an attack on a navel base thousands of miles away to the bombing of London? WWII was another war in which the US takes more credit than is due to it. A large part of the US involvement was in the Pacific. The Russians turned Hitler back in Stalingrad all by himself, and the British managed to prevent being overrun by Hitler's forces and keep a bridge to the mainland intact. The fact that US was able to come in and make the final push to topple Germany is a great credit, but saying stuff like "we saved Europe from Germany" (which I've heard far too often of late) minimizes the contribution of the European resistance, doesn't take into account the handicap Europe started with after having lost so much just 20 years before in WWI, and badly distorts the actual progression of the war.
Actually, how can you tell? When rich American businesses go into a country to compete with fledling local businesses, is there really a fair competition at play? People have to choose between supporting an immature native industry or choosing a mature foreign industry. By the time the native industry could have built up, it has already been marginalized by the foreign industry. Beyond that, there is the issue of American's prostelizing their culture around the world. We have tried to impose American styles of government on countries for decades. The only time it has worked satisfactorily was with Japan. Every other time (ahem, Vietnam...) it has failed miserably. Apart from all of that is the fact that we just plain butt-in to stuff that's really none of your business. We supported the Shah in Iran, we gave weapons to the Muhajideen in Afghanistan, we gave weapons to Saddam against Iran, the list just goes on. The funny thing is that all of these intrusions have come back to bite us in the ass, and we still haven't learnt a lesson. The Shah in Iran fell, and now the conservative theocracy in the country hates the US. The Muhajideen in Afghanistan became the Taliban, and used our weapons to take over the country. And we know how the Saddam thing went. The thing is, that all of this would go away relatively quickly after we stopped interfering. The people in the Middle East and in other places are really too busy with their own problems to keep rallying against a non-active issue. For example, the British empire systematically f*cked over a huge number of countries. Their reign of terror ended only about 50 years ago. Yet, today, you don't see a whole lot of terrorists from the Middle East, or malcontents from Africa and India attacking British targets.
Um, unlike the iPod which is a firewire HDD? And is that USB 1.0 or USB 2.0? USB 2.0 is largely useless to me (a PC user, who for some reason has a firewire port but no USB 2 port) and a lot of Mac users. USB 1.0 is far too slow for a 20GB player.
The Linux community would have me publish it now, (so they can have it) laundered by the time we can get to a court hearing. >>>>>... Damn. If you're code can be just be replaced this quickly, then it must not have been very important!
Actually, I've looked into wrapping the NVIDIA driver to load it independently of X. It would be a giant pain in the ass. There are 243 functions referenced by the current NVIDIA XFree86 module (down from over 300 in previous releases). They fall into 3 major catagories.
--- Trivial remappings: Stuff like xf86sin() vs sin() and xf86open() instead of open(). These calls are there to abstract each driver module from the underlying OS. --- Support routines. These include stuff like software fallbacks for rendering routines, hardware detection routines, etc. These would take more work to reimplement, but aren't that closely tied to X. --- X-specific routines. Stuff like graphics contexts, etc. These would be hard.
Suppose it would be doable, since XAA is well documented and the source is available, and the drivers don't appear to use any functionality not defined in the X driver API, but I certainly would not want to try.
Yes, some of the people writing video drivers are some of the same people doing it professionally. I just learned on xwin.org today that one of those people is Mark J. who works on XAA (among other things) and also works at NVIDIA. However, I'll assert that the number of experienced 3D driver writers working on XFree are rather small compared to the number of dedicated driver guys at ATI and NVIDIA.
Also, AFAIK, none of the DRI drivers are reverse engineered. The specs of the ATI, Matrox, 3dfx, and i8xx chips are publically available. Heck, I've read the Matrox and 3Dfx docs myself.
The PPC 970's power consumption at 1.8GHz is 42 watts. If it debuts at over 2GHz like many people predict, it will easily be over 50 watts. At that point, the extra 20 or so watts a P4 consumes hardly seems like a big loss. Also, it is entirely possible to make whisper quiet 3GHz P4 monsters. The newest Dells don't even put a CPU fan on the heatsink. They have a huge heatsink, and cover it with a closed heat tunnel. At the end of the tunnel, they attach a very large, but very slow, and thus very quiet, running fan. As a result, the CPU stays cool, and the machine is barely audible from a few feet away. The "jet engine" sound you get from most PCs is a result of poor case design (particularly the use of small, high-RPM fans) more than anything else.
It's not just about compile-time computations. It's about giving C++ a proper compile time metalanguage. It's not a new concept. Lisp macros do a lot of the same things, although Lisp macros are implemented properly in that it uses the regular Lisp language within the macros themselves. There is a difference in that Lisp offers the compiler at runtime, but there is no reason why C++ template "macros" couldn't be made as powerful, within the limits of what can be computed at compile time.
If you doubt the usefulness of metaprogramming, consider a simple example. I recently had to write several low-level classes that had to expose lots of state variables to higher levels of a library. I did not want to get stuck writing dozens of trivial, pass-through, accessors. It was the matter of maybe 50 lines of code, using templates and operator overloaded, to write a class that generated accessors for me. Defining each state variable went from about 7 lines of code (definition, 2 accessors) to 1 line of code. As Alexanderscu showed in his book, this technique can be extended to write code generators for class factories, etc.
Lastly, I wouldn't say template code is "incomprehensible." It's synactically ugly, but really is comprehensible if you are used to reading functional code. A lot of the ugliness is just boilerplate stuff your mind learns to ignore.
I think the main problem with C++ is that you *can't* clean it up. It took an agonizing 5 years for compilers to finally support the C++ '98 standard, and any breaks in compatibility at this point will have developers up in arms. Also, remember that there are many large software systems written in C++ than Java or Python, so they can't afford to change things in a way that would break that code. Heck, given the pains Sun is going through to implement generics, I'd say that even Sun is having problems because of the need to mantain compatibility.
So right now, the standards committie is trying to fix what it can. Since template metaprogramming is a aspect of C++ without a lot of compatibility issues they can afford to change around stuff a little bit without pissing too many people off. And god knows the template mechanism needs some attention. Template metacode is rather ugly. Some of the suggested features in C++ 0x, like template typedefs and typeof will greatly help in making template code easier to read.
Eh. The first several paragraphs of the story were unduly harsh, and the claims not really supported by the facts presented in the remaining paragraphs. For example, they make him out to be demanding by saying that he believed the movie should be shot on his own schedule. In reality, he was trying to minimize the physical pain from his back injuries. I really don't think it's all that demanding to believe that the studio would take that into account. Then there was the money thing. There were reports of him being mad that Zisken got more money for the first movie, but he says that money wasn't an issue. I have to say I'd give him the benifet of the doubt, given how reliable Hollywood "reports" can be.
You know what would help PPC and SPARC even more than getting rid of the MHz Myth? Actually releasing processors that outperformed highly-clocked P4's in real benchmarks. MHz myth is one thing, but if your processors aren't keeping up in SPEC, that's something else.
PS> I'm not comparing a SPARC *machine* to a P4, you Sun fanboys! High end SPARC's have systems architectures that blow away most PC's. But the CPU itself is a rather weak performer.
Who uses RDRAM anymore? The newest Canterwoods are all dual channel DDR.
So Hiroshima was terrorism? Makes sense. Also, in the long run, more Iraqi civilians died as a result of the Gulf War than did Iraqi troops. Another act of international terrorism? To be truthful, the definition of terrorism just depends on who you ask.
Unlike Mozilla, Konq measures fonts the proper way: in points. Make sure your DPI setting is correct, and that the point size is something sane like 10-12pt.
Huh, just had a thought.
Definition of masochist: Someone who serves himself his own banner adds because double-click's aren't annoying enough.
The LCD will save your eyes. I've been using a high quality LCD for about a year, and I can stare at it for hours on end without my eyes getting tired. When I switch to a CRT for awhile, I can just feel the radiation burning into my retinas. Also, LCDs automatically have perfect convergence and perfect geometry, which is important for a lot of engineering applications. Throw in the space savings (and heat reduction), and it's a no brainer, if you can afford it.
I think the guy you were replying to has a point. I don't buy into this "I'm OK, you're OK, never judge anybody" BS. Not being judgemental is okay within certain limits, but there are limits. It's fine is somebody don't want to learn about computers or cars or whatever. But there is a large segment of the population that doesn't want to learn about ANYTHING. They don't know anything about the world, but the still think they have a right to spout their opinions about politics. They know nothing about business, but still think they have the right to complain about corporate practices. I'm talking about the kind of people who have no idea what the first ten amendments are, no idea what the platforms of the people they're voting for are, no idea about anything beyond what's on FOX tonight and what J-Lo's ass is doing this week. There are some limits to how intellectually lazy we should allow people to be. After all, we make judgement calls about child molesters, murderers, theives, prostitutes, etc, so why not
stupid people? To tell the truth, I have more respect for a prostitute than someone who is intellectually lazy.
Great. An excuse for thousands of nerds to brag about their SAT scores :)
Smalltalk.
Since all overloaded operators require at least one class arguement, your example can't really exist. Thus, what you're left with is that you have to be aware of what operator overloads are in place for the class you're using. At that point, it's really no harder than just remembering what methods do. Say you have to Matrix classes. You see:
a = b + c;
Is that really any more ambiguous than:
a = c.addTo(b)
Now if you have multiple overloads in effect, then yes, things can get ambiguous. But IIRC, Java has function overloading, so over-loaded code can occur just as easily in that language. In fact, since operators are just a specialization of functions, it's not orthogonal if you can overload functions but not operators.
Having seen them both in real life, I have to point out that the difference is much larger than the pictures show. The iPod is just small enough that I wouldn't mind sticking it in a pants pocket without having an unseemly bulge. A shirt pocket is streching it, but doable if you're one of those whose accustomed to putting pens and stuff in there anyway. The Zen is definately too large to be comfortably pocketable, except maybe in my cargo pants. Even then, the weight and thickness are the killer, not really width or height.
The WWII situation tends to cloud people's perspective on foreign affairs. The situation in WWI/II was very different. Germany at the time was a highly industrialized nation and a world power. It was (and still is) the population and economic center of Europe. None of the nations in which we have intervened (not even Iraq) could be placed on a comparable scale. For the situation in Iraq to escalate to anything more than a regional conflict would require a powerful country like the UK, France, Germany, or China to get involved. Further, the alliances in place today are vastly different. Europe is no longer divided. Despite all the harsh words traded between the US and it's allies in Europe, if a country like Iraq and its allies (of which it has very few) were to wage war, the opposition would be impossible to overcome.
PS> I always find it rather funny how people keep bringing up the US in WWI/WWII. In WWI, we came in at the tail end of the war. For example, for every 100 artillery shells fired by the French of British, the US fired 6. Europe sacrified a great deal in WWI. The French (which many Americans today are fond of deriding) lost 27% of their population between ages 18 and 27, and 10% of their population overall. These "cowards" all died defending their homeland. Moreover, this war was actually fought in their homeland. WWI decimated European infrastructure. The land was literally (physically) torn up after the war. War hasn't actually seen American shores since bombs fell on Pearl Harbor, and even then, how can we compare an attack on a navel base thousands of miles away to the bombing of London? WWII was another war in which the US takes more credit than is due to it. A large part of the US involvement was in the Pacific. The Russians turned Hitler back in Stalingrad all by himself, and the British managed to prevent being overrun by Hitler's forces and keep a bridge to the mainland intact. The fact that US was able to come in and make the final push to topple Germany is a great credit, but saying stuff like "we saved Europe from Germany" (which I've heard far too often of late) minimizes the contribution of the European resistance, doesn't take into account the handicap Europe started with after having lost so much just 20 years before in WWI, and badly distorts the actual progression of the war.
Actually, how can you tell? When rich American businesses go into a country to compete with fledling local businesses, is there really a fair competition at play? People have to choose between supporting an immature native industry or choosing a mature foreign industry. By the time the native industry could have built up, it has already been marginalized by the foreign industry. Beyond that, there is the issue of American's prostelizing their culture around the world. We have tried to impose American styles of government on countries for decades. The only time it has worked satisfactorily was with Japan. Every other time (ahem, Vietnam...) it has failed miserably. Apart from all of that is the fact that we just plain butt-in to stuff that's really none of your business. We supported the Shah in Iran, we gave weapons to the Muhajideen in Afghanistan, we gave weapons to Saddam against Iran, the list just goes on. The funny thing is that all of these intrusions have come back to bite us in the ass, and we still haven't learnt a lesson. The Shah in Iran fell, and now the conservative theocracy in the country hates the US. The Muhajideen in Afghanistan became the Taliban, and used our weapons to take over the country. And we know how the Saddam thing went. The thing is, that all of this would go away relatively quickly after we stopped interfering. The people in the Middle East and in other places are really too busy with their own problems to keep rallying against a non-active issue. For example, the British empire systematically f*cked over a huge number of countries. Their reign of terror ended only about 50 years ago. Yet, today, you don't see a whole lot of terrorists from the Middle East, or malcontents from Africa and India attacking British targets.
Canada is the US's number one oil source, followed distantly by Saudi Arabia. It's also a OPEC nation.
Or, they could write 20 sentences on a piece of paper in English. Have you speak into a $20 casette recorder, and see if you got them all right.
The iPod uses the PortalPlay "system on a chip" processor which contains 2 ARM7 CPUs.
Um, unlike the iPod which is a firewire HDD? And is that USB 1.0 or USB 2.0? USB 2.0 is largely useless to me (a PC user, who for some reason has a firewire port but no USB 2 port) and a lot of Mac users. USB 1.0 is far too slow for a 20GB player.
The Linux community would have me publish it now, (so they can have it) laundered by the time we can get to a court hearing.
>>>>>...
Damn. If you're code can be just be replaced this quickly, then it must not have been very important!
Pardon me, but I don't think I was the original poster you were so mad at. I never denied there were professionals working on 3D.
Actually, I've looked into wrapping the NVIDIA driver to load it independently of X. It would be a giant pain in the ass. There are 243 functions referenced by the current NVIDIA XFree86 module (down from over 300 in previous releases). They fall into 3 major catagories.
--- Trivial remappings: Stuff like xf86sin() vs sin() and xf86open() instead of open(). These calls are there to abstract each driver module from the underlying OS.
--- Support routines. These include stuff like software fallbacks for rendering routines, hardware detection routines, etc. These would take more work to reimplement, but aren't that closely tied to X.
--- X-specific routines. Stuff like graphics contexts, etc. These would be hard.
Suppose it would be doable, since XAA is well documented and the source is available, and the drivers don't appear to use any functionality not defined in the X driver API, but I certainly would not want to try.
Yes, some of the people writing video drivers are some of the same people doing it professionally. I just learned on xwin.org today that one of those people is Mark J. who works on XAA (among other things) and also works at NVIDIA. However, I'll assert that the number of experienced 3D driver writers working on XFree are rather small compared to the number of dedicated driver guys at ATI and NVIDIA.
Also, AFAIK, none of the DRI drivers are reverse engineered. The specs of the ATI, Matrox, 3dfx, and i8xx chips are publically available. Heck, I've read the Matrox and 3Dfx docs myself.