Serifs DO help reading on paper because the "little thignies" (serifs) that extend perpendicular to stroke ends help the eye denote where the stroke actually ends. And it also helps greatly to differentiate different letters, such as capital "i", lower-case "l" and the digit one, a thing impossible to do in a (otherwise beautiful) font like "Gill Sans".
Thank you for the review of chapter 1 of the typography textbook. However, if you turn to chapter 2, I believe you may find some surprises...
The conventional wisdom that serifs are far superior for blocks of text has been challenged by several recent studies. This was the first article I found on-line in a quick search, and seems to cite several relevant studies if you're interested.
You might also like to know that since adults generally read by recognising word shapes rather than individual letters, the fact that some sans-serif faces barely distinguish a capital I and lowercase l makes surprisingly little difference to the readability (as opposed to the perceived legibility) of a body of text. In fact, extra features as found on, say, a serifed letter C can actually make the word shapres harder to distinguish than the sans-serif equivalent, reducing clarity in word forms and ultimately compromising reading speed.
I think there's a lot of misunderstanding about what makes fonts easy to read. The reason both Verdana and Georgia are easier for most people to read on a screen has more to do with being well-hinted, being designed to avoid warts at the relatively low resolutions in use, and having a large x-height. None of these is particularly true of obvious alternatives like Times Roman and Helvetica/Arial on most of today's systems. The presence or absence of serifs has relatively little to do with it.
More surprisingly, some research has suggested that serifs don't actually help much on paper either, at least for shorter works. They do seem to boost reading ease in long, blocky works like novels, but for something like a magazine article or a short paper, reading ease isn't much of an indicator one way or the other.
there is no way for the consumer to benefit from the [proprietary] software.
That is simply not true. From a customer perspective, I would rather have one good proprietary solution that serves my needs than a dozen mediocre but interoperable ones. I only need one at once!
This is good advice. A few years back, when I was at university, we were having phone connections installed in all the student rooms for the first time. For several months, the building I was in was left disconnected, with engineers failing to turn up and the service provider's call centre staff giving us the brush off.
After a while, my next-door neighbour got annoyed at this treatment, and after a little investigation he had worked out the managing director's home phone number. He rang at 9pm on a Saturday night, at which time said managing director was in the middle of a dinner party.
Within half an hour (i.e., in the middle of Saturday night), two vans with three engineers each had turned up, and the wired up not just my neighbour's room, but the whole building.
There are several mottos I live by. One of them is "Perfect is the enemy of Good."
I've never really bought into the "best is the enemy of the good" argument. Personally (YMMV) I see it as an excuse for not trying. I prefer to think about aiming high: "good" is just a step on the way to perfecting something, and is followed by "very good", "excellent", etc. The closer I can get to perfection, within the constraints I'm working to, the better.
The important thing is to understand that you will rarely reach perfection itself, if only because practicalities usually get in the way, and that this is inevitble and does not represent a failure. What counts is that you did your best and got as good a result as you realistically could. Perfection and "good enough" aren't opposites; they're just the theoretical vs. the practical side of the same thing.
IMHO, whatever you do, you should never sit back and accept "good enough". Mediocrity is the first step to failure, in your own mind if not in practice, and if something's worth doing, it's worth doing properly.
We used to have a teacher at my school who taught A-Level Further Mathematics. (This is pretty much the most advanced maths qualification 16-18 year olds study for in the UK, give or take entry exams for a couple of universities.) When the school changed to a much easier syllabus in an effort to improve the students' grades, this particular teacher was having none of it, and kept teaching people to do maths instead of to pass exams, the way she had been for some 40 years. Unlike the teachers following the new syllabus, all of her students got A grades, without exception. Moreover, by not "coasting" through two years of education because the course was too easy, they maintained their enthusiasm and momentum, and were much better prepared when they got to university that the students who had just been taught the (new, weaker) syllabus at other schools.
The problem with ratings is that they're pretty unreliable. The last two personal laser printers I've bought have both been awarding-winning, chosen after plenty of research, and yet still turned out not have serious problems.
The first, a Panasonic KX-P6300, was at the time by far the most recommended personal laser printer in not one but every PC magazine I looked in for several months. It was indeed a nice little printer: good print quality for the time, a convenient space-saving format, and remarkably cheap. Unfortunately, finding replacement toner was a nightmare -- despite it high profile, it wasn't mainstream enough for the office shops to stock its toner routinely, so mail order expenses crept in every time it needed a refill. Worse, Panasonic completely screwed its user base by not providing drivers for its "older" models on new OSes (y'know, like Windows 2000/XP, the former of which was out within about 2-3 years of my buying the printer). I imagine that was to force users to upgrade, and I did... but not to a Panasonic, from whom I won't be buying again any time soon after that little PR wonder.
The second, a Kyocera-Mita FS-1010, was also much-recommended as a box with decent print quality at a reasonable price. Unfortunately, it's made of tacky plastic. The manual feeder need practically wrenching into place and feels like it's going to snap, and even then it leaves toner smear at the top of the paper on the "straight through" paper path as often as not. (This is using heavy card but within the printer's spec, BTW -- in other words, it's exactly what that paper path is supposed to be for.) The Windows printer driver quality appears to suck as well; it never installs cleanly (I get the "new hardware" wizard every time I switch the printer on) and if the printer gets confused and needs powering off and on again then I have to completely restart Windows just to get it to notice the printer again.:-(
Next time, I'll be going for an workplace-class product (since anything "personal" or "SOHO" these days seems to be plastic junk, while office boxes do at least seem to have some sort of quality about them) from a big-name manufacturer with a good reputation for quality printer drivers, no matter how good the little guy's printer may be according to magazine/web site reviews.
[Unauthorised pop-ups are] an annoyance, not a security risk.
That depends on whether they're used as part of a larger vulnerability, doesn't it? We were discussing a vulnerability that can be exploited by opening pop-up windows that don't go where you think they do just a few weeks ago...
I'm a Firefox fan and long-time user of the Mozilla family. I, too, have seen several significant weaknesses in Firefox's security. Those include web sites popping up new windows despite my settings supposedly preventing that, and seeing incorrect information about links in the status bar, again despite my settings supposedly preventing that.
Firefox may still be better in this area than the competition based on performance to date, but the problems cited by the GP do exist, and calling someone a shill because you disagree with them is not a very convincing argument.
Java has several pretty fundamental disadvantages when it comes to serious numerical work, compared to a language like C or C++.
The most obvious is the "everything is an object" principle. If you can't create value types for things like vectors or complex numbers, you're imposing performance overheads for dereferencing before you even start doing any maths.
Moreover, serious maths work often involves large data sets. We work with graphs with many thousands of nodes pretty routinely, which can make fine control of how much memory each node occupies very important even on powerful workstations with lots of RAM. When you're constrained to do everything using indirection and using a limited set of primitive types, this is difficult to impossible.
Then of course there's Java's floating point requirements, which were technically impossible to meet for a long time IIRC. I'm not sure whether they've been fixed even today, but certainly if you require a VM to do a manual series expansion to calculate trigonometric functions according to your strict requirements, while everyone else is using a single FPU instruction and getting an answer that is either identical or off by one in the last binary place, you are not going to be winning in the performance stakes.
The bottom line is that the same things that are strengths for safety/security in general applications -- lack of low-level control and banning dangerous primitive constructs -- can be huge weaknesses when those are necessary to achieve an acceptable result in the real world.
Despite Sun's propaganda, I suspect C and C++ are still considerably more portable than Java. I don't know how you managed to get code only compiling on one machine on one platform. We routinely build our code on something like 15 different compiler/platform combinations, with many more having come and gone in the past, and anything not building on any platform is usually an old compiler failing to support a standard feature properly so we rewrite that code to work around the problem. Java's "perfectly portable" floating point requirements might be an advantage in this area -- we do occasionally see very minor discrepancies in the outputs on different platforms -- but I don't see Java as an advantage for actually compiling your code across different platforms.
Inlined code is not always a win. There is a point where decreased branch misprediction penalties are overwhelmed by shitty cache utilization.
Sure, it depends on context. I was thinking of simple things like a sort function. In C++, using std::sort, any ordering function you pass through can potentially be considered by the compiler, inlined directly into the sorting loop, and then fully optimised as if it had been written there all the time. You just can't do that with the extra level of indirection required by function pointers, or whatever the equivalent is in your language of choice. Typically an ordering function will be quite short, and as such an inlining operation like this will save space as well as reducing branching, making it a win-win option on any architecture you like.
Sorry, but I think you missed my point. The posts further up were attacking C and C++ code for its frequent vulnerability to certain kinds of attack. My point was simply that in Java you can't even write code to perform equivalent tasks in the first place, so it's hardly a fair comparison.
From your comments, I'm guessing your experience is almost entirely in database-driven projects. Here the attacks are more likely things like SQL injection anyway, and Java is no more inherently protected there than C or C++.
Java and.net are the next step to the future. A future that will eventually be that businesses just graphically design their business models and rules, that are executed. There will always be a need for low-level programming for purposes like building operating systems and tools, but the desire of businesses is to have a shorter gap between requirements and delivery. That does not mean C++.
J2EE and.Net obviously have potential for distributed database applications with client-side UIs, which certainly covers a large class of business applications. It's hardly the entire software development market, though.
All those bells and whistles are mostly useless for scientific and engineering applications, and I'd bet there's at least as much work in the instrument control/embedded market as there is in business database apps. These areas tend to use C, C++, or perhaps FORTRAN at present, for their performance, portability, and/or low level control.
I'm quite sure that the future in these areas is not with C++. Indeed, it would be sad if we couldn't learn from several decades of programming experience and come up with a cleaner, safer, more powerful language than that sooner or later. However, neither Java nor.Net-in-whatever-syntax is going to be that evolution. Their advantages simply aren't very relevant to people working in these other fields, and in some cases they're clear steps backwards. In that sense, they very much are toy languages. The fact that they happen to be convenient for writing glorified database apps doesn't change that.
Most people who are going to use the new.NET support are people who have legacy C programs and want to gradually transition them to the.NET base in stages. [...] The other constituency is folk who are writing stuff that is almost but not quite at driver level.
There are also a lot of developers who write libraries rather than finished executables. If your library is written in C++ for portability reasons, then Managed C++ as-was or C++/CLI as-will-be is probably the easiest way to provide a wrapper for anyone writing under.NET to use your products.
OK, there are lots of links there, and assuming they are what they say they are, they demonstrate that Java has some fairly routine numerical libraries available for it. That doesn't much help with your claims about performance, though. Do any of those libraries you mentioned provide some sort of timing information that can be compared to C++ code performing equivalent operations?
Sure it does, comiled Java code can be just as fast as C++ code and nearly as fast as C code.
You imply that compiled C code is faster than compiled C++ code, which IME is rarely the case these days. In particular, optimisations performed by C++ compilers have almost caught up with their C brethren. With almost perfect zero-overhead implementations of all the major C++-only language features now in common use and the added performance boost from things like inlined code in templates, the balance often tips significantly in C++'s favour now.
There is numeric code available for Java today that is just as fast as equivilant libraries for C++.
Can you give some examples of high quality numerical libraries written in pure Java (i.e., without JNI)?
Disclaimer: I'm a professional C++ developer, and I write high performance maths libraries for a living.
Assuming this is a genuine question and not a troll: it removes the consistency from the type system that was supposed to be one of Java's original selling points, and consequently necessitates hacks involving wrapper types and/or artificial concepts like boxing to write code in Java that could be written quite straightforwardly in other languages.
I highly doubt that we will see a virus or serious security issue in applications built with Java anytime soon.
Maybe that's because you can't write much of the software that could be vulnerable to that sort of thing in Java at all. When was the last time you saw an operating system written in Java?
Java is an excellent example of a useful tool to help protect Joe Average programmers from certain types of programmer error. However, if you think removing pointers from a language guarantees security, then please consider that many of the most common security flaws are due to things like SQL injection, which Java does nothing to prevent.
Java is also a child's toy that regresses the state of the art by nearly 20 years in the hands of a good programmer, and those are usually the guys who write operating systems, networking utilities, etc. Any competent C++ programmer will be using pointers very little and in tightly controlled areas of the code anyway. C++ is not C, and has much stronger tools for abstraction.
The broader question is: why should they get special protection,
It's no more special than any other law, and it's there for exactly the same reason: overall, it is helpful to society.
especially when it involves the ability to use government force to override the rights that people have with their own real, physical private property.
Please see my reply to the post above yours: you don't have any rights with that real, physical property without the law either.
Your alternative plan where society collectively funds developments is interesting, but I fear you may have massively underestimated how much of today's economy depends on the copyright mechanism.
I have to disagree here. Physical property is a remarkably simple concept, and can only be considered atrificial if viewed out of the context of the real world. Property with regard to land is an extension of "territory", a concept even dogs understand.
Please don't misunderstand me. I am not claiming that physical property and "intellectual property" are equivalent concepts; clearly they differ in many significant ways, including those you mentioned.
However, they are both equally artificial. The default state for physical property is that the most powerful person takes what he or she wants, and the least powerful gets what's left. To take up your own example of territory, many animals will mark out territory as a warning, but they will defend it, forcibly if necessary. Some animals, including humans, develop social contract where the concept of ownership is respected without resorting to violence, but this is an evolutionary step, not the starting point.
I believe it is also a mistake to claim IP laws treat information as if it were physical property. No IP law does that, whether copyright, patents, trademarks or whatever. There is no "fair use" exemption to theft if I borrow your car while you didn't need it and return it undamaged, for example. However, it is in society's interests to guarantee certain property-like rights to a copyright holder in order to promote development of new material, and that is what these laws are for.
People will still want to protect their "intellectual property" -- this fight is far from over.
And why shouldn't they?
The term "intellectual property" is rather misleading: there are superficial similarities between patents, copyright and trademarks, to give the most common examples, but their significance is rather different.
In particular, while software patents are one of those ideas that sounded promising but has been shown not to work well in practice, copyright has been quite the opposite. This kind of intellectual property has many of the same advantages to society as physical property (an equally artificial concept if you consider it for a moment). Despite the often made but really pretty shallow arguments against copyright, it has proven to be a valuable tool in balancing modern economies where information is valuable.
So does Herb Schildt, but that doesn't mean what he writes is accurate. That's not to say the two authors are comparable, of course; I am merely demonstrating that having written a book does not automatically make you correct, nor does not having written a book automatically make you wrong.
In this particular case, since allowing implicit conversions is a pretty good practical definition a weak type system, the GP makes a fair point.
You mention bios boot passwords. Is that truly neccessary ? Bios configuration password sounds more reasonable to me. But either one is of rather limited use, unless you are using some form of fortified pc case.
They're of pretty limited use even then. Almost every major BIOS manufacturer includes a standard back-door password so support guys can get into a locked machine. I know most of them, and I suspect my friend Mr Google would soon tell me any others I needed. Kinda defeats the point, doesn't it?
Thank you for the review of chapter 1 of the typography textbook. However, if you turn to chapter 2, I believe you may find some surprises...
The conventional wisdom that serifs are far superior for blocks of text has been challenged by several recent studies. This was the first article I found on-line in a quick search, and seems to cite several relevant studies if you're interested.
You might also like to know that since adults generally read by recognising word shapes rather than individual letters, the fact that some sans-serif faces barely distinguish a capital I and lowercase l makes surprisingly little difference to the readability (as opposed to the perceived legibility) of a body of text. In fact, extra features as found on, say, a serifed letter C can actually make the word shapres harder to distinguish than the sans-serif equivalent, reducing clarity in word forms and ultimately compromising reading speed.
I think there's a lot of misunderstanding about what makes fonts easy to read. The reason both Verdana and Georgia are easier for most people to read on a screen has more to do with being well-hinted, being designed to avoid warts at the relatively low resolutions in use, and having a large x-height. None of these is particularly true of obvious alternatives like Times Roman and Helvetica/Arial on most of today's systems. The presence or absence of serifs has relatively little to do with it.
More surprisingly, some research has suggested that serifs don't actually help much on paper either, at least for shorter works. They do seem to boost reading ease in long, blocky works like novels, but for something like a magazine article or a short paper, reading ease isn't much of an indicator one way or the other.
That is simply not true. From a customer perspective, I would rather have one good proprietary solution that serves my needs than a dozen mediocre but interoperable ones. I only need one at once!
This is good advice. A few years back, when I was at university, we were having phone connections installed in all the student rooms for the first time. For several months, the building I was in was left disconnected, with engineers failing to turn up and the service provider's call centre staff giving us the brush off.
After a while, my next-door neighbour got annoyed at this treatment, and after a little investigation he had worked out the managing director's home phone number. He rang at 9pm on a Saturday night, at which time said managing director was in the middle of a dinner party.
Within half an hour (i.e., in the middle of Saturday night), two vans with three engineers each had turned up, and the wired up not just my neighbour's room, but the whole building.
Heh. Where I used to work, there was some common code that included the line
Rumour had it that the code was actually written by the CTO in his younger days...
I've never really bought into the "best is the enemy of the good" argument. Personally (YMMV) I see it as an excuse for not trying. I prefer to think about aiming high: "good" is just a step on the way to perfecting something, and is followed by "very good", "excellent", etc. The closer I can get to perfection, within the constraints I'm working to, the better.
The important thing is to understand that you will rarely reach perfection itself, if only because practicalities usually get in the way, and that this is inevitble and does not represent a failure. What counts is that you did your best and got as good a result as you realistically could. Perfection and "good enough" aren't opposites; they're just the theoretical vs. the practical side of the same thing.
IMHO, whatever you do, you should never sit back and accept "good enough". Mediocrity is the first step to failure, in your own mind if not in practice, and if something's worth doing, it's worth doing properly.
We used to have a teacher at my school who taught A-Level Further Mathematics. (This is pretty much the most advanced maths qualification 16-18 year olds study for in the UK, give or take entry exams for a couple of universities.) When the school changed to a much easier syllabus in an effort to improve the students' grades, this particular teacher was having none of it, and kept teaching people to do maths instead of to pass exams, the way she had been for some 40 years. Unlike the teachers following the new syllabus, all of her students got A grades, without exception. Moreover, by not "coasting" through two years of education because the course was too easy, they maintained their enthusiasm and momentum, and were much better prepared when they got to university that the students who had just been taught the (new, weaker) syllabus at other schools.
Unfortunately, some of us actually need things like duplexing, colour or large format printing...
The problem with ratings is that they're pretty unreliable. The last two personal laser printers I've bought have both been awarding-winning, chosen after plenty of research, and yet still turned out not have serious problems.
The first, a Panasonic KX-P6300, was at the time by far the most recommended personal laser printer in not one but every PC magazine I looked in for several months. It was indeed a nice little printer: good print quality for the time, a convenient space-saving format, and remarkably cheap. Unfortunately, finding replacement toner was a nightmare -- despite it high profile, it wasn't mainstream enough for the office shops to stock its toner routinely, so mail order expenses crept in every time it needed a refill. Worse, Panasonic completely screwed its user base by not providing drivers for its "older" models on new OSes (y'know, like Windows 2000/XP, the former of which was out within about 2-3 years of my buying the printer). I imagine that was to force users to upgrade, and I did... but not to a Panasonic, from whom I won't be buying again any time soon after that little PR wonder.
The second, a Kyocera-Mita FS-1010, was also much-recommended as a box with decent print quality at a reasonable price. Unfortunately, it's made of tacky plastic. The manual feeder need practically wrenching into place and feels like it's going to snap, and even then it leaves toner smear at the top of the paper on the "straight through" paper path as often as not. (This is using heavy card but within the printer's spec, BTW -- in other words, it's exactly what that paper path is supposed to be for.) The Windows printer driver quality appears to suck as well; it never installs cleanly (I get the "new hardware" wizard every time I switch the printer on) and if the printer gets confused and needs powering off and on again then I have to completely restart Windows just to get it to notice the printer again. :-(
Next time, I'll be going for an workplace-class product (since anything "personal" or "SOHO" these days seems to be plastic junk, while office boxes do at least seem to have some sort of quality about them) from a big-name manufacturer with a good reputation for quality printer drivers, no matter how good the little guy's printer may be according to magazine/web site reviews.
That depends on whether they're used as part of a larger vulnerability, doesn't it? We were discussing a vulnerability that can be exploited by opening pop-up windows that don't go where you think they do just a few weeks ago...
My apologies; I hadn't noticed the below-threshold AC reply.
I'm a Firefox fan and long-time user of the Mozilla family. I, too, have seen several significant weaknesses in Firefox's security. Those include web sites popping up new windows despite my settings supposedly preventing that, and seeing incorrect information about links in the status bar, again despite my settings supposedly preventing that.
Firefox may still be better in this area than the competition based on performance to date, but the problems cited by the GP do exist, and calling someone a shill because you disagree with them is not a very convincing argument.
Java has several pretty fundamental disadvantages when it comes to serious numerical work, compared to a language like C or C++.
The most obvious is the "everything is an object" principle. If you can't create value types for things like vectors or complex numbers, you're imposing performance overheads for dereferencing before you even start doing any maths.
Moreover, serious maths work often involves large data sets. We work with graphs with many thousands of nodes pretty routinely, which can make fine control of how much memory each node occupies very important even on powerful workstations with lots of RAM. When you're constrained to do everything using indirection and using a limited set of primitive types, this is difficult to impossible.
Then of course there's Java's floating point requirements, which were technically impossible to meet for a long time IIRC. I'm not sure whether they've been fixed even today, but certainly if you require a VM to do a manual series expansion to calculate trigonometric functions according to your strict requirements, while everyone else is using a single FPU instruction and getting an answer that is either identical or off by one in the last binary place, you are not going to be winning in the performance stakes.
The bottom line is that the same things that are strengths for safety/security in general applications -- lack of low-level control and banning dangerous primitive constructs -- can be huge weaknesses when those are necessary to achieve an acceptable result in the real world.
Despite Sun's propaganda, I suspect C and C++ are still considerably more portable than Java. I don't know how you managed to get code only compiling on one machine on one platform. We routinely build our code on something like 15 different compiler/platform combinations, with many more having come and gone in the past, and anything not building on any platform is usually an old compiler failing to support a standard feature properly so we rewrite that code to work around the problem. Java's "perfectly portable" floating point requirements might be an advantage in this area -- we do occasionally see very minor discrepancies in the outputs on different platforms -- but I don't see Java as an advantage for actually compiling your code across different platforms.
Sure, it depends on context. I was thinking of simple things like a sort function. In C++, using std::sort, any ordering function you pass through can potentially be considered by the compiler, inlined directly into the sorting loop, and then fully optimised as if it had been written there all the time. You just can't do that with the extra level of indirection required by function pointers, or whatever the equivalent is in your language of choice. Typically an ordering function will be quite short, and as such an inlining operation like this will save space as well as reducing branching, making it a win-win option on any architecture you like.
Sorry, but I think you missed my point. The posts further up were attacking C and C++ code for its frequent vulnerability to certain kinds of attack. My point was simply that in Java you can't even write code to perform equivalent tasks in the first place, so it's hardly a fair comparison.
From your comments, I'm guessing your experience is almost entirely in database-driven projects. Here the attacks are more likely things like SQL injection anyway, and Java is no more inherently protected there than C or C++.
J2EE and .Net obviously have potential for distributed database applications with client-side UIs, which certainly covers a large class of business applications. It's hardly the entire software development market, though.
All those bells and whistles are mostly useless for scientific and engineering applications, and I'd bet there's at least as much work in the instrument control/embedded market as there is in business database apps. These areas tend to use C, C++, or perhaps FORTRAN at present, for their performance, portability, and/or low level control.
I'm quite sure that the future in these areas is not with C++. Indeed, it would be sad if we couldn't learn from several decades of programming experience and come up with a cleaner, safer, more powerful language than that sooner or later. However, neither Java nor .Net-in-whatever-syntax is going to be that evolution. Their advantages simply aren't very relevant to people working in these other fields, and in some cases they're clear steps backwards. In that sense, they very much are toy languages. The fact that they happen to be convenient for writing glorified database apps doesn't change that.
There are also a lot of developers who write libraries rather than finished executables. If your library is written in C++ for portability reasons, then Managed C++ as-was or C++/CLI as-will-be is probably the easiest way to provide a wrapper for anyone writing under .NET to use your products.
OK, there are lots of links there, and assuming they are what they say they are, they demonstrate that Java has some fairly routine numerical libraries available for it. That doesn't much help with your claims about performance, though. Do any of those libraries you mentioned provide some sort of timing information that can be compared to C++ code performing equivalent operations?
You imply that compiled C code is faster than compiled C++ code, which IME is rarely the case these days. In particular, optimisations performed by C++ compilers have almost caught up with their C brethren. With almost perfect zero-overhead implementations of all the major C++-only language features now in common use and the added performance boost from things like inlined code in templates, the balance often tips significantly in C++'s favour now.
Can you give some examples of high quality numerical libraries written in pure Java (i.e., without JNI)?
Disclaimer: I'm a professional C++ developer, and I write high performance maths libraries for a living.
Assuming this is a genuine question and not a troll: it removes the consistency from the type system that was supposed to be one of Java's original selling points, and consequently necessitates hacks involving wrapper types and/or artificial concepts like boxing to write code in Java that could be written quite straightforwardly in other languages.
Maybe that's because you can't write much of the software that could be vulnerable to that sort of thing in Java at all. When was the last time you saw an operating system written in Java?
Java is an excellent example of a useful tool to help protect Joe Average programmers from certain types of programmer error. However, if you think removing pointers from a language guarantees security, then please consider that many of the most common security flaws are due to things like SQL injection, which Java does nothing to prevent.
Java is also a child's toy that regresses the state of the art by nearly 20 years in the hands of a good programmer, and those are usually the guys who write operating systems, networking utilities, etc. Any competent C++ programmer will be using pointers very little and in tightly controlled areas of the code anyway. C++ is not C, and has much stronger tools for abstraction.
It's no more special than any other law, and it's there for exactly the same reason: overall, it is helpful to society.
Please see my reply to the post above yours: you don't have any rights with that real, physical property without the law either.
Your alternative plan where society collectively funds developments is interesting, but I fear you may have massively underestimated how much of today's economy depends on the copyright mechanism.
Please don't misunderstand me. I am not claiming that physical property and "intellectual property" are equivalent concepts; clearly they differ in many significant ways, including those you mentioned.
However, they are both equally artificial. The default state for physical property is that the most powerful person takes what he or she wants, and the least powerful gets what's left. To take up your own example of territory, many animals will mark out territory as a warning, but they will defend it, forcibly if necessary. Some animals, including humans, develop social contract where the concept of ownership is respected without resorting to violence, but this is an evolutionary step, not the starting point.
I believe it is also a mistake to claim IP laws treat information as if it were physical property. No IP law does that, whether copyright, patents, trademarks or whatever. There is no "fair use" exemption to theft if I borrow your car while you didn't need it and return it undamaged, for example. However, it is in society's interests to guarantee certain property-like rights to a copyright holder in order to promote development of new material, and that is what these laws are for.
And why shouldn't they?
The term "intellectual property" is rather misleading: there are superficial similarities between patents, copyright and trademarks, to give the most common examples, but their significance is rather different.
In particular, while software patents are one of those ideas that sounded promising but has been shown not to work well in practice, copyright has been quite the opposite. This kind of intellectual property has many of the same advantages to society as physical property (an equally artificial concept if you consider it for a moment). Despite the often made but really pretty shallow arguments against copyright, it has proven to be a valuable tool in balancing modern economies where information is valuable.
So does Herb Schildt, but that doesn't mean what he writes is accurate. That's not to say the two authors are comparable, of course; I am merely demonstrating that having written a book does not automatically make you correct, nor does not having written a book automatically make you wrong.
In this particular case, since allowing implicit conversions is a pretty good practical definition a weak type system, the GP makes a fair point.
They're of pretty limited use even then. Almost every major BIOS manufacturer includes a standard back-door password so support guys can get into a locked machine. I know most of them, and I suspect my friend Mr Google would soon tell me any others I needed. Kinda defeats the point, doesn't it?
Yeah! We all know security through obscurity is a waste of time anyway...