Basic steganography requiring elementary human skills would defeat that. Something like a basic XOR with a password would be enough, you just have to provide the song with a humanly easy to understand desciption of the password (e.g. "what's the first name of the guy who uncovered Janet's nipple?", "what's evil, strats with "micro" and ends with "soft"?", "replace the "d" by a "x" in "cods""... )
That's as stupid as expecting to completely protect music against copy without noticing that one just has to copy the analog signal sent to the speakers, and there's nothing to do against this. They are amazingly clueless about what technology can and can't, they never realize that the problem with human being is that they can and will adapt themselves to new technological constraints...
They really beblieve Santa Claus will bring them a Monopoly Enforcment Unbreakable Device for Xmas!
Had you been in Europe, you'd have had the choice to spend your 5 to 9 weeks (yes, there are jobs in Europe where you get 9 weeks vacations, and teachers don't count) either one the beach, looking at more nipples you'd ever see at a superbowl MTV show, or learning whatever's required to be something else than a "tech support monk(ey)" without having to endure 70 hours weeks.
Moreover, many countries in Europe consider to make formation&teaching all-life-long an enforcable right for all workers (mandatory dedicated time-credit, obligation to provide some formations...)
What you call Array<*> is actually
\forall x. Array<x> (or A => Array A in Haskell, or <A> Array<A> in Java).
Example: a zip method, belonging to Array<T> and taking any other Array (of anything) as parameter and gives back a Array of pairs extracted from these tables:
class Pair<A,B> { public A car; public B cdr; }
class Array<T> { public <U> Array<Pair<T,U>> zip(Array<U> that) { // foreach i: result[i] = new Pair(this[i], that[i]); }
Let's state that A <: B means "A is a subtype of B". Now the question is "What do I need as conditions on As and Bs to get A<As> <: B<Bs>". The answer is:
If one can only read values of type C with A methods, then the relation is covariant, i.e. to get A<As> <: B<Bs> we need As <: Bs.
If one can only WRITE values of type C with A methods (e.g. pass them as function parameters), then the relation is contravariant, i.e. to get A<As> <: B<Bs> we need Bs <: As. Counter-example:
Int <: Float
Array<Float> a0= new Array<Float>(); a0.[0] = 3.14159; Array<Int> a1 = a0;// would be legal if the type was covariant Int x = a1[0];// Oops, I've put a float in an int. // I shouldn't be allowed to do that without an explicit cast.
If parameters of such types can be both read and written, then you need both As <: Bs and Bs <: As, i.e. As == Bs. That's what happens with java. If you want your structures to be covariant, you have to forbid their modification (here, forbid to change the cells' contents).
If in some exceptionnal cases you want to enforce subtyping, it's up to you to use casts. But you cannot assume a bogus subtyping relationship without noticing it, therefore the type system did its job.
- generics support
- C# innovated this, and already has this in the spec
- C++ had this way before.
Actually, first implementations of generics come from the functionnal progrmming community, esp. Philip Wadler et al. So, the java genericity's genealogy would rather lead to Hindley/Milner type sytems, through Haskell
Generic is good, if you're smart enough to use them correctly. Let's take the List example.
The type checking is much weaker thus introducing new potential holes for error to slip through.
Plain wrong. With the current list, if you've got a list of Foobar, then each time you want to extract a Foobar from the list, you have to fool the type system with a (Foobar) cast. If what you extracted was not a Foobar, then you get a runtime error (which is exactly what a type system's supposed to avoid). Symmetrically, if you try to put an integer in a list of widgets, the compiler won't notice. These issues are adressed by polymorphic type systems.
You must make some assumptions about the used classes however verifying the correctness of these assumptions in nearly impossible.
Wrong again: basically, a type is the statically verifyable part of the assumptions you make about a value. Maybe you're confused with dependant type systems, that allow to parameterize a type by a value (e.g. an array by its size), and is indeed often undecidable.
The reusabilty "argument" is rubbish
It wasn't for OO, and it is even more false about generics. Obviously quick and dirty code written by coder with low to average skills is not reusable, because writing reusable code asks a lot of smartness, and smartness can not be provided by a compiler. OTOH, STL in C++ are highly reusable, but very few coders are able to produce a code of such a quality, and noboby knows a way to fix that human issue. Reusability is about few code, written by few wizards, and used by many average coders.
The above mentioned problems create new security holes.
I'd be glad to see any concrete example backing this assertion. Actually, the evilest type system feature is the cast, and genericity is the way to get rid of most of them.
Due to turing completeness of most template/generics systems the compiler is slowed down to 30 percent performance. More evil is that templates push the grammars into the Chomsky-0 type making secure (=100%) correctness checking impossible.
Is this a random association of "sounds-good" term you've seen in a theoretical paper, or some very old and approximative quotes from a lecture during which you played Tetris on your phone?
Turing completeness doesn't lead to "slow downs", it immediately causes complete undecidability. The whole point of a type system IS to be decidable, hence not Turing complete, as opposed to the values. Moreover, templates keep the language in the "context free grammar" category. Last but not least, correctness checking is not related to grammars: grammar is just about parsing.
In old languages like Lisps the use of generics is usually strongly discouraged [...]
You know why it's discouraged? because it doesn't exist! List is dynamically typed, so templates don't make much sens. I guess you're confusing with macros, that are, indeed, Turing complete and can arbitrarily mess up the grammer in unskilled hand.
I've really seldom seen such an accumulation of BS in a single post.
But when another country buys dollars, it doesn't know exactly what it gets, because the dollar's value will change over the time in an unpredictable way.
So, if I buy $100 and my money raises 10% compared to dollar, I'll only be able to buy worth 91 old dollars of american work. And there, money leaked from USA! Moreover, next time I won't trust the dollar's stability, and bill more dollars for the same work, thus depreciating the dollar even more. Eventually, the situation will be stabilized when the price of work (and thus standard of living) will be comparable among countries...
Cheer up, this is gonna stop as soon as the average american guy will be about as wealthy as the average Indian one!
USA kept its higher way of life because it innovated so fast that no other country could follow. If innovation stops, then you go back with other countries.
Do we really need laws about education at the national level?
I don't know if you ever noticed, but USA get a share of world's wealth par capita that's slightly above average. Did you ever wonder why? Do you think that big compagnies keep paying american people the salary of 10 chinese or indian people, just by patriotism?
Western world, and esp. USA, can have and keep (?) such high salaries just because one finds there skills you couldn't find in poorer countries. Because people are a lot better educated, either thanks to education system, or thanks to global brain drain.
Other countries understood that, and a couple of decades ago, India started massively investing into education; USA IT workers can tell you what a wise investment it was. Now there's a permanent race on skills and education between countries that will keep accelerating, and if wealthier countries stop racing, they will soon stop being wealthier.
Maybe you expect every local governor to understand that and act accordingly, or you consider that global USA wealth is not a problem of federal importance. Maybe you think that a nationally coherent politics wouldn't help for this. But as long as federal government is not ruled by an illiterate redneck that can't understand the nasty effects of simple and false solutions to complicated problems, you should really consider education as a federal issue.
The problem is that there may only be a limited numbers of questions that may be asked this way. Therefore, it's worth building a comprehensive answer database to automatically pass this test.
Don't consider it as a "screw everybody else" point of view:
Ads pay for internet. Some people accept them, some don't. As long as those who don't are a minority, the system keeps working. Anyway, those people pissed off by ads would react negatively to ads you would *force* them to watch.
The point is that blocking ads should demand some effort, some motivation from the user to be set up. As soon as an ad-escaping technic is too widely adopted, it mechanichally becomes obsolete, because doubleclick&al. will work around it.
The new kind of ad described in this news is easy to block, and blocking these will be proposed by many plugins very soon (provided that your browser enables these ads by default).
What concerns me is that at some point, they will eventually add and "examination" at the end of the ad, before to let you download the actual page. Something like "What's the actor shirt's color?" or "What soft drink is better than Coke?", or simply typing a word given as an image. That's already what's done to discard bot registrations on hotmail, for instance.
This day, ad filters won't be of any help for you, until they pass Turing tests. I'd like to push these times as far as possible in the future, and not providing too easy ad-blocking stuff to unmotivated people is THE way!
It is a speedbump. Nobody will believe it has been included because of a strong citizenship feeling in the managers' heart. But as a marketing operation, it's not that bad.
Their product has already been covered by several/. articles, just because of this features. And in terms of PR, it can be interpreted by Joe-6-pack as "Photoshop is such a powerfull tool that we had to introduce a money-copy-protection system into it! Just imagine the amazing fake pr0n you could make with such a killer app!"
--
the only thing worse than being talked about is not being talked about (O.Wilde)
There are many countries where education is free, some of them even speaking English. For instance in France, the better a school is, the cheaper. On the other hand, obviously, there are difficult examinations to pass to go to the best school.
The few best schools/universities *PAY YOU* about $1200 a month; most of other good ones cost about $500 a year including health insurance. The very most expensives can reach $5000 a year for techs, $10000 for business.
If you don't know nor want to learn foreign languages, consider Scotland, where education is almost free as well. The rest of UK is way cheaper than USA.
Beware, the required level in mathematics is usually higher in Europe than in the USA. Anyway, maths inclination is a must for a good techy.
mmmhh... I remember of an almost useless OS kernel as well, some 10 years ago in northern Europe. I guess most of you would have called this pointless then, too.
That's as stupid as expecting to completely protect music against copy without noticing that one just has to copy the analog signal sent to the speakers, and there's nothing to do against this. They are amazingly clueless about what technology can and can't, they never realize that the problem with human being is that they can and will adapt themselves to new technological constraints...
They really beblieve Santa Claus will bring them a Monopoly Enforcment Unbreakable Device for Xmas!
Moreover, many countries in Europe consider to make formation&teaching all-life-long an enforcable right for all workers (mandatory dedicated time-credit, obligation to provide some formations...)
macros aren't discouraged in the Lisp community :-)
Indeed. That's "unskilled hands" that are decouraged :)
Example: a zip method, belonging to Array<T> and taking any other Array (of anything) as parameter and gives back a Array of pairs extracted from these tables:
- If one can only read values of type C with A methods, then the relation is covariant, i.e. to get A<As> <: B<Bs> we need As <: Bs.
- If one can only WRITE values of type C with A methods (e.g. pass them as function parameters), then the relation is contravariant, i.e. to get A<As> <: B<Bs> we need Bs <: As. Counter-example:
- If parameters of such types can be both read and written, then you need both As <: Bs and Bs <: As, i.e. As == Bs. That's what happens with java. If you want your structures to be covariant, you have to forbid their modification (here, forbid to change the cells' contents).
If in some exceptionnal cases you want to enforce subtyping, it's up to you to use casts. But you cannot assume a bogus subtyping relationship without noticing it, therefore the type system did its job.- C# innovated this, and already has this in the spec
- C++ had this way before.
Actually, first implementations of generics come from the functionnal progrmming community, esp. Philip Wadler et al. So, the java genericity's genealogy would rather lead to Hindley/Milner type sytems, through Haskell
Generic is good, if you're smart enough to use them correctly. Let's take the List example.
The type checking is much weaker thus introducing new potential holes for error to slip through.
Plain wrong. With the current list, if you've got a list of Foobar, then each time you want to extract a Foobar from the list, you have to fool the type system with a (Foobar) cast. If what you extracted was not a Foobar, then you get a runtime error (which is exactly what a type system's supposed to avoid). Symmetrically, if you try to put an integer in a list of widgets, the compiler won't notice. These issues are adressed by polymorphic type systems.
You must make some assumptions about the used classes however verifying the correctness of these assumptions in nearly impossible.
Wrong again: basically, a type is the statically verifyable part of the assumptions you make about a value. Maybe you're confused with dependant type systems, that allow to parameterize a type by a value (e.g. an array by its size), and is indeed often undecidable.
The reusabilty "argument" is rubbish
It wasn't for OO, and it is even more false about generics. Obviously quick and dirty code written by coder with low to average skills is not reusable, because writing reusable code asks a lot of smartness, and smartness can not be provided by a compiler. OTOH, STL in C++ are highly reusable, but very few coders are able to produce a code of such a quality, and noboby knows a way to fix that human issue. Reusability is about few code, written by few wizards, and used by many average coders.
The above mentioned problems create new security holes.
I'd be glad to see any concrete example backing this assertion. Actually, the evilest type system feature is the cast, and genericity is the way to get rid of most of them.
Due to turing completeness of most template/generics systems the compiler is slowed down to 30 percent performance. More evil is that templates push the grammars into the Chomsky-0 type making secure (=100%) correctness checking impossible.
Is this a random association of "sounds-good" term you've seen in a theoretical paper, or some very old and approximative quotes from a lecture during which you played Tetris on your phone?
Turing completeness doesn't lead to "slow downs", it immediately causes complete undecidability. The whole point of a type system IS to be decidable, hence not Turing complete, as opposed to the values. Moreover, templates keep the language in the "context free grammar" category. Last but not least, correctness checking is not related to grammars: grammar is just about parsing.
In old languages like Lisps the use of generics is usually strongly discouraged [...]
You know why it's discouraged? because it doesn't exist! List is dynamically typed, so templates don't make much sens. I guess you're confusing with macros, that are, indeed, Turing complete and can arbitrarily mess up the grammer in unskilled hand.
I've really seldom seen such an accumulation of BS in a single post.
So, if I buy $100 and my money raises 10% compared to dollar, I'll only be able to buy worth 91 old dollars of american work. And there, money leaked from USA! Moreover, next time I won't trust the dollar's stability, and bill more dollars for the same work, thus depreciating the dollar even more. Eventually, the situation will be stabilized when the price of work (and thus standard of living) will be comparable among countries...
Cheer up, this is gonna stop as soon as the average american guy will be about as wealthy as the average Indian one!
USA kept its higher way of life because it innovated so fast that no other country could follow. If innovation stops, then you go back with other countries.
I don't know if you ever noticed, but USA get a share of world's wealth par capita that's slightly above average. Did you ever wonder why? Do you think that big compagnies keep paying american people the salary of 10 chinese or indian people, just by patriotism?
Western world, and esp. USA, can have and keep (?) such high salaries just because one finds there skills you couldn't find in poorer countries. Because people are a lot better educated, either thanks to education system, or thanks to global brain drain.
Other countries understood that, and a couple of decades ago, India started massively investing into education; USA IT workers can tell you what a wise investment it was. Now there's a permanent race on skills and education between countries that will keep accelerating, and if wealthier countries stop racing, they will soon stop being wealthier.
Maybe you expect every local governor to understand that and act accordingly, or you consider that global USA wealth is not a problem of federal importance. Maybe you think that a nationally coherent politics wouldn't help for this. But as long as federal government is not ruled by an illiterate redneck that can't understand the nasty effects of simple and false solutions to complicated problems, you should really consider education as a federal issue.
Oh wait...
I wonder whether the mandatory "imagine a beowulf cluster of these" would be appropriate here...
The problem is that there may only be a limited numbers of questions that may be asked this way. Therefore, it's worth building a comprehensive answer database to automatically pass this test.
This is what root account and files ownership is all about in UNIX: not letting regular users messing up the configuration.
<blasphemy>Except if you're used to work logged as root...</blasphemy>
Ads pay for internet. Some people accept them, some don't. As long as those who don't are a minority, the system keeps working. Anyway, those people pissed off by ads would react negatively to ads you would *force* them to watch.
The point is that blocking ads should demand some effort, some motivation from the user to be set up. As soon as an ad-escaping technic is too widely adopted, it mechanichally becomes obsolete, because doubleclick&al. will work around it.
The new kind of ad described in this news is easy to block, and blocking these will be proposed by many plugins very soon (provided that your browser enables these ads by default).
What concerns me is that at some point, they will eventually add and "examination" at the end of the ad, before to let you download the actual page. Something like "What's the actor shirt's color?" or "What soft drink is better than Coke?", or simply typing a word given as an image. That's already what's done to discard bot registrations on hotmail, for instance.
This day, ad filters won't be of any help for you, until they pass Turing tests. I'd like to push these times as far as possible in the future, and not providing too easy ad-blocking stuff to unmotivated people is THE way!
Their product has already been covered by several /. articles, just because of this features. And in terms of PR, it can be interpreted by Joe-6-pack as "Photoshop is such a powerfull tool that we had to introduce a money-copy-protection system into it! Just imagine the amazing fake pr0n you could make with such a killer app!"
--
the only thing worse than being talked about is not being talked about (O.Wilde)
There are many countries where education is free, some of them even speaking English. For instance in France, the better a school is, the cheaper. On the other hand, obviously, there are difficult examinations to pass to go to the best school. The few best schools/universities *PAY YOU* about $1200 a month; most of other good ones cost about $500 a year including health insurance. The very most expensives can reach $5000 a year for techs, $10000 for business. If you don't know nor want to learn foreign languages, consider Scotland, where education is almost free as well. The rest of UK is way cheaper than USA. Beware, the required level in mathematics is usually higher in Europe than in the USA. Anyway, maths inclination is a must for a good techy.
mmmhh... I remember of an almost useless OS kernel as well, some 10 years ago in northern Europe. I guess most of you would have called this pointless then, too.