When your code breaks on AIX, it is a sign of bad code - even if the breakage is because AIX doesn't have a function you expect.
Why? A good programmer reuses code where possible. It's better code to use GNU MP or another such package, even if it doesn't run on AIX or some other random system, than to rewrite it.
He wants to take his ball and go home, I don't care, we are better off without people like him in the open source world.
Really? Ulrich Drepper may be an asshole, but he is the maintainer of GNU Libc, which seems to work. Can you really judge how important he is to the open source world from reading one essay?
I'm a fan of Debian, but I think that Debians effort to support the myriad of architectures out there is hurting it.
There is a lot of arguement about that on the Debian lists recently. I saw no evidence that in the analogous cases to AIX in GCC, that it was causing any problems. That is, the architectures that have enough porters and patchers and enough fast machines to keep Debian compiled haven't been a problem.
The systems that have a hard time keeping enough build machines running or any live build machines at all, and had no one to work on kernel and build-disk problems are the ones that caused many of Debian's problems. GCC users of slow machines and poorly maintained architecture code tend to get left behind, from what I've seen. (There is a lot of complaint from the users of the slow machines; GCC 4.0 is something like 30x slower than GCC 1.something.)
Okay, so the AIX guys are asshats in the way they treat GCC, fine
I've watched the GCC list; David Edelsohn has consistently worked with the other people on the list. He takes the time to work out a solution to the AIX problems. OTOH, when Ulrich Drepper thinks something is broken on GNU/Linux, he will fight tooth and nail for the solution he thinks is right, as long as it doesn't mean that he has to clearly explain why his solution is right.
I went through gifted classes with kids who exemplified this thinking. Everything was about showing off their smarts. Making a calculator out of flashlight bulbs and switches. Creating new number and word games every single day. Designing new things and creating new programs and writing new reports every day.
To keep the brain working at peak performance, you have to exercise it just like you do your muscles. That's exactly what the behavior a highly intelligent person should be exhibiting.
They can't see that Windows is easier to install, configure, use, and support than any Unix variant for the average person and try to make Linux as easy.
Everyone who cares is trying to make Linux as easy. Most of the rest aren't interested in making the needs of the average person their goal. I see no real evidence for this generalization.
incrementally improving on the original is not innovation.
Then what is? Your car still runs on wheels; does that mean that there hasn't been anything innovative there for several thousand years? Every thing is an incremental improvement on the last.
In the US, works by human authors are protected for 70 years from the death of the author only if they were originally published after 1978. Otherwise, they are protected for 95 years.
Which should be, what, listening to your edicts? Science is anti-authoritarian in nature; if you want to convince us, show us some evidence or at least make a logical argument.
I'm far from convinced you're right. For instance, it's obviously true that carbon dioxide doesn't immediately sink to the lowest places at Earth. On the other hand, several times CO2 has been dislodged from a volcanic lake or something similar, and has flowed downhill and displaced the lighter air, smothering a village or two of people. So it's clear that while there is a large degree of mixing, that the lighter gases do float on top of the heavier ones.
But weren't they created in the first place, frame by frame? It was feasible then, but not now? Hmmm... ok.
Then they were talking about mass-market selling at new product prices. Now, they're selling for much cheaper per minute of film to much smaller audiences.
Please, people, for the sake of our cultural future, try to develop discriminating tastes and vote accordingly with your hard-earned dollars whenever and wherever you can.
We're talking about cartoons here. I doubt many people would consider "Popeye the sailor man" the sign of discriminating tastes.
Frankly, it doesn't matter to me how much work goes into cleaning these pieces of film; the films themselves only have a moderate bit of interest. There is a point in which it costs more to improve the quality than it's worth; for me, the difference between the "low-quality" and the "high-quality" versions of these cartoons is negligible in value.
If escaping by its lighter mass is the reason the atmosphere isn't hydrogen-dominated, why hasn't the hydrogen escaped from the sun and Jupiter, leaving behind the 25% helium they are composed of?
Because Jupiter and the sun have a lot more gravity than the Earth does. Notice that the Moon's gravity doesn't hold oxygen or nitrogen, but does hold a little bit of sodium vapors.
Why doesn't the water vapor all rise to the top - it's lighter than oxygen or even nitrogen?
It does, doesn't it? Then it gets cold enough that it starts to change phase back into water and rains back to earth. If it didn't rise, how would we get clouds?
Really? It's funny; considering that hydrogen is the most common gas in the universe, why isn't the Earth's atmosphere mostly hydrogen? Is it not possible that it's light enough to rise to the top of the atmosphere and escape into space?
To me, just running the film through DNR is lazy and indicative of a company just trying to make a quick buck. [...] Clearly, those responsible have no excuse for it.
They're trying to produce the cartoons as cheap and quickly as possible. As someone who buys some of these cartoons, I see that as a decent excuse: I'm generally interested in cheap cartoons now, not expensive high-quality hand-processed cartoons later.
Original scholarship is costly and time-consuming to produce,
These journals don't pay for the scholarship. Scholars send their work in for free.
Those who publish it have the right -- indeed, the obligation -- to protect their own investment and the rights of their authors.
They have the obligation to protect the rights of their authors? That's great; do they ever plan to start? As far as I can tell, the author loses all rights by sending the work into the publisher.
but students from Saudi Arabia -- home country for most of the participants in the 9/11 attacks on New York and Washington, and much of the financing and ideology behind Islamist terrorism -- will not.
The only possible purpose to this statement is to inflame the debate.
Why? Saudi Arabians have repeatedly attacked the US, and Saudi Arabia is highly undemocratic and has no religious freedom. India is a free country and Indians have never posed a threat to the US. Shouldn't that be taken into account when discussing further restrictions on who can be taught dangerous information?
That's exactly what I said! If you keep pissing on commercial hardware manufacturers, they WILL go someplace else!
I fail to see why I care. Why is it an advantage to me that they use Linux?
But it's quite clear to them that the Linux community wants them to go fsck off.
Even if it was clear to them--and I hardly think Slashdot is a clear indicator of anything--they don't use Linux because it makes the Linux community happy, they use Linux because it provides certain advantages to them. If they wanted to use BSD, they would have used BSD.
eventually the commercial embedded users are going to look elsewhere.
Go for it. If you don't want the deal we're offering, go someplace else. I hardly see why it's a big deal if someone can't get a free ride on the exact terms they want. If you want a BSD license, use a BSD system, or any other system with similar licensing.
not even the [...] proprietary embedded OS vendors treat their customers like rotting pond scum.
They get paid. Start failing to live up to your agreement with these vendors--stop paying the price that was charged--and they'll stop treating you like the customer you aren't and more like the thief you are.
Of course not, they have to create buzz to let people know what is coming and to build an audience.
They're creating a buzz to keep customers on Solaris. Perhaps they shouldn't be surprised when people--often their competitors--create a counter-buzz to remind people that there are open source operating systems out there and that this one isn't out there and may never be out there. (And we've seen enough promised and expected programs disappear before release or slip release dates that we shouldn't flat out believe that we'll see the program when they say we will.)
Yes, it's corporate marketing. That's why we shouldn't accept it at face value, that's why we should complain about it and poke at it and try and convince other people to take it with large amounts of salt.
Slashdot as a community seems to have the opinion that if the announcement of something isnt accompanied by that something straight away, then its classed as vapourware,
It's tiring to hear all the noise about how great it's going to be, especially since we've seen many things be promised and never delivered. Perhaps we're a little cynical, but it's deserved in a lot of cases.
One of the favorite stunts a company has to attack its competitors is to announce that it will have what its competitors have now real soon now. As a developer for a Linux distribution, we and many of our competitors have an open source Un*x system out now. I don't see any reason why we shouldn't downplay promises from Sun; it's an attempt to keep people from running to us, Sun's competitors, for what they need, without actually having a competeting product (in the field of open source operating systems.)
However, some shows set really bad example. For example in Law and Order[...]
It says more about the public than about the TV; look at the wildly successful Dirty Harry movies and the generally successful Punisher series.
I have yet to see a show where an innocent defendant has been spared inprisonment because of the proper observance of his rights.
There's been a number of episodes in Law and Order where an innocent man has got off through the general observance of the law, and at least one in CSI where the attempt to frame a man failed because the police obtained the planted knife via an illegal search.
I wonder if there will ever be public access to that source code. All pre-1991 versions have been destroyed according to IBM; it doesn't seem unlikely that all the rest will be by the time it's public domain. It'd be nice if there were libraries where this was stored, especially if scholars could look through it. I can't imagine many trade secrets in decade-old code, but patterns could be interesting and educational.
(And no, I'm not asking for it to be open source, or even put on the net. Just some place where people can look at all the code that our society runs on and to keep it from being destroyed willy-dilly.)
C offers choice where Java offers restriction -- if you want bounds checking, choose a C compiler that does that.
Java offers the same choice; if you want to turn off bounds checking, use gcj with the -fno-bounds-check option. I suspect every other native Java compiler offers the same option, as do most native compilers for languages with bounds checking.
On the other hand, Java offers choice, in that you can chose how to handle an out-of-bounds condition, whereas even your hypothetical C compiler with bounds checking just kills the program.
To be honest, I don't really see any large difference between a crash dump and a fatal error message. They both serve the purpose of stating the reason for abnormal program termination before it happens.
No, a crash dump tells the end user absolutely nothing, but the fatal error message actually tells the end user what's wrong.
However, who says that some Q&D programs aren't most suited to be written in Java?
Then what's your problem? Write them in Java. But you can't expect language changes based on some of these types of programs might be better written in a modified Java, at the cost of programs that are currently written in Java.
Public resources don't mean that you have to be completely PC when you use those resources. They are just available to the public.
Public resources that are open to all can be used by any group. However, resources that aren't open to all can't be used by discrimentory groups. There's a court case about this and the Boy Scouts that got them kicked out of schools in California. That elementary gym probably wasn't open to all; the list of groups that could use it was probably pretty selective, and most groups wouldn't get accepted.
If a gay or atheist group wanted to use the gym, they could sign up just like everyone else. Yet, they can exclude straight and religious people from their groups.
Most gay groups don't exclude straight people from their groups. A religious person in a atheist group might be rarer, but very few atheist groups would formally exclude religious people, any more then most churches throw out atheists or other non-believers. Better for them to come and learn. It's the Boy Scouts, who have their students swear oaths to things orthogonal to primary goals of the group, that tend to have problems.
Whether the Java standards docs or the JVM standards docs define this (of course, they both do) is fairly irrelevant, since they are both designed for each other.
Thus Java has bounds checking because the standard defines it, not because of anything to do with the JVM. They may have been designed for each other, but that's irrelevant; you could destroy every JVM and every JVM definition in the world, and there would still be Java programs and compilers that can compile them into ELF executables for standard machines.
The fact of the matter is that when you compile Java code for its canonical platform -- the JVM -- array bounds checking is not implemented in the compiled code, but rather in the JVM (the "physical platform").
And when Ada is compiled for the JVM, array bounds checking is implemented using the JVM. So? Java the language supports bounds checking.
except when using ahead-of-time Java compilers like gcj, but I would argue that that is primarily because they have to emulate the JVM properly
No, they don't. They simply support the Java standard, not the JVM standard.
However, my point is that there is nothing in C that prevents the platform to do bounds checking -- it's just that most platforms don't. In other words, it's a lack of security at the platform level, not at the language level.
If in Ada, bounds-overflows can't happen, but in C they can, that's a lack of security at the language level. You're welcome to blame anyone else you want, but the language could have solved the problem, and here in reality, it's cheaper to fix the problem in software rather than replacing every computer on the planet.
the bounds checking should be done in hardware
Welcome back to real world. They aren't. Deal with it.
that is because those languages do manual bounds checks. Java doesn't -- why should C have to?
Ada and Java doesn't do manual bounds checks when running on the JVM. Ada and Java do manual bounds checks when running on the ix86. I fail to see the difference between the two.
why should languages in general have to make up for lacks in the hardware platforms?
Because the x86-64 is completely backwardly compatible with the 8088, and partially backwardly compatible with 4004 built in 1972. There's reality for you. Hardware is hard to change; languages are easier.
Problems should be solved in the right place rather than patched up for in another place.
A C implementation has no standard way of dealing with a bounds-overflow. An Ada or Java program can catch the overflow exception and continue running. I'd say that programming languages are the right place to define bounds checking, no matter how the underlying system handles it.
So your real complaint is that you get too verbose error messages?
No; "IOException in blah:..." isn't an error message, it's a crash dump. It tells the end-user nothing about what's wrong. The end-user doesn't want internal crap when a file is missing.
what about when I write a small utility program that only I will ever use?
If you want a quick and dirty language to write your small utility programs in, use perl. Not every programming language in the world needs to support Q&D programs at the cost of the people who have to use programs without knowing all the internal details.
Re:4.0.0 broke backward compatibility big time
on
A Review of GCC 4.0
·
· Score: 1
The fact of the matter is that there is a lot of real-world C code out there that has compiled just fine for years until the GCC developers got all prissy and started deliberately breaking code.
It can be seriously complex to be bug-compatible with every random C compiler ever written; in many cases, it means you can't add many optimizations or fix things. If people expect optimization and support for new features, they're going to have to give up support for every buggy fragile piece of crap ever written. If you want the set of code you can compile to remain exactly the same, stay with the same version of libc and GCC.
Bounds checking in Java is defined in the standards document independent of the JVM, just like in Ada and other portable languages that do bounds checking.
What if I write a Java replacement for UNIX cat or some other similar small utility program? Whyever would I want it to survive an IOException or a FileNotFoundException?
If I do "cat foo", I expect a message like "foo: file not found", not "IOException in blah: blah.java line 59, called from..."
I do, however, not understand what about that code makes it so "impossible" to do bounds checking.
foo can't tell the difference between an array getting passed in and a pointer to anything.
the reason why it is impractical on i386 is primarily because it's impossible to allocate more than 8192 descriptors to one process[...]
Then that's C's fault. It's not at all impractical on i386 for all the other languages that do bounds-checking.
When your code breaks on AIX, it is a sign of bad code - even if the breakage is because AIX doesn't have a function you expect.
Why? A good programmer reuses code where possible. It's better code to use GNU MP or another such package, even if it doesn't run on AIX or some other random system, than to rewrite it.
He wants to take his ball and go home, I don't care, we are better off without people like him in the open source world.
Really? Ulrich Drepper may be an asshole, but he is the maintainer of GNU Libc, which seems to work. Can you really judge how important he is to the open source world from reading one essay?
I'm a fan of Debian, but I think that Debians effort to support the myriad of architectures out there is hurting it.
There is a lot of arguement about that on the Debian lists recently. I saw no evidence that in the analogous cases to AIX in GCC, that it was causing any problems. That is, the architectures that have enough porters and patchers and enough fast machines to keep Debian compiled haven't been a problem.
The systems that have a hard time keeping enough build machines running or any live build machines at all, and had no one to work on kernel and build-disk problems are the ones that caused many of Debian's problems. GCC users of slow machines and poorly maintained architecture code tend to get left behind, from what I've seen. (There is a lot of complaint from the users of the slow machines; GCC 4.0 is something like 30x slower than GCC 1.something.)
Okay, so the AIX guys are asshats in the way they treat GCC, fine
I've watched the GCC list; David Edelsohn has consistently worked with the other people on the list. He takes the time to work out a solution to the AIX problems. OTOH, when Ulrich Drepper thinks something is broken on GNU/Linux, he will fight tooth and nail for the solution he thinks is right, as long as it doesn't mean that he has to clearly explain why his solution is right.
I went through gifted classes with kids who exemplified this thinking. Everything was about showing off their smarts. Making a calculator out of flashlight bulbs and switches. Creating new number and word games every single day. Designing new things and creating new programs and writing new reports every day.
To keep the brain working at peak performance, you have to exercise it just like you do your muscles. That's exactly what the behavior a highly intelligent person should be exhibiting.
They can't see that Windows is easier to install, configure, use, and support than any Unix variant for the average person and try to make Linux as easy.
Everyone who cares is trying to make Linux as easy. Most of the rest aren't interested in making the needs of the average person their goal. I see no real evidence for this generalization.
incrementally improving on the original is not innovation.
Then what is? Your car still runs on wheels; does that mean that there hasn't been anything innovative there for several thousand years? Every thing is an incremental improvement on the last.
In the US, works by human authors are protected for 70 years from the death of the author only if they were originally published after 1978. Otherwise, they are protected for 95 years.
I despair for the future of science.
Which should be, what, listening to your edicts? Science is anti-authoritarian in nature; if you want to convince us, show us some evidence or at least make a logical argument.
I'm far from convinced you're right. For instance, it's obviously true that carbon dioxide doesn't immediately sink to the lowest places at Earth. On the other hand, several times CO2 has been dislodged from a volcanic lake or something similar, and has flowed downhill and displaced the lighter air, smothering a village or two of people. So it's clear that while there is a large degree of mixing, that the lighter gases do float on top of the heavier ones.
But weren't they created in the first place, frame by frame? It was feasible then, but not now? Hmmm... ok.
Then they were talking about mass-market selling at new product prices. Now, they're selling for much cheaper per minute of film to much smaller audiences.
Please, people, for the sake of our cultural future, try to develop discriminating tastes and vote accordingly with your hard-earned dollars whenever and wherever you can.
We're talking about cartoons here. I doubt many people would consider "Popeye the sailor man" the sign of discriminating tastes.
Frankly, it doesn't matter to me how much work goes into cleaning these pieces of film; the films themselves only have a moderate bit of interest. There is a point in which it costs more to improve the quality than it's worth; for me, the difference between the "low-quality" and the "high-quality" versions of these cartoons is negligible in value.
If escaping by its lighter mass is the reason the atmosphere isn't hydrogen-dominated, why hasn't the hydrogen escaped from the sun and Jupiter, leaving behind the 25% helium they are composed of?
Because Jupiter and the sun have a lot more gravity than the Earth does. Notice that the Moon's gravity doesn't hold oxygen or nitrogen, but does hold a little bit of sodium vapors.
Why doesn't the water vapor all rise to the top - it's lighter than oxygen or even nitrogen?
It does, doesn't it? Then it gets cold enough that it starts to change phase back into water and rains back to earth. If it didn't rise, how would we get clouds?
It ain't like that.
Really? It's funny; considering that hydrogen is the most common gas in the universe, why isn't the Earth's atmosphere mostly hydrogen? Is it not possible that it's light enough to rise to the top of the atmosphere and escape into space?
To me, just running the film through DNR is lazy and indicative of a company just trying to make a quick buck. [...] Clearly, those responsible have no excuse for it.
They're trying to produce the cartoons as cheap and quickly as possible. As someone who buys some of these cartoons, I see that as a decent excuse: I'm generally interested in cheap cartoons now, not expensive high-quality hand-processed cartoons later.
Original scholarship is costly and time-consuming to produce,
These journals don't pay for the scholarship. Scholars send their work in for free.
Those who publish it have the right -- indeed, the obligation -- to protect their own investment and the rights of their authors.
They have the obligation to protect the rights of their authors? That's great; do they ever plan to start? As far as I can tell, the author loses all rights by sending the work into the publisher.
but students from Saudi Arabia -- home country for most of the participants in the 9/11 attacks on New York and Washington, and much of the financing and ideology behind Islamist terrorism -- will not.
The only possible purpose to this statement is to inflame the debate.
Why? Saudi Arabians have repeatedly attacked the US, and Saudi Arabia is highly undemocratic and has no religious freedom. India is a free country and Indians have never posed a threat to the US. Shouldn't that be taken into account when discussing further restrictions on who can be taught dangerous information?
That's exactly what I said! If you keep pissing on commercial hardware manufacturers, they WILL go someplace else!
I fail to see why I care. Why is it an advantage to me that they use Linux?
But it's quite clear to them that the Linux community wants them to go fsck off.
Even if it was clear to them--and I hardly think Slashdot is a clear indicator of anything--they don't use Linux because it makes the Linux community happy, they use Linux because it provides certain advantages to them. If they wanted to use BSD, they would have used BSD.
eventually the commercial embedded users are going to look elsewhere.
Go for it. If you don't want the deal we're offering, go someplace else. I hardly see why it's a big deal if someone can't get a free ride on the exact terms they want. If you want a BSD license, use a BSD system, or any other system with similar licensing.
not even the [...] proprietary embedded OS vendors treat their customers like rotting pond scum.
They get paid. Start failing to live up to your agreement with these vendors--stop paying the price that was charged--and they'll stop treating you like the customer you aren't and more like the thief you are.
Of course not, they have to create buzz to let people know what is coming and to build an audience.
They're creating a buzz to keep customers on Solaris. Perhaps they shouldn't be surprised when people--often their competitors--create a counter-buzz to remind people that there are open source operating systems out there and that this one isn't out there and may never be out there. (And we've seen enough promised and expected programs disappear before release or slip release dates that we shouldn't flat out believe that we'll see the program when they say we will.)
Yes, it's corporate marketing. That's why we shouldn't accept it at face value, that's why we should complain about it and poke at it and try and convince other people to take it with large amounts of salt.
Slashdot as a community seems to have the opinion that if the announcement of something isnt accompanied by that something straight away, then its classed as vapourware,
It's tiring to hear all the noise about how great it's going to be, especially since we've seen many things be promised and never delivered. Perhaps we're a little cynical, but it's deserved in a lot of cases.
One of the favorite stunts a company has to attack its competitors is to announce that it will have what its competitors have now real soon now. As a developer for a Linux distribution, we and many of our competitors have an open source Un*x system out now. I don't see any reason why we shouldn't downplay promises from Sun; it's an attempt to keep people from running to us, Sun's competitors, for what they need, without actually having a competeting product (in the field of open source operating systems.)
However, some shows set really bad example. For example in Law and Order[...]
It says more about the public than about the TV; look at the wildly successful Dirty Harry movies and the generally successful Punisher series.
I have yet to see a show where an innocent defendant has been spared inprisonment because of the proper observance of his rights.
There's been a number of episodes in Law and Order where an innocent man has got off through the general observance of the law, and at least one in CSI where the attempt to frame a man failed because the police obtained the planted knife via an illegal search.
I wonder if there will ever be public access to that source code. All pre-1991 versions have been destroyed according to IBM; it doesn't seem unlikely that all the rest will be by the time it's public domain. It'd be nice if there were libraries where this was stored, especially if scholars could look through it. I can't imagine many trade secrets in decade-old code, but patterns could be interesting and educational.
(And no, I'm not asking for it to be open source, or even put on the net. Just some place where people can look at all the code that our society runs on and to keep it from being destroyed willy-dilly.)
C offers choice where Java offers restriction -- if you want bounds checking, choose a C compiler that does that.
Java offers the same choice; if you want to turn off bounds checking, use gcj with the -fno-bounds-check option. I suspect every other native Java compiler offers the same option, as do most native compilers for languages with bounds checking.
On the other hand, Java offers choice, in that you can chose how to handle an out-of-bounds condition, whereas even your hypothetical C compiler with bounds checking just kills the program.
To be honest, I don't really see any large difference between a crash dump and a fatal error message. They both serve the purpose of stating the reason for abnormal program termination before it happens.
No, a crash dump tells the end user absolutely nothing, but the fatal error message actually tells the end user what's wrong.
However, who says that some Q&D programs aren't most suited to be written in Java?
Then what's your problem? Write them in Java. But you can't expect language changes based on some of these types of programs might be better written in a modified Java, at the cost of programs that are currently written in Java.
Public resources don't mean that you have to be completely PC when you use those resources. They are just available to the public.
Public resources that are open to all can be used by any group. However, resources that aren't open to all can't be used by discrimentory groups. There's a court case about this and the Boy Scouts that got them kicked out of schools in California. That elementary gym probably wasn't open to all; the list of groups that could use it was probably pretty selective, and most groups wouldn't get accepted.
If a gay or atheist group wanted to use the gym, they could sign up just like everyone else. Yet, they can exclude straight and religious people from their groups.
Most gay groups don't exclude straight people from their groups. A religious person in a atheist group might be rarer, but very few atheist groups would formally exclude religious people, any more then most churches throw out atheists or other non-believers. Better for them to come and learn. It's the Boy Scouts, who have their students swear oaths to things orthogonal to primary goals of the group, that tend to have problems.
Whether the Java standards docs or the JVM standards docs define this (of course, they both do) is fairly irrelevant, since they are both designed for each other.
..." isn't an error message, it's a crash dump. It tells the end-user nothing about what's wrong. The end-user doesn't want internal crap when a file is missing.
Thus Java has bounds checking because the standard defines it, not because of anything to do with the JVM. They may have been designed for each other, but that's irrelevant; you could destroy every JVM and every JVM definition in the world, and there would still be Java programs and compilers that can compile them into ELF executables for standard machines.
The fact of the matter is that when you compile Java code for its canonical platform -- the JVM -- array bounds checking is not implemented in the compiled code, but rather in the JVM (the "physical platform").
And when Ada is compiled for the JVM, array bounds checking is implemented using the JVM. So? Java the language supports bounds checking.
except when using ahead-of-time Java compilers like gcj, but I would argue that that is primarily because they have to emulate the JVM properly
No, they don't. They simply support the Java standard, not the JVM standard.
However, my point is that there is nothing in C that prevents the platform to do bounds checking -- it's just that most platforms don't. In other words, it's a lack of security at the platform level, not at the language level.
If in Ada, bounds-overflows can't happen, but in C they can, that's a lack of security at the language level. You're welcome to blame anyone else you want, but the language could have solved the problem, and here in reality, it's cheaper to fix the problem in software rather than replacing every computer on the planet.
the bounds checking should be done in hardware
Welcome back to real world. They aren't. Deal with it.
that is because those languages do manual bounds checks. Java doesn't -- why should C have to?
Ada and Java doesn't do manual bounds checks when running on the JVM. Ada and Java do manual bounds checks when running on the ix86. I fail to see the difference between the two.
why should languages in general have to make up for lacks in the hardware platforms?
Because the x86-64 is completely backwardly compatible with the 8088, and partially backwardly compatible with 4004 built in 1972. There's reality for you. Hardware is hard to change; languages are easier.
Problems should be solved in the right place rather than patched up for in another place.
A C implementation has no standard way of dealing with a bounds-overflow. An Ada or Java program can catch the overflow exception and continue running. I'd say that programming languages are the right place to define bounds checking, no matter how the underlying system handles it.
So your real complaint is that you get too verbose error messages?
No; "IOException in blah:
what about when I write a small utility program that only I will ever use?
If you want a quick and dirty language to write your small utility programs in, use perl. Not every programming language in the world needs to support Q&D programs at the cost of the people who have to use programs without knowing all the internal details.
The fact of the matter is that there is a lot of real-world C code out there that has compiled just fine for years until the GCC developers got all prissy and started deliberately breaking code.
It can be seriously complex to be bug-compatible with every random C compiler ever written; in many cases, it means you can't add many optimizations or fix things. If people expect optimization and support for new features, they're going to have to give up support for every buggy fragile piece of crap ever written. If you want the set of code you can compile to remain exactly the same, stay with the same version of libc and GCC.
Of course -- because the JVM does it.
..."
Bounds checking in Java is defined in the standards document independent of the JVM, just like in Ada and other portable languages that do bounds checking.
What if I write a Java replacement for UNIX cat or some other similar small utility program? Whyever would I want it to survive an IOException or a FileNotFoundException?
If I do "cat foo", I expect a message like "foo: file not found", not "IOException in blah: blah.java line 59, called from
I do, however, not understand what about that code makes it so "impossible" to do bounds checking.
foo can't tell the difference between an array getting passed in and a pointer to anything.
the reason why it is impractical on i386 is primarily because it's impossible to allocate more than 8192 descriptors to one process[...]
Then that's C's fault. It's not at all impractical on i386 for all the other languages that do bounds-checking.