By changing these plugins to ActiveX, it increases the possibility that these plugins will stop being supported on non-Windows platforms. [...] blah blah monopoly blah blah open standards blah blah
So what you're saying is that Microsoft should have to support someone else's proprietary standard (i.e., Netscape) rather than being able to use their own standard. That's absurd.
One again it must be said: Microsoft has exactly as much right as anyone else to promote a standard. If you are worried about other platforms, then put in support for ActiveX controls.
Good programming practice involves reducing the number of keystrokes required to achieve a given result (ultimately).
Not really. What you really want is to increase productivity. This might mean "reducing keystrokes", but more importantly, you want to maximize maintainability. This is why operator overloading is often a great evil -- you are hiding information that is not readily apparent. What does "+" mean in context X? It can be extremely difficult to know, particularly when bringing on a new programmer to work on old code.
You're argument will probably be something like, "well, yeah, but everything can be abused" but that's not the point. The point is how easily overloading can be abused, how little it actually adds to the language, and how complex it makes things.
So is any other language that depends on heap-allocated data structures. (Assumig compiled code. "Systems programming" with a virtual machine is a contradiction in terms.)
That's why I made a distinction between Java-the-language and Java-the-environment. My point is that even if you natively compile Java and fix some of the runtime environment issues, it still wouldn't be appropriate as a general-purpose language, particularly for system programming.
And my pet peeve: No unsigned data types. Java is completely useless as a system programming language without them.
Don't get me wrong -- I like Java-the-language (while detesting Java-the-environment), and it's very useful in specific applications. I should also say that I dislike the "weight" of the C++ language. But there's a lot that Java would need before it could be a replacement for C++, even natively compiled.
This is a look into the soul of the real America, at least a significant chunk of it.
No, Jon. This is a look at a particular slice of the "real America". Just like Time/Warner, Microsoft, The New York Times, Hollywood, Britney Spears, The New York Philharmonic, Joe's Personal Page, Grandma's Grandchildren Page, and everything else that makes up the tapestry of the "real world".
Something doesn't have to be odd or weird to be "real". Something doesn't have to be Gangsta Violent to be "real". Something doesn't have to be geeky to be "real". A quiet midwest suburban small town with white picket fences is just as "real" as the mean streets of an urban inner city.
And quiet, dignified manners are just as real as loud, obnoxious immaturity. And a large corporation made up of human beings is just as real as whining, complaining pseudo-anarchists.
I submitted this as a story to Slashdot hoping you would comment, but they rejected it.:) And I hate to bug you with an e-mail.
But I was wondering what you thought of this technique that was written about in the LA Times. It sounds extremely interesting, particularly if it could be used for realistic rendering of skin. Too complex for a real-time game, e.g., DOOM?
Sciam had a great article about reproducing Demascus Steel in the January 2001 issue. Unfortunately, I can't find it online, but I definitely recommend checking it out if you have an interest in this subject.
However, it [Doom] was done in an immersive
first-person perspective. Doom was not the first game to do this, but it was the first game to do it well.
Wolf 3D was not Id's first attempt at 3D shooters. If you look at some of their earlier games, you can see the technological progression. But Doom truly was the first game to really do it well enough to be called "immersive". Wolf was still pretty crude.
I was pleased to see he at least mentioned Descent (but what does he mean by "the gaming environment was even more restricted than that of Doom"?) which offered true 3D environments ages before Quake claimed to be the first to do so.
Descent did offer true 3D environments, but I think it's mistaken to argue that it's in Quake's technology class. My understanding is that Descent was heavily dependent on "1 room with tunnels" architecture, which was the limitation they were able to exploit to make 3D possible on a very low-end system. Quake was the first engine that offered true 3D with relatively few geometry limitations (obviously, certain geometry worked better than other geometry).
I think it's arguable whether DOOM or Descent was more limiting. Descent was true 3D, but you couldn't do "real" architecture. Doom could do relatively real places, but was limited to 2.5D maps (i.e., you had height, but no room-over-rooms) and 2D sprites.
This is not to knock on Descent, by the way, which was and is a great game and a solid technological achievement.
Tomb Raider was the hardware "killer application", not Quake.
I have to disagree, although it depends on how you define "killer application". Tomb Raider might have reached more people, but Quake has driven hardware development since day 1. Tomb Raider has never been about pushing the boundaries of hardware acceleration (they want mass-market appeal), but Quake engines have consistently pushed it.
I think the reason why the "morons from the USA" meme is so prevalent, is because of their president, their political and social conservatism, and the fact that a lot of them can afford to travel abroad, and countless AOLers and WebTVers have access the 'net.
Ironically, it's the "political and social conservatism" that provides that prosperity, and fosters "brilliant and amazing people".
are there cases where, for example would be useful
I'm sure you figured out what I meant when I said "favorite whipping boy", but this should read "are there cases where multiple inheritance would be useful".
why not just have compiler switches that prevent use of some features?
You can do that, but I think what's more relevent is the "programmer portability" problem. I think it's safe to say that very few programmers understand the totality of C++ in all its intracacies and special rules. One man's obscure feature is another man's vital convenience. That creates a major maintenance headache.
The complex features of C++ are very useful in special cases.
Agreed, but the "kitchen sink" approach isn't necessarily good. I mean, why not have built-in matrix arithmetic? A factorial operator? A "count the words in this string" operator? All of these would be useful in "special cases". But it adds more weight to the language, and it's not that hard to add the capability.
The language I want strikes a balance between giving you the power that you need, while keeping the complexity low enough so that the average programmer can understand the entire language and all the rules. Java-the-language, while far from perfect (where the hell are the unsigned data types??), is a pretty damn good compromise. (We'll leave the Java standard library out of this discussion.:)). You can easily learn all there is to know about the Java language and really feel like you know it.
To pick on the favorite whipping boy, are there cases where, for example would be useful? Sure. Is it a critical feature that you can't do without? I think not.
I should say that I agree with you that the complex features of C++ are of very high quality. But I think C++ works better as a study of "first system" successes and failures than what we all should be using as a primary development language.
I agree and disagree with your point. On the one hand, I agree strongly that there are too many languages. I have yet to see anyone post why Ruby is different from Perl or Python.
And I strongly agree that making Java a compiler switch to a C++ compiler might have been a Good Thing.
BUT...! The reason C++ sucks (to me, anyway) is the language complexity, not lack of features. In other words, it has too many features. The reason I like Java-the-language (versus Java-the-environment, which I don't like) is that it strips out a lot of the B.S. that makes C++ unwieldly, like multiple inheritance, operator overloading, and other "somewhat useful features but not worth the extra complexity and downsides".
Sometimes to make something really good you have to throw away the past and start over with a clean slate. With languages, this is very dangerous, because it's hard to build up a following for a new language. The whole reason C++ was able to create a following is because it was semi-backward compatible with C.
I don't know that much about C#, but it's guaranteed to be used and successful simply because Microsoft will probably embrace a huge internal development effort which will bleed over into the industry. I hope and pray that it turns out to be what C++ should have been... a nice, tight language like C with modern features, but without the insanity. I also hope and pray that it can be native compiled, and not require a Java-style runtime environment.
Most countries in Europe won't frown on a man with multiple lovers [...]
Yeah, but then you have to live in Europe. As the saying goes, it's a great place to visit, but I wouldn't want to live there. Actually, I find Europe to hugely more interesting than the US, primarily because of the history. It's everywhere in Europe. I really love exploring old buildings, and it's hard to find a new building in Europe.
But you can't get around the fact that the US rules in most categories (opportunity, convenience, quality of steak, price of food:) ).
Just for the record, DeCSS wasn't "cracked" in the usual sense. One of the DVD manufacturers didn't encrypt their key within a DVD player like they were supposed to, and some programmers discovered it.
If the key hadn't been discovered, DVDs would never be cracked (barring any new mathematical breakthroughs).
You know what's even easier than setting up the straw man? Accusing someone of cheap debate tactics rather than engage the debate. It makes you look so much smarter to be able to "stay above the fray", while not having to actually present any arguments.
Bravo, sir, bravo, particularly the use of hitching your wagon to the poster's false accusation. That way, you are even farther removed from a direct criticism. "Yeah, you're right, that RM/101 is a fool. I wouldn't actually directly post that myself, but you go girl!"
Supposedly, the first rule of suffering fools is to ignore them. Unfortunately, I've always been bad at that. I know I shouldn't respond, but I can't help myself.
Yeah, sometimes it's hard being me. It's difficult devoting myself to setting the world straight, but it's part of the responsibility of being brilliant. I often say that I owe it to the world to have as many children as possible, but it looks like my wife will limit me to two. We'll have to see, though! It's a heavy burden having my genetics.
As an experiment, find a highway with a police officer matching your speed with his car to measure speed. Now, go too fast down the street and get a ticket. Take it to court. Will you be found guilty or innocent? You already know the answer. Do you know why you'll be found guilty? Right. Because the officer's car said you were guilty.
The issue isn't the technology used to catch criminals, the issue is the honesty, integrity and competence of the police. All things being equal, and without any other corroborating evidence, in many cases an officer's word will be taken over a suspect's word.
Now, off-topic, that's not to say that I don't think traffic laws need dramatic overhauls... turning police in tax collectors is insanely stupid city policy.
We're talking about being monitored, about having your face scanned and compared to a database. That is fundamentaly different than being observed.
It's exactly identical. What's the difference between a policeman seeing your face on the street and comparing your face to a "database" in his brain, and comparing your face to a database back at the office? Hypothetical: If we could implant a device that allowed perfect recall of police files in a policeman's brain, would you be against it? Why? Policeman should only have imperfect recall?
"Expectation of privacy" is not a legal term.
I hope you didn't pay much for your "legal dictionary". For your education, check out this law review article about these very issues. My favorite quote is this: "Therefore, based upon prior cases, it seems unlikely that the Court would characterize police video surveillance on the street as a "search," because the Court has stated that no reasonable expectation of privacy exists on public streets."
I never said that, why do you pretend that I've said something I haven't and then proceed to argue that non-existent statement?
The "?" symbol at the end of my sentence indicates a question, not a statement. I notice that you dodged the question at the end.
You sound like someone who hasn't spent much time in the reality of poor people.
Quite frankly, I don't need the cameras. I live in a nice house in a safe area. It's poor people in poor neighborhoods who need the cameras. Not only to catch crooks, but to also catch bad cops. It cuts both ways.
I would argue that you are the sheep, and paranoia is your herder.
The difference is that the tourist isn't actively scanning every face in the crowd against a database. Of course you know that, but you ignore the fact because it doesn't support your position.
No, I ignored that fact because it's irrelevent. Again, this tourist could see your face and identify you as a criminal. It's only a difference of efficiency.
And who is to say that these devices will always be used in the right way?
You can use the ol' "slippery slope" argument to argue against anything. We better not have police at all, because they will abuse some of the criminals. We better not use DNA, because it might be misused.
Everything has a downside, but in this case, it actually can protect us against abuses by the state, because they are recorded as well.
By changing these plugins to ActiveX, it increases the possibility that these plugins will stop being supported on non-Windows platforms. [...] blah blah monopoly blah blah open standards blah blah
So what you're saying is that Microsoft should have to support someone else's proprietary standard (i.e., Netscape) rather than being able to use their own standard. That's absurd.
One again it must be said: Microsoft has exactly as much right as anyone else to promote a standard. If you are worried about other platforms, then put in support for ActiveX controls.
Double oops!! Too much talk about C++ today. How about "System.out.println()".
Oops, this should be:
short b = 0xa000;
long a = b;
The following is broken:
short b = 1;
long a = b;
short a = 65000;
(will give an error)
short a = 10000;
a *= 5;
cout << a;
(will output a negative number)
short a = 0x8005; /= 5;
a
cout << a;
(will output a positive number)
short a = 0x8000;
short b = 0x4000;
if (a > b) { cout << "This fails\n"; }
On and on. Modulo is broken, too.
Good programming practice involves reducing the number of keystrokes required to achieve a given result (ultimately).
Not really. What you really want is to increase productivity. This might mean "reducing keystrokes", but more importantly, you want to maximize maintainability. This is why operator overloading is often a great evil -- you are hiding information that is not readily apparent. What does "+" mean in context X? It can be extremely difficult to know, particularly when bringing on a new programmer to work on old code.
You're argument will probably be something like, "well, yeah, but everything can be abused" but that's not the point. The point is how easily overloading can be abused, how little it actually adds to the language, and how complex it makes things.
So is any other language that depends on heap-allocated data structures. (Assumig compiled code. "Systems programming" with a virtual machine is a contradiction in terms.)
That's why I made a distinction between Java-the-language and Java-the-environment. My point is that even if you natively compile Java and fix some of the runtime environment issues, it still wouldn't be appropriate as a general-purpose language, particularly for system programming.
And my pet peeve: No unsigned data types. Java is completely useless as a system programming language without them.
Don't get me wrong -- I like Java-the-language (while detesting Java-the-environment), and it's very useful in specific applications. I should also say that I dislike the "weight" of the C++ language. But there's a lot that Java would need before it could be a replacement for C++, even natively compiled.
I cant wait for AOL to sue Micros~1 for saying "You've got mail".
They already tried. They lost.
This is a look into the soul of the real America, at least a significant chunk of it.
No, Jon. This is a look at a particular slice of the "real America". Just like Time/Warner, Microsoft, The New York Times, Hollywood, Britney Spears, The New York Philharmonic, Joe's Personal Page, Grandma's Grandchildren Page, and everything else that makes up the tapestry of the "real world".
Something doesn't have to be odd or weird to be "real". Something doesn't have to be Gangsta Violent to be "real". Something doesn't have to be geeky to be "real". A quiet midwest suburban small town with white picket fences is just as "real" as the mean streets of an urban inner city.
And quiet, dignified manners are just as real as loud, obnoxious immaturity. And a large corporation made up of human beings is just as real as whining, complaining pseudo-anarchists.
Hi John,
I submitted this as a story to Slashdot hoping you would comment, but they rejected it. :) And I hate to bug you with an e-mail.
But I was wondering what you thought of this technique that was written about in the LA Times. It sounds extremely interesting, particularly if it could be used for realistic rendering of skin. Too complex for a real-time game, e.g., DOOM?
Sciam had a great article about reproducing Demascus Steel in the January 2001 issue. Unfortunately, I can't find it online, but I definitely recommend checking it out if you have an interest in this subject.
This is the key phrase:
However, it [Doom] was done in an immersive first-person perspective. Doom was not the first game to do this, but it was the first game to do it well.
Wolf 3D was not Id's first attempt at 3D shooters. If you look at some of their earlier games, you can see the technological progression. But Doom truly was the first game to really do it well enough to be called "immersive". Wolf was still pretty crude.
I was pleased to see he at least mentioned Descent (but what does he mean by "the gaming environment was even more restricted than that of Doom"?) which offered true 3D environments ages before Quake claimed to be the first to do so.
Descent did offer true 3D environments, but I think it's mistaken to argue that it's in Quake's technology class. My understanding is that Descent was heavily dependent on "1 room with tunnels" architecture, which was the limitation they were able to exploit to make 3D possible on a very low-end system. Quake was the first engine that offered true 3D with relatively few geometry limitations (obviously, certain geometry worked better than other geometry).
I think it's arguable whether DOOM or Descent was more limiting. Descent was true 3D, but you couldn't do "real" architecture. Doom could do relatively real places, but was limited to 2.5D maps (i.e., you had height, but no room-over-rooms) and 2D sprites.
This is not to knock on Descent, by the way, which was and is a great game and a solid technological achievement.
Tomb Raider was the hardware "killer application", not Quake.
I have to disagree, although it depends on how you define "killer application". Tomb Raider might have reached more people, but Quake has driven hardware development since day 1. Tomb Raider has never been about pushing the boundaries of hardware acceleration (they want mass-market appeal), but Quake engines have consistently pushed it.
I think the reason why the "morons from the USA" meme is so prevalent, is because of their president, their political and social conservatism, and the fact that a lot of them can afford to travel abroad, and countless AOLers and WebTVers have access the 'net.
Ironically, it's the "political and social conservatism" that provides that prosperity, and fosters "brilliant and amazing people".
are there cases where, for example would be useful
I'm sure you figured out what I meant when I said "favorite whipping boy", but this should read "are there cases where multiple inheritance would be useful".
why not just have compiler switches that prevent use of some features?
You can do that, but I think what's more relevent is the "programmer portability" problem. I think it's safe to say that very few programmers understand the totality of C++ in all its intracacies and special rules. One man's obscure feature is another man's vital convenience. That creates a major maintenance headache.
The complex features of C++ are very useful in special cases.
Agreed, but the "kitchen sink" approach isn't necessarily good. I mean, why not have built-in matrix arithmetic? A factorial operator? A "count the words in this string" operator? All of these would be useful in "special cases". But it adds more weight to the language, and it's not that hard to add the capability.
The language I want strikes a balance between giving you the power that you need, while keeping the complexity low enough so that the average programmer can understand the entire language and all the rules. Java-the-language, while far from perfect (where the hell are the unsigned data types??), is a pretty damn good compromise. (We'll leave the Java standard library out of this discussion. :)). You can easily learn all there is to know about the Java language and really feel like you know it.
To pick on the favorite whipping boy, are there cases where, for example would be useful? Sure. Is it a critical feature that you can't do without? I think not.
I should say that I agree with you that the complex features of C++ are of very high quality. But I think C++ works better as a study of "first system" successes and failures than what we all should be using as a primary development language.
I agree and disagree with your point. On the one hand, I agree strongly that there are too many languages. I have yet to see anyone post why Ruby is different from Perl or Python.
And I strongly agree that making Java a compiler switch to a C++ compiler might have been a Good Thing.
BUT...! The reason C++ sucks (to me, anyway) is the language complexity, not lack of features. In other words, it has too many features. The reason I like Java-the-language (versus Java-the-environment, which I don't like) is that it strips out a lot of the B.S. that makes C++ unwieldly, like multiple inheritance, operator overloading, and other "somewhat useful features but not worth the extra complexity and downsides".
Sometimes to make something really good you have to throw away the past and start over with a clean slate. With languages, this is very dangerous, because it's hard to build up a following for a new language. The whole reason C++ was able to create a following is because it was semi-backward compatible with C.
I don't know that much about C#, but it's guaranteed to be used and successful simply because Microsoft will probably embrace a huge internal development effort which will bleed over into the industry. I hope and pray that it turns out to be what C++ should have been... a nice, tight language like C with modern features, but without the insanity. I also hope and pray that it can be native compiled, and not require a Java-style runtime environment.
Most countries in Europe won't frown on a man with multiple lovers [...]
Yeah, but then you have to live in Europe. As the saying goes, it's a great place to visit, but I wouldn't want to live there. Actually, I find Europe to hugely more interesting than the US, primarily because of the history. It's everywhere in Europe. I really love exploring old buildings, and it's hard to find a new building in Europe.
But you can't get around the fact that the US rules in most categories (opportunity, convenience, quality of steak, price of food :) ).
Just for the record, DeCSS wasn't "cracked" in the usual sense. One of the DVD manufacturers didn't encrypt their key within a DVD player like they were supposed to, and some programmers discovered it.
If the key hadn't been discovered, DVDs would never be cracked (barring any new mathematical breakthroughs).
Why rob the world of your children just because your wife says so.
Yeah, but unfortunately those morals get in the way. It's a shame that bigamy isn't more socially acceptable.
You know what's even easier than setting up the straw man? Accusing someone of cheap debate tactics rather than engage the debate. It makes you look so much smarter to be able to "stay above the fray", while not having to actually present any arguments.
Bravo, sir, bravo, particularly the use of hitching your wagon to the poster's false accusation. That way, you are even farther removed from a direct criticism. "Yeah, you're right, that RM/101 is a fool. I wouldn't actually directly post that myself, but you go girl!"
Supposedly, the first rule of suffering fools is to ignore them. Unfortunately, I've always been bad at that. I know I shouldn't respond, but I can't help myself.
Yeah, sometimes it's hard being me. It's difficult devoting myself to setting the world straight, but it's part of the responsibility of being brilliant. I often say that I owe it to the world to have as many children as possible, but it looks like my wife will limit me to two. We'll have to see, though! It's a heavy burden having my genetics.
As an experiment, find a highway with a police officer matching your speed with his car to measure speed. Now, go too fast down the street and get a ticket. Take it to court. Will you be found guilty or innocent? You already know the answer. Do you know why you'll be found guilty? Right. Because the officer's car said you were guilty.
The issue isn't the technology used to catch criminals, the issue is the honesty, integrity and competence of the police. All things being equal, and without any other corroborating evidence, in many cases an officer's word will be taken over a suspect's word.
Now, off-topic, that's not to say that I don't think traffic laws need dramatic overhauls... turning police in tax collectors is insanely stupid city policy.
We're talking about being monitored, about having your face scanned and compared to a database. That is fundamentaly different than being observed.
It's exactly identical. What's the difference between a policeman seeing your face on the street and comparing your face to a "database" in his brain, and comparing your face to a database back at the office? Hypothetical: If we could implant a device that allowed perfect recall of police files in a policeman's brain, would you be against it? Why? Policeman should only have imperfect recall?
"Expectation of privacy" is not a legal term.
I hope you didn't pay much for your "legal dictionary". For your education, check out this law review article about these very issues. My favorite quote is this: "Therefore, based upon prior cases, it seems unlikely that the Court would characterize police video surveillance on the street as a "search," because the Court has stated that no reasonable expectation of privacy exists on public streets."
I never said that, why do you pretend that I've said something I haven't and then proceed to argue that non-existent statement?
The "?" symbol at the end of my sentence indicates a question, not a statement. I notice that you dodged the question at the end.
You sound like someone who hasn't spent much time in the reality of poor people.
Quite frankly, I don't need the cameras. I live in a nice house in a safe area. It's poor people in poor neighborhoods who need the cameras. Not only to catch crooks, but to also catch bad cops. It cuts both ways.
I would argue that you are the sheep, and paranoia is your herder.
The difference is that the tourist isn't actively scanning every face in the crowd against a database. Of course you know that, but you ignore the fact because it doesn't support your position.
No, I ignored that fact because it's irrelevent. Again, this tourist could see your face and identify you as a criminal. It's only a difference of efficiency.
And who is to say that these devices will always be used in the right way?
You can use the ol' "slippery slope" argument to argue against anything. We better not have police at all, because they will abuse some of the criminals. We better not use DNA, because it might be misused.
Everything has a downside, but in this case, it actually can protect us against abuses by the state, because they are recorded as well.