As anyone knows, when tech danger threatens, the warp core can be ejected and/or the saucer section separated.
Why not follow this idea in designing autos powered by finicky unstable batteries?
If the temperature in one or more individual cells passes a critical threshold, and it threatens to burn up your garage, home and property, then a system should be able to rapidly eject the battery core safely onto your neighbor's property.
Thank you for your reply. If you look at my message which you replied to, I also said that strong typing enables 'toolability' of the language. I then gave only the most simplistic type of toolability -- intellisense.
Eclipse, which is an IDE for writing code, has lots of toolability features for Java. For example, of your doit( int x, int y) method. In Eclipse, you would click in the word doit before the open paren, right-click, Refactor, Change Method Signature... (dialog box appears)
The dialog shows a table with all of the method formal arguments. Click a row, such as the row for X, and then click the DOWN button to move that row down below Y, then click OK. Not only will the two arguments X and Y be interchanged in the signature of method doit, but all references in your code will also be changed as well.
This is not done by some simplistic search and replace. Eclipse has a deep understanding of your source code. The editor is deeply integrated with the compiler. Or rather, to put it in simple terms, the Java compiler is a very large library and the compiler command line tool is just a wrapper around the large amount of compiler logic in a library. The Java editor in Eclipse makes extensive use of the library functions in the compiler to deeply understand the source code and have a database about everything in all of your source code in your entire project.
Another example, in a large method, select several lines, refactor, extract method. A dialog appears. You give the new method a name, the dialog tells you what the arguments are, but gives you an opportunity to rename them, then when you click OK, the lines you selected are refactored out into a separate method, and the place where those lines were becomes a function call to that method.
There are many other refactoring tools. This kind of toolability is enabled because the language is statically typed and the editor understands exactly what else in your project is related to what. There is no compile time (or editing time) doubt about what method a particular function call would go to.
In dynamically typed languages, this can be difficult to impossible to do. In languages like, let's say Javascript, it can be impossible. You could have a reference like x["foo"] = bar, which could also have been s="foo"; x[s] = bar. Both of these are equivalent to x.foo = bar. Now if I did some refactoring, such as a rename to change x.foo into x.frob, should you or should you not rewrite other code to say: s="frob"; x[s] = bar? This has a certain similarity to how in C an array reference and pointer could be interchanged and refactoring tools might not recognize subtle tricks.
As to the other part of your reply, static typing promises to catch exactly what it catches. No more, no less. Interchanging arguments is something you do with refactoring tools. Especially in a gigantic program. You never interchange function arguments by hand. Heck, you don't even reverse the then-else conditions of an if statement by hand -- you right click and refactor. The tools will reverse the logical condition in the if condition for you as well as reversing the then-else blocks.
Like all good things, these great tools (eg Eclipse) are free and open source.
> Static typing is valuable for catching lots of coding errors before execution.
Yes.
Also, there are subtler benefits to static typing. It enables excellent 'toolability' of the language. That is, your IDE can do 'intellisense' type stuff and get it right. It can know exactly what members to offer on a variable or value of some particular type.
Furthermore, the static type checking done by the compiler is your very first line of testing before you get into your own higher level unit tests that test the deeper logic of your code. Think of static typing as the compiler unit testing your code for obvious logic errors and assignments that couldn't possibly make sense at runtime.
> sort of..NET is good simply because of Visual Studio . . .
In case you are not aware, there are some very nice IDEs, even free and open source ones, for Java. And the IDEs run on any platform, just like the rest of Java.
> Any *real* programmer that used anything but a toy language would understand why unsigned integers are important.
As the Minbari ambassador Delenn says, it's all a matter of perspective.
If you don't program close to the bare metal, then you seldom, if ever have a need for unsigned integers. Think of languages as a continuum starting from the very low level of abstraction (assembler) to the very high level of abstraction (Mathematica, Clojure, Scheme, Haskel, Scala, etc). What you call a real language and a toy language all depends on what kinds of software you write. If you are working on symbolic reasoning, you probably use a different language than you would if you were writing an mp3 encoder. The former would call C a toy language.
Also, if you happen to have the PBS NOVA documentary about IBM's Watson (a couple years ago), pay attention to some of the close up screen shots of the Watson developers' laptops. It's all (gasp!) Eclipse and Java. OMG -- those not "real" programmers need to use a language with unsigned integers! How can they expect to accomplish great achievements without unsigned integers! (Gee, I wonder if they ever once, one single time, thought: "drat -- I wish Java had unsigned integers".)
It's the 21st century. A byte is 8 bits, something computers use. A character is something that is the basis of human languages and comes in many, very many, different varieties.
There are various ways of encoding characters (for humans) into bytes (for computers) and then later decoding them back to characters again. Several of these 'charsets' or 'character encodings' are standard and well known. UTF-8 is a particularly nice way of encoding characters because in one byte it can represent the commonly used Roman characters and ancient 7-bit ascii from some forgotten millennium long ago swept away in the sands of time. Any character can be coded as UTF-8 and may end up encoding into multiple bytes. Those bytes are just as easily decoded back to a string of characters.
Banish from your thinking the very idea that characters and bytes are the same thing and are assignment compatible. They are not assignment compatible. An array of characters is passed to an encoding function to give back an array of bytes. And vice versa.
I understand your point, and always understood your point. But it is misses my point. In fact, your numbers reinforce my point.
If Apple can ask for unreasonably high royalties for patents that never should have been granted (and some of which have since been invalidated) but Samsung is bound to not to ask for similar royalties, then this will be the end of FRAND patents. And it's not only Samsung learning this lesson. Microsoft and Motorola are in a similar dispute about what is reasonable for FRAND patents.
As to how your numbers reinforce my point, if 2.25% is not reasonable for Samsung's technology (and I'm not arguing that it is reasonable), then how can Apple's demands for much larger amounts or even outright injunctions be reasonable for patents on bouncy scrolling, pinch to zoom, or slide to unlock? Apple contends that those items are the entire reason someone bought the phone and therefore should get a significant cut of the retail price. That starts to make 2.25% seem quite reasonable. So which player is actually being reasonable here? (Maybe neither.) But it will spell the end of FRAND patents.
FRAND patents were for when everyone could get along and cooperate, while also being competitors. In the future players will individually negotiate reasonable rates with competitors that they perceive will not treat them the way Apple or Microsoft do.
> [Samsung] elected to participate in the standards process and they elected to abide by the FRAND licensing requirements.
> And then they broke their promise by selectively targeting certain competitors with unreasonable rates, breaking their FRAND obligations.
FRAND does not mean you cannot negotiate royalty rates.
The rates only have to be fair, reasonable, and non discriminatory.
Just because the other party does not like the negotiation does not mean the FRAND promise is broken.
You completely fail to address my argument. The end result is that there are no longer going to be any FRAND patents. Obligating yourself to FRAND while a competitor plays badly is obviously not a good move. The lesson is that you should play the same way your competitors are playing and not handicap yourself with FRAND. If Samsung wanted the same royalties for its technology from Apple as Apple wants from Samsung over bouncy scrolling and other trivialities, then you would be screaming bloody murder.
> Samsung's patents were standards essential patents which they promised to license under FRAND terms.
>
> Apple's patents are not standards essential as proven by the fact that Samsung has designed around them in their newer products.
The end result of this is predictable.
Samsung's patents are FRAND because they are over actual technology, you know, stuff like radios, modulation techniques, and other things actually developed in a lab.
Apples patents are for things like bouncy scrolling, and slide to unlock.
If the holder of FRAND patents cannot negotiate with an infringer for a fair price, and the infringer can also sue over its own patents and demand outrageous royalties per device, then the end result is clear.
No more FRAND patents. No company making actual technology has any economic interest in putting its patents under FRAND terms. Decades of cooperation on technology standards come to an end.
Hey, I'm not complaining about any lack of women in tech. The number of women does not affect me, other than that they dilute the pool of men by some percentage.:-)
Detecting piracy is simply impossible. Anything online is copyrighted. Period. So then the question becomes who owns the copyright? Have they authorized it's use in this location where it appears? Do they even know if they have authorized it's use? (eg, major hollywood copyright holder issues DMCA takedown of YouTube video that they themselves uploaded as promotional material -- and it's happened more than once. The left hand now knowing what the right hand is jerking, etc.) How can an automated machine know whether use of the work is authorized on a particular website?
Then there is the question of fair use. Just because you find something highly recognizable online doesn't mean it is infringement. It might be fair use under the law. There are a number of factors courts weigh to determine fair use. A highly subjective one is the character and nature of the use. For example, a very small quotation from a book might destroy the market value of the book if it gives away the ending. Yet in other cases, even use of 100% of the material is still fair use. Can an automated machine determine the character & nature aspect of a fair use test? Another factor is what effect does the use have on the economic value of the coyprighted work. Can a machine automatically determine that?
In short, while humans can recognize pr0n, it's not a simple problem for man nor machine to recognize copyright infringement to an extent to engage in punative action for something you find online.
> Not even with metadata attached to the file? Not even with a database, like the CDDB . . .
That does not mean it is piracy. Just because you can identify something doesn't mean the use is infringing.
First there is fair use. Can you determine whether a particular use is fair use? The major record labels can't. They have to go to court.
Then there is the issue of authorization. Just because you can identify something that is clearly copyrighted, doesn't mean that it isn't authorized to be where you found it. The major record labels have used DMCA to take down content that they themselves uploaded for promotional purposes! And on multiple occasions! If they can't even tell what they themselves uploaded and authorized, then how can you or especially a machine?
And finally, as for the issue of "clearly copyrighted" (in my previous paragraph), EVERYTHING is clearly copyrighted. So even if you CAN'T identify it doesn't mean it isn't copyrighted -- by someone. Everything is instantly copyrighted the moment it is fixed in a tangible medium of expression. So ANYTHING you find online is copyrighted. Is it piracy? Is it infringing? Is it authorized to be there? Is it fair use? Can you tell? Can a machine tell?
> Once you've identified a copyrighted song, image, or other work, you can then calculate what % of the entire file is using that copyrighted material.
There are already court precedent cases that some uses of 100% of the material are fair use. There are multiple factors that determine fair use. Percent of the work quoted or excerpted is not the only factor. And there is no magic percent that you have to cross. There are other factors such as character and nature of the use, and others I'll leave as an exercise for the reader.
> I thought the whole point of Java is that it runs in a sandbox so applets don't NEED to be trusted.
Yes, and then later Applets are allowed to interact with JavaScript code in the surrounding browser, and vice versa JavaScript can interact with methods of the Applet. That would never open up such complex interactions that nobody could foresee the security problems. Nope, nosiree. (sarcasm)
> Any idiot who thinks C++ is a bad language, should be digging ditches for a living.
That may be true. But any smart person who thinks C++ is a bad language is probably making money using a different language.
Do the operating system install in a virtual machine. Virtual Box has screen recording built in.
Q. Father, please tell me, is it a sin to use Windows 8?
A. No dear child, using Windows 8 is not a sin, it is a penance.
As anyone knows, when tech danger threatens, the warp core can be ejected and/or the saucer section separated.
Why not follow this idea in designing autos powered by finicky unstable batteries?
If the temperature in one or more individual cells passes a critical threshold, and it threatens to burn up your garage, home and property, then a system should be able to rapidly eject the battery core safely onto your neighbor's property.
-- I break fur animals!
Thank you for your reply. If you look at my message which you replied to, I also said that strong typing enables 'toolability' of the language. I then gave only the most simplistic type of toolability -- intellisense.
Eclipse, which is an IDE for writing code, has lots of toolability features for Java. For example, of your doit( int x, int y) method. In Eclipse, you would click in the word doit before the open paren, right-click, Refactor, Change Method Signature...
(dialog box appears)
The dialog shows a table with all of the method formal arguments. Click a row, such as the row for X, and then click the DOWN button to move that row down below Y, then click OK. Not only will the two arguments X and Y be interchanged in the signature of method doit, but all references in your code will also be changed as well.
This is not done by some simplistic search and replace. Eclipse has a deep understanding of your source code. The editor is deeply integrated with the compiler. Or rather, to put it in simple terms, the Java compiler is a very large library and the compiler command line tool is just a wrapper around the large amount of compiler logic in a library. The Java editor in Eclipse makes extensive use of the library functions in the compiler to deeply understand the source code and have a database about everything in all of your source code in your entire project.
Another example, in a large method, select several lines, refactor, extract method. A dialog appears. You give the new method a name, the dialog tells you what the arguments are, but gives you an opportunity to rename them, then when you click OK, the lines you selected are refactored out into a separate method, and the place where those lines were becomes a function call to that method.
There are many other refactoring tools. This kind of toolability is enabled because the language is statically typed and the editor understands exactly what else in your project is related to what. There is no compile time (or editing time) doubt about what method a particular function call would go to.
In dynamically typed languages, this can be difficult to impossible to do. In languages like, let's say Javascript, it can be impossible. You could have a reference like x["foo"] = bar, which could also have been s="foo"; x[s] = bar. Both of these are equivalent to x.foo = bar. Now if I did some refactoring, such as a rename to change x.foo into x.frob, should you or should you not rewrite other code to say: s="frob"; x[s] = bar? This has a certain similarity to how in C an array reference and pointer could be interchanged and refactoring tools might not recognize subtle tricks.
As to the other part of your reply, static typing promises to catch exactly what it catches. No more, no less. Interchanging arguments is something you do with refactoring tools. Especially in a gigantic program. You never interchange function arguments by hand. Heck, you don't even reverse the then-else conditions of an if statement by hand -- you right click and refactor. The tools will reverse the logical condition in the if condition for you as well as reversing the then-else blocks.
Like all good things, these great tools (eg Eclipse) are free and open source.
> ASCII. The eighth bit is just a spare. If you can't do it in English, then it isn't worth doing.
The Vorlons would disagree.
> I always tough not sucking was the definition of "scripting language".
Then Perl is obviously not a scripting language.
> Static typing is valuable for catching lots of coding errors before execution.
Yes.
Also, there are subtler benefits to static typing. It enables excellent 'toolability' of the language. That is, your IDE can do 'intellisense' type stuff and get it right. It can know exactly what members to offer on a variable or value of some particular type.
Furthermore, the static type checking done by the compiler is your very first line of testing before you get into your own higher level unit tests that test the deeper logic of your code. Think of static typing as the compiler unit testing your code for obvious logic errors and assignments that couldn't possibly make sense at runtime.
> sort of. .NET is good simply because of Visual Studio . . .
In case you are not aware, there are some very nice IDEs, even free and open source ones, for Java. And the IDEs run on any platform, just like the rest of Java.
> Any *real* programmer that used anything but a toy language would understand why unsigned integers are important.
As the Minbari ambassador Delenn says, it's all a matter of perspective.
If you don't program close to the bare metal, then you seldom, if ever have a need for unsigned integers. Think of languages as a continuum starting from the very low level of abstraction (assembler) to the very high level of abstraction (Mathematica, Clojure, Scheme, Haskel, Scala, etc). What you call a real language and a toy language all depends on what kinds of software you write. If you are working on symbolic reasoning, you probably use a different language than you would if you were writing an mp3 encoder. The former would call C a toy language.
Also, if you happen to have the PBS NOVA documentary about IBM's Watson (a couple years ago), pay attention to some of the close up screen shots of the Watson developers' laptops. It's all (gasp!) Eclipse and Java. OMG -- those not "real" programmers need to use a language with unsigned integers! How can they expect to accomplish great achievements without unsigned integers! (Gee, I wonder if they ever once, one single time, thought: "drat -- I wish Java had unsigned integers".)
Java 7 update 25 is no longer current. You should upgrade to Java 7 update 40.
> a "char" would be 8 bits
It's the 21st century. A byte is 8 bits, something computers use. A character is something that is the basis of human languages and comes in many, very many, different varieties.
There are various ways of encoding characters (for humans) into bytes (for computers) and then later decoding them back to characters again. Several of these 'charsets' or 'character encodings' are standard and well known. UTF-8 is a particularly nice way of encoding characters because in one byte it can represent the commonly used Roman characters and ancient 7-bit ascii from some forgotten millennium long ago swept away in the sands of time. Any character can be coded as UTF-8 and may end up encoding into multiple bytes. Those bytes are just as easily decoded back to a string of characters.
Banish from your thinking the very idea that characters and bytes are the same thing and are assignment compatible. They are not assignment compatible. An array of characters is passed to an encoding function to give back an array of bytes. And vice versa.
I understand your point, and always understood your point. But it is misses my point. In fact, your numbers reinforce my point.
If Apple can ask for unreasonably high royalties for patents that never should have been granted (and some of which have since been invalidated) but Samsung is bound to not to ask for similar royalties, then this will be the end of FRAND patents. And it's not only Samsung learning this lesson. Microsoft and Motorola are in a similar dispute about what is reasonable for FRAND patents.
As to how your numbers reinforce my point, if 2.25% is not reasonable for Samsung's technology (and I'm not arguing that it is reasonable), then how can Apple's demands for much larger amounts or even outright injunctions be reasonable for patents on bouncy scrolling, pinch to zoom, or slide to unlock? Apple contends that those items are the entire reason someone bought the phone and therefore should get a significant cut of the retail price. That starts to make 2.25% seem quite reasonable. So which player is actually being reasonable here? (Maybe neither.) But it will spell the end of FRAND patents.
FRAND patents were for when everyone could get along and cooperate, while also being competitors. In the future players will individually negotiate reasonable rates with competitors that they perceive will not treat them the way Apple or Microsoft do.
> [Samsung] elected to participate in the standards process and they elected to abide by the FRAND licensing requirements.
> And then they broke their promise by selectively targeting certain competitors with unreasonable rates, breaking their FRAND obligations.
FRAND does not mean you cannot negotiate royalty rates.
The rates only have to be fair, reasonable, and non discriminatory.
Just because the other party does not like the negotiation does not mean the FRAND promise is broken.
You completely fail to address my argument. The end result is that there are no longer going to be any FRAND patents. Obligating yourself to FRAND while a competitor plays badly is obviously not a good move. The lesson is that you should play the same way your competitors are playing and not handicap yourself with FRAND. If Samsung wanted the same royalties for its technology from Apple as Apple wants from Samsung over bouncy scrolling and other trivialities, then you would be screaming bloody murder.
> The only thing Apple makes in the US are profits and vacation plans.
Uh, um . . . patents on bouncy scrolling and slide to unlock.
> Samsung's patents were standards essential patents which they promised to license under FRAND terms. >
> Apple's patents are not standards essential as proven by the fact that Samsung has designed around them in their newer products.
The end result of this is predictable.
Samsung's patents are FRAND because they are over actual technology, you know, stuff like radios, modulation techniques, and other things actually developed in a lab.
Apples patents are for things like bouncy scrolling, and slide to unlock.
If the holder of FRAND patents cannot negotiate with an infringer for a fair price, and the infringer can also sue over its own patents and demand outrageous royalties per device, then the end result is clear.
No more FRAND patents. No company making actual technology has any economic interest in putting its patents under FRAND terms. Decades of cooperation on technology standards come to an end.
> Samsungs's products are crap, anyway (IMHO).
Then Apple should have nothing at all to worry about.
> Just more evidence of China's influence over the American economy.
Exactly how does China enter into this?
Isn't this a dispute between Apple (American company) and Samsung (South Korean company)?
> he started intellectual ventures some years later
I think you mean Intellectual Vultures.
> If Apple did this, people would be up in arms!
If Apple did this, they would be suing Samsung for copying.
Hey, I'm not complaining about any lack of women in tech. The number of women does not affect me, other than that they dilute the pool of men by some percentage. :-)
Detecting piracy is simply impossible. Anything online is copyrighted. Period. So then the question becomes who owns the copyright? Have they authorized it's use in this location where it appears? Do they even know if they have authorized it's use? (eg, major hollywood copyright holder issues DMCA takedown of YouTube video that they themselves uploaded as promotional material -- and it's happened more than once. The left hand now knowing what the right hand is jerking, etc.) How can an automated machine know whether use of the work is authorized on a particular website?
Then there is the question of fair use. Just because you find something highly recognizable online doesn't mean it is infringement. It might be fair use under the law. There are a number of factors courts weigh to determine fair use. A highly subjective one is the character and nature of the use. For example, a very small quotation from a book might destroy the market value of the book if it gives away the ending. Yet in other cases, even use of 100% of the material is still fair use. Can an automated machine determine the character & nature aspect of a fair use test? Another factor is what effect does the use have on the economic value of the coyprighted work. Can a machine automatically determine that?
In short, while humans can recognize pr0n, it's not a simple problem for man nor machine to recognize copyright infringement to an extent to engage in punative action for something you find online.
If Gnome has a word processor they should call it Word.
> Have you never checked out a girl
No. Never.
Ever.
> Not even with metadata attached to the file? Not even with a database, like the CDDB . . .
That does not mean it is piracy. Just because you can identify something doesn't mean the use is infringing.
First there is fair use. Can you determine whether a particular use is fair use? The major record labels can't. They have to go to court.
Then there is the issue of authorization. Just because you can identify something that is clearly copyrighted, doesn't mean that it isn't authorized to be where you found it. The major record labels have used DMCA to take down content that they themselves uploaded for promotional purposes! And on multiple occasions! If they can't even tell what they themselves uploaded and authorized, then how can you or especially a machine?
And finally, as for the issue of "clearly copyrighted" (in my previous paragraph), EVERYTHING is clearly copyrighted. So even if you CAN'T identify it doesn't mean it isn't copyrighted -- by someone. Everything is instantly copyrighted the moment it is fixed in a tangible medium of expression. So ANYTHING you find online is copyrighted. Is it piracy? Is it infringing? Is it authorized to be there? Is it fair use? Can you tell? Can a machine tell?
> Once you've identified a copyrighted song, image, or other work, you can then calculate what % of the entire file is using that copyrighted material.
There are already court precedent cases that some uses of 100% of the material are fair use. There are multiple factors that determine fair use. Percent of the work quoted or excerpted is not the only factor. And there is no magic percent that you have to cross. There are other factors such as character and nature of the use, and others I'll leave as an exercise for the reader.
As you point out, 'recognition', correct recognition, requires some amount intelligence.
> I thought the whole point of Java is that it runs in a sandbox so applets don't NEED to be trusted.
Yes, and then later Applets are allowed to interact with JavaScript code in the surrounding browser, and vice versa JavaScript can interact with methods of the Applet. That would never open up such complex interactions that nobody could foresee the security problems. Nope, nosiree. (sarcasm)