I can think of plenty of innovations that might start using up your terabyte rather fast.
One interesting idea is a transactional file system which logs all file operations. Great advantage of this would be that you could "roll back" to previous versions of files if you needed them. Couple that with some redundant error-correcting storage and your days of losing files will be a thing of the past.
Another great use is for indexes. Indexes generally speed up computing operations, at the cost of significantly increasing storage needs. Chuck some more dish space, and you could effectively have a Google on your own hard drive.... no more time consuming searches, just enter "1999 tax avoidance scheme" and get your hits in seconds.
p.s. I guess it should be "indices" for all the grammar nazis out there, but I actually think "indexes" works better here, as it is a technical term.....
Yeah, but it would still be an anti-trust concern if Microsoft *used* the monopoly on the desktop to give themselves an unfair advantage in the server market. This might include tricks such as giving away the database for free, spreading FUD, marginalizing competing products etc.
I'm British and would never use "have" in this instance. University is singular. Then again, I only went to a minor fenland polytechnic so wot wud I no of gramur an fings lyke dat?
About the only case I can think of where a singular noun gets a plural verb in English is the famous line: "we are not amused".
It would be a big number. But I don't think it would be very easy to estimate it using that method. You would need to:
a) Eliminate all non-typed text, particularly computer generated text and copies. Not easy, especially since identical pieces of text could have been typed many types ("First Post!" springs to mind....)
b) Add in an estimate of all typing that never made publication (deleted paragraphs etc.), in game keystrokes.
My suggested method of estimate the grand total number of keypresses per user would be to install lots of keyloggers, or look at MTBF rates for keyboard supplier.
I strongly disagree with your assertion that government cannot be effective in areas which are capital intensive. In most contries, the government is by far the largest investor in and owner of physical capital.
Roads/rail networks are an excellent example. They are extremely effective, basic infrastructure that can be a tremendous advantage to a developed economy. They cannot be provided efficiently by the free market (read some basic economics texts if you want to be convinced), so the government steps up to the plate. Lo and behold, having good transport infrastructure is a key factor in economic success, and by and large it is government provided.
The government expense is justified because the return on the investment (economic success, labour mobility, more income and therefore more tax revenue) is high. I like to think of research in the same way - you invest public money to make discoveries that will benefit everyone and create a better economy overall. Having this research in the public domain is superior to having it privately owned because it allows free market competition in resulting products and better enables incremental research.
I think the really interesting issue is how the government can get smart about funding in order to get even more discoveries happening in the public domain. Results-based funding, for example, would provide an incentive for private enterprises to make public discoveries.
Yeah, I never saw the point of self-advertisement on TV much. Anyone who is seriously into TV watching has a guide and/or knows what time their favourite programmes is on at anyway.
And slots that promote nothing but the channel (e.g. all the cute animated logos....) are a waste of time - people don't exactly have much "brand loyalty" as far as channels go. People switch channels 50 times a day, for god's sake. Promoting your "channel" is completely pointless vs., for example, actually scheduling something that people want to watch.
But one area I do think it is justified is promoting novel kinds of programme and new series launches. You can target pretty precisely the kind of audience the programme would appeal to, and can use this device to encourage people to branch out beyond their normal habits. Don't see much harm in that, and the BBC certainly has a role in broadening peoples' horizons.
Yeah, I have to say I pretty much agree with that sentiment.
If MS make.NET a truly open platform, they will have created a level playing field and they are going to have to fight some pretty serious competition.
If the don't make.NET an open platform, then it probably won't succeed, and stuff like Mono may actually end up being the de facto standard on the low end while the Java platform mops up the enterprise end.
Either way - I don't quite see what their business plan is going to be. My suspicion is that they will try to derail compatability in a way that forces people to buy MS software "components" - if you are a developer on the.NET platform I would start watching out for trojan horses like this real soon now.....
Sure, it's good to have competition in the IDE space.
But last time I checked (5-6 months ago?) KDevelop didn't have anything to match Borland's VCL for RAD development. It's a good IDE, but Borland are just way ahead in terms of Visual Development.
The price is pretty negligible in TCO terms - it's well worth shelling out a few grand for even the most expensive Borland development tools if it can knock just 5% off your development time, and the speed of the compiler alone could well do that...
Don't get me wrong, I look forward to the day when open source tools are better than any commercial equivalent. My point is that we just aren't there yet.
Very true. But when you rent a house, you get lots of choices, and you could rent a similar one with no furniture if you wanted to pay less.
If MS had effective competition, they would probably be forced to do a "with IE" and "without IE" versions in order to compete. As it is, they can incur the cost of developing IE and pass it on to customers whether they want it or not.
The monopoly power has always been the real problem, not the bundling....
Hate to point this out, but a pretty standard tactic in business is "get them hooked".
Then, when there is no competition left (why compete? it's free/cheap and does what I want....) they can do what the hell they like.
The following examples spring to mind: IE, cigarettes, credit card loans, heroin. I'm sure everyone can think of a few more.
Wouldn't be surprised if you see DRM in WinAmp three years down the line, once everyone is on their proprietary music format, MP3s have been outlawed and you require a government license to create a Media Player.....
There's no problem with the algorithm. The carrying doesn't make a difference - you don't care about the result because you're using it to sort and merge (i.e. you only care whether the result is less than, equal to or greater than zero).
Don't remember all the SIMD instructions, but I think that would actually be slower as you would need to check the subtraction results for each components. Correct me if I'm wrong....
I've lost count of the number of times I wanted 64-bit integers, in pretty general purpose apps.
Not because I do big databases or suchlike, but they let you do loads of optimisations that wouldn't otherwise be possible. For example, you can pass around 8-byte structures in a single register, which is damn useful given the lack of available registers in the x86 architecture.
Example: I've recently been coding a large hexagonal grid component. Each point in the grid is indexed by 2 32-bit (x,y) integers. With a 64-bit register, you could put a full co-ordinate into a single register.
Why is this useful? Well, one of my requirements was to be able to manage large sets of co-ordinates (think reachable spaces for an AI). You want to be able to combine sets of co-ordinates, which basically requires merging two lists. In order to merge lists efficiently, you need to sort them. And with the 64-bit representation, you can do this with just one subtraction and one branch rather than a combination of two subtracts
and two branches. This is a definite speedup if you are hand-coding, and possibly an even bigger one if your compiler doesn't inline all the 32-bit code properly.
Other example: 32-bits are large enough for most integer applications (you couldn't enumerate all the people on the plant though....) but they tend to fall down when you multiply, e.g. 100,000 * 100,000 has already blown the 32-bit limit, and neither of those are particularly big numbers. Whenever you start doing a reasonable amount of multiplication, 64-bit becomes useful.
Also, 64-bits is big enough to encode the positions of pieces on a chess board. You can use bitwise logic to analyse and store positions. GNU chess certainly does it this way. I expect a *cosiderable* speedup in the top chess-playing algorithms when 64-bit becomes widespread.
I'm really keen to se 256-bit arrive to be honest, 2^(2^3) has more elegance than 2^(2*3) and it would allow you to store a set of bytes in one register. Would allow some very cool text-processing tricks.
Course, it might never happen - I predict a move towards massively parallel 64-bit computers rather than stonking 256-bit ones as the next major evolution in processor power.
The dual control aspect is the part I find most interesting.
One of the big wastes of the car industry is the amount of time all the capital (i.e. the cars) is being under-utilised. What percentage of time does a car sit on your driveway?
This system has the potential to turn into the ultimate shared car pool.... you can use them as public transport, but if you needed a car you could just switch it to manual and drive wherever you wanted, paying for use by the minute or whatever. When you'd finished, you'd just have to drop the car back onto any point in the network and it would wander off for someone else to use.
Would present some interesting technical challenges - the system would have to adapt to cars being dropped at any point in the network, and also dynamically move cars around so that there were enough units in the areas where demand is high. You might have to give it special warning in the case of major sports events or public gatherings, for example.
The company operating the vehicles perhaps? You don't need a driver to be liable if something goes wrong.
One would hope however that they build in some pretty good safety features though, such as automatic obstacle sensing, emergency braking and failsafe signalling.
Guess we just have to agree to differ on this one - you don't think scrapping patents would work, I most certainly do although I'm not convinced it will ever be meaningfully tried.
To answer a couple of your points (all good):
I don't think you would transfer that many people to university research - AFAIK a large amount of the manpower in drugs companies is around the production and testing of drugs, all of which would still have to be done by private companies if they wanted to compete. Even if they pick up the basic research for free, they still need to manufacture it efficiently and convince consumers that it is tested and safe if they want to make a good business.
You could even adopt a funding system where scientists are government funded but work within companies, on the proviso that the research results are available to all. This might be a good model for clinical trials as you mention.
Or as an even less disruptive alternative, the government could guarantee to write out the check for the development of any successfully researched drugs - essentially "buying" the development into the public domain. They would have to include a risk premium (to cover the risk of failed research), but the total costs would be exactly the same and the incentive to make a successful drug just as great. The only difference being that after the drug is made, you get the free market in production and supply rather than a monopoly once again. This might also work as a "bonus" for clever production techniques dreamed up by the ChemEs you mention.
Basically, we all know that patents are bad, that they restrict the free market, inflate prices and quite probably stifle future innovation. The only justification for them is to incentivise new discoveries, but I feel that this can be done in far more effective ways.
I've never worked in a drug company, but I've been in business and technology long enough to know that the ability to copy ideas and strong competition on a level playing field are the biggest drivers that force companies to perform and innovate. Patents prevent this from happening, and this more than anything else has convinced me that they ought to go.
That is indeed nice. Though I suspect that if one of the two was a lower-level langauge, then the translation to the higher level would either be very difficult or very inefficient, and the whole compiler is less useful if the two were the same level.
I can't think of an example of either type, apart from a pet langauge project I saw that had this as a specific goal - and used langauges that were all pretty much equivalent in data types and functionality.
....who thought he would cheat by copying someone else's code.
But he was pretty paranoid about getting caught, and realised that a verbatim copy wasn't enough, you'd have to change the variable names, comments etc.
So he did some research, wrote himself a little parser that read in the source code and built a parse tree of the program. He then wrote another function that spat out all the code again but with different spacing, block ordering and some simple variable renaming (e.g. x,y,x->a,b,c)
To make sure the structure of the code didn't give him away, he wrote a few code transformations, e.g. if a then b else c became if !a then c else b. The order of non-conflicting assignments were swapped, and mathematic expressions were re-arranged (sometimes actually optimising the original code in the process!).
Still wasn't good enough, the comments needed changing and the structure of the code looked the same. So he linked in a thesaurus and NLP/AUG engine to change the words in a meaning-preserving manner. Same principle could be applied to the more complex variable and function names, so buildTree became makeStructure etc.
Finally, to put the icing on the cake he modified the program so it could output the code in a couple of different functional languages. Made the plagiarism almost impossible to spot.
Universities sound like the right choice to me. They have the fortunate by-product of producing more educated people as well as good ideas.
You can work out the economics. Make the assumption that it costs the same to produce an invention in a company as in a university (probably not true, since the univeristy doesn't have the lawyer/marketing overhead, and the peer review/academic competition in universities is arguably more efficient at spreading knowledge than closed corporate labs).
If the patent is granted, the average consumer will pay more and get less product (due to monopoly pricing) than they would if they had paid the required additional tax to fund the research in universities. The company makes more profit, but not enough to offset the consumer's loss. So the patent destroys value overall and is also probably regressive since corporate profits will tend to disproportionately benefit the rich.
With the invention in the public domain, companies can then compete in a free market to produce and market the product as efficiently as possible. This is in stark contrast to a patent-protected monopoly, which has far less incentive to cut costs since it is already sitting on a large margin and doesn't have to fight for customers. I actually think the companies would continue to innovate anyway to keep ahead of the competition even if they could not aquire a patent.
Basically, patents are bad, and the *real* free market solution is to abolish them.
Of course, people are dumb and don't like paying extra taxes, regardless of the fact that it might halve the prices of most products they buy. Ah well.....
This isn't the same as the halting problem, as any good computer hobbyist should know.
The CLR uses something called "verifiable" code, which can be checked algorithmically to be "safe", i.e. no pointer arithmetic, full type safety, no system calls etc. It's quite a strong condition, since code can be "safe" but not "verifiable". OTOH, any "verifiable" code is provably "safe". Proving code to be "safe" is hard (as in halting-problem hard) but the CLR doesn't need to do that.
As long as you only run "verifiable" code the CLR effectively controls all access to the system. So the paragraph is absolutely correct in that you could deny all "native" programming tools and only run verifiable code in the CLR. At that point DeCSS et al are screwed because you can enforce system-level encryption, no access to raw devices, secure video paths, government backdoors, mandatary micropayments and all other fun things that the Microsoft/MPAA/RIAA cartel would love to have.
I have an intrinsic dislike for Microsoft because of their abusive monopoly status, and perhaps even a bit of British "support the underdog" attitude.
But I still use Win2k as my primary OS just because I can't do the things I want in Linux without spending hours on the web tracking down obscure bugfixes. Those are hours much better spent down the pub.
I like your attitude and do much the same thing myself but it unfortunately won't change their behaviour.
A 5% increase in sales to 99% of the population is worth it to these companies even if 1% boycott the product entirely. This is why principled boycotts by a small number of individuals will never really have much effect.
Interestingly, the same argument gan be made about information as a public good.
Everyone gains if it is produced and placed in the public domain. It isn't "consumed" like a physical good so my use of information does not mean that there is less for everyone else. But because of this no single individual/corporation has the incentive to produce information based goods.
To create an incentive to produce, the current approach is to create an artificial concept of "intellectual property" to prevent the free use of information so that the producer can reap monopoly profits. This works in a fashion (information gets produced), but is highly inefficient because the full benefits are not realised, future innovation is restricted and there is an extremely costly legal infrastructure required to enfore it.
I personally believe that there are much better ways to structure incentive to produce information products that do not require copyright, patent and trade secret law. The idea of making information free, but requiring contributions and punishing freeloaders certainly seems to have potential. There would clearly be practical difficulties in arranging a universal system, but hey, nobody said that the revolution would be easy......
Some functional languages can have a quite large overhead depending on which advanced features they implement.
Haskell, for example, uses lazy evaluation, which means that calculations are done "on demand". This has a memory/performance overhead because it needs to save the calculation to be performed at a later time.
But this also buys you big convenience / elegance advantages that you don't get in other languages. With lazy evaluation you can define and manipulate infinte-size lists and trees, because you know that the actual values will only get created when you ask for them.
Other non-lazy functional languages can get very near to optimal speeds. Check out O'Caml for example, which is much more tuned towards creting very fast functional code and can certainly match C++ if you know what you are doing.
I can think of plenty of innovations that might start using up your terabyte rather fast.
One interesting idea is a transactional file system which logs all file operations. Great advantage of this would be that you could "roll back" to previous versions of files if you needed them. Couple that with some redundant error-correcting storage and your days of losing files will be a thing of the past.
Another great use is for indexes. Indexes generally speed up computing operations, at the cost of significantly increasing storage needs. Chuck some more dish space, and you could effectively have a Google on your own hard drive.... no more time consuming searches, just enter "1999 tax avoidance scheme" and get your hits in seconds.
p.s. I guess it should be "indices" for all the grammar nazis out there, but I actually think "indexes" works better here, as it is a technical term.....
Yeah, but it would still be an anti-trust concern if Microsoft *used* the monopoly on the desktop to give themselves an unfair advantage in the server market. This might include tricks such as giving away the database for free, spreading FUD, marginalizing competing products etc.
You reckon?
I'm British and would never use "have" in this instance. University is singular. Then again, I only went to a minor fenland polytechnic so wot wud I no of gramur an fings lyke dat?
About the only case I can think of where a singular noun gets a plural verb in English is the famous line: "we are not amused".
It would be a big number. But I don't think it would be very easy to estimate it using that method. You would need to:
a) Eliminate all non-typed text, particularly computer generated text and copies. Not easy, especially since identical pieces of text could have been typed many types ("First Post!" springs to mind....)
b) Add in an estimate of all typing that never made publication (deleted paragraphs etc.), in game keystrokes.
My suggested method of estimate the grand total number of keypresses per user would be to install lots of keyloggers, or look at MTBF rates for keyboard supplier.
I strongly disagree with your assertion that government cannot be effective in areas which are capital intensive. In most contries, the government is by far the largest investor in and owner of physical capital.
Roads/rail networks are an excellent example. They are extremely effective, basic infrastructure that can be a tremendous advantage to a developed economy. They cannot be provided efficiently by the free market (read some basic economics texts if you want to be convinced), so the government steps up to the plate. Lo and behold, having good transport infrastructure is a key factor in economic success, and by and large it is government provided.
The government expense is justified because the return on the investment (economic success, labour mobility, more income and therefore more tax revenue) is high. I like to think of research in the same way - you invest public money to make discoveries that will benefit everyone and create a better economy overall. Having this research in the public domain is superior to having it privately owned because it allows free market competition in resulting products and better enables incremental research.
I think the really interesting issue is how the government can get smart about funding in order to get even more discoveries happening in the public domain. Results-based funding, for example, would provide an incentive for private enterprises to make public discoveries.
Yeah, I never saw the point of self-advertisement on TV much. Anyone who is seriously into TV watching has a guide and/or knows what time their favourite programmes is on at anyway.
And slots that promote nothing but the channel (e.g. all the cute animated logos....) are a waste of time - people don't exactly have much "brand loyalty" as far as channels go. People switch channels 50 times a day, for god's sake. Promoting your "channel" is completely pointless vs., for example, actually scheduling something that people want to watch.
But one area I do think it is justified is promoting novel kinds of programme and new series launches. You can target pretty precisely the kind of audience the programme would appeal to, and can use this device to encourage people to branch out beyond their normal habits. Don't see much harm in that, and the BBC certainly has a role in broadening peoples' horizons.
Yeah, I have to say I pretty much agree with that sentiment.
.NET a truly open platform, they will have created a level playing field and they are going to have to fight some pretty serious competition.
.NET an open platform, then it probably won't succeed, and stuff like Mono may actually end up being the de facto standard on the low end while the Java platform mops up the enterprise end.
.NET platform I would start watching out for trojan horses like this real soon now.....
If MS make
If the don't make
Either way - I don't quite see what their business plan is going to be. My suspicion is that they will try to derail compatability in a way that forces people to buy MS software "components" - if you are a developer on the
Sure, it's good to have competition in the IDE space.
But last time I checked (5-6 months ago?) KDevelop didn't have anything to match Borland's VCL for RAD development. It's a good IDE, but Borland are just way ahead in terms of Visual Development.
The price is pretty negligible in TCO terms - it's well worth shelling out a few grand for even the most expensive Borland development tools if it can knock just 5% off your development time, and the speed of the compiler alone could well do that...
Don't get me wrong, I look forward to the day when open source tools are better than any commercial equivalent. My point is that we just aren't there yet.
Very true. But when you rent a house, you get lots of choices, and you could rent a similar one with no furniture if you wanted to pay less.
If MS had effective competition, they would probably be forced to do a "with IE" and "without IE" versions in order to compete. As it is, they can incur the cost of developing IE and pass it on to customers whether they want it or not.
The monopoly power has always been the real problem, not the bundling....
Hate to point this out, but a pretty standard tactic in business is "get them hooked".
Then, when there is no competition left (why compete? it's free/cheap and does what I want....) they can do what the hell they like.
The following examples spring to mind: IE, cigarettes, credit card loans, heroin. I'm sure everyone can think of a few more.
Wouldn't be surprised if you see DRM in WinAmp three years down the line, once everyone is on their proprietary music format, MP3s have been outlawed and you require a government license to create a Media Player.....
There's no problem with the algorithm. The carrying doesn't make a difference - you don't care about the result because you're using it to sort and merge (i.e. you only care whether the result is less than, equal to or greater than zero).
Don't remember all the SIMD instructions, but I think that would actually be slower as you would need to check the subtraction results for each components. Correct me if I'm wrong....
I've lost count of the number of times I wanted 64-bit integers, in pretty general purpose apps.
Not because I do big databases or suchlike, but they let you do loads of optimisations that wouldn't otherwise be possible. For example, you can pass around 8-byte structures in a single register, which is damn useful given the lack of available registers in the x86 architecture.
Example: I've recently been coding a large hexagonal grid component. Each point in the grid is indexed by 2 32-bit (x,y) integers. With a 64-bit register, you could put a full co-ordinate into a single register.
Why is this useful? Well, one of my requirements was to be able to manage large sets of co-ordinates (think reachable spaces for an AI). You want to be able to combine sets of co-ordinates, which basically requires merging two lists. In order to merge lists efficiently, you need to sort them. And with the 64-bit representation, you can do this with just one subtraction and one branch rather than a combination of two subtracts
and two branches. This is a definite speedup if you are hand-coding, and possibly an even bigger one if your compiler doesn't inline all the 32-bit code properly.
Other example: 32-bits are large enough for most integer applications (you couldn't enumerate all the people on the plant though....) but they tend to fall down when you multiply, e.g. 100,000 * 100,000 has already blown the 32-bit limit, and neither of those are particularly big numbers. Whenever you start doing a reasonable amount of multiplication, 64-bit becomes useful.
Also, 64-bits is big enough to encode the positions of pieces on a chess board. You can use bitwise logic to analyse and store positions. GNU chess certainly does it this way. I expect a *cosiderable* speedup in the top chess-playing algorithms when 64-bit becomes widespread.
I'm really keen to se 256-bit arrive to be honest, 2^(2^3) has more elegance than 2^(2*3) and it would allow you to store a set of bytes in one register. Would allow some very cool text-processing tricks.
Course, it might never happen - I predict a move towards massively parallel 64-bit computers rather than stonking 256-bit ones as the next major evolution in processor power.
Sweet, though I wouldn't try it nowadays since lots of people are using syntax highlighting...
The dual control aspect is the part I find most interesting.
One of the big wastes of the car industry is the amount of time all the capital (i.e. the cars) is being under-utilised. What percentage of time does a car sit on your driveway?
This system has the potential to turn into the ultimate shared car pool.... you can use them as public transport, but if you needed a car you could just switch it to manual and drive wherever you wanted, paying for use by the minute or whatever. When you'd finished, you'd just have to drop the car back onto any point in the network and it would wander off for someone else to use.
Would present some interesting technical challenges - the system would have to adapt to cars being dropped at any point in the network, and also dynamically move cars around so that there were enough units in the areas where demand is high. You might have to give it special warning in the case of major sports events or public gatherings, for example.
The company operating the vehicles perhaps? You don't need a driver to be liable if something goes wrong.
One would hope however that they build in some pretty good safety features though, such as automatic obstacle sensing, emergency braking and failsafe signalling.
Guess we just have to agree to differ on this one - you don't think scrapping patents would work, I most certainly do although I'm not convinced it will ever be meaningfully tried.
To answer a couple of your points (all good):
I don't think you would transfer that many people to university research - AFAIK a large amount of the manpower in drugs companies is around the production and testing of drugs, all of which would still have to be done by private companies if they wanted to compete. Even if they pick up the basic research for free, they still need to manufacture it efficiently and convince consumers that it is tested and safe if they want to make a good business.
You could even adopt a funding system where scientists are government funded but work within companies, on the proviso that the research results are available to all. This might be a good model for clinical trials as you mention.
Or as an even less disruptive alternative, the government could guarantee to write out the check for the development of any successfully researched drugs - essentially "buying" the development into the public domain. They would have to include a risk premium (to cover the risk of failed research), but the total costs would be exactly the same and the incentive to make a successful drug just as great. The only difference being that after the drug is made, you get the free market in production and supply rather than a monopoly once again. This might also work as a "bonus" for clever production techniques dreamed up by the ChemEs you mention.
Basically, we all know that patents are bad, that they restrict the free market, inflate prices and quite probably stifle future innovation. The only justification for them is to incentivise new discoveries, but I feel that this can be done in far more effective ways.
I've never worked in a drug company, but I've been in business and technology long enough to know that the ability to copy ideas and strong competition on a level playing field are the biggest drivers that force companies to perform and innovate. Patents prevent this from happening, and this more than anything else has convinced me that they ought to go.
That is indeed nice. Though I suspect that if one of the two was a lower-level langauge, then the translation to the higher level would either be very difficult or very inefficient, and the whole compiler is less useful if the two were the same level.
I can't think of an example of either type, apart from a pet langauge project I saw that had this as a specific goal - and used langauges that were all pretty much equivalent in data types and functionality.
....who thought he would cheat by copying someone else's code.
But he was pretty paranoid about getting caught, and realised that a verbatim copy wasn't enough, you'd have to change the variable names, comments etc.
So he did some research, wrote himself a little parser that read in the source code and built a parse tree of the program. He then wrote another function that spat out all the code again but with different spacing, block ordering and some simple variable renaming (e.g. x,y,x->a,b,c)
To make sure the structure of the code didn't give him away, he wrote a few code transformations, e.g. if a then b else c became if !a then c else b. The order of non-conflicting assignments were swapped, and mathematic expressions were re-arranged (sometimes actually optimising the original code in the process!).
Still wasn't good enough, the comments needed changing and the structure of the code looked the same. So he linked in a thesaurus and NLP/AUG engine to change the words in a meaning-preserving manner. Same principle could be applied to the more complex variable and function names, so buildTree became makeStructure etc.
Finally, to put the icing on the cake he modified the program so it could output the code in a couple of different functional languages. Made the plagiarism almost impossible to spot.
Best programmer I ever met.
Universities sound like the right choice to me. They have the fortunate by-product of producing more educated people as well as good ideas.
You can work out the economics. Make the assumption that it costs the same to produce an invention in a company as in a university (probably not true, since the univeristy doesn't have the lawyer/marketing overhead, and the peer review/academic competition in universities is arguably more efficient at spreading knowledge than closed corporate labs).
If the patent is granted, the average consumer will pay more and get less product (due to monopoly pricing) than they would if they had paid the required additional tax to fund the research in universities. The company makes more profit, but not enough to offset the consumer's loss. So the patent destroys value overall and is also probably regressive since corporate profits will tend to disproportionately benefit the rich.
With the invention in the public domain, companies can then compete in a free market to produce and market the product as efficiently as possible. This is in stark contrast to a patent-protected monopoly, which has far less incentive to cut costs since it is already sitting on a large margin and doesn't have to fight for customers. I actually think the companies would continue to innovate anyway to keep ahead of the competition even if they could not aquire a patent.
Basically, patents are bad, and the *real* free market solution is to abolish them.
Of course, people are dumb and don't like paying extra taxes, regardless of the fact that it might halve the prices of most products they buy. Ah well.....
This isn't the same as the halting problem, as any good computer hobbyist should know.
The CLR uses something called "verifiable" code, which can be checked algorithmically to be "safe", i.e. no pointer arithmetic, full type safety, no system calls etc. It's quite a strong condition, since code can be "safe" but not "verifiable". OTOH, any "verifiable" code is provably "safe". Proving code to be "safe" is hard (as in halting-problem hard) but the CLR doesn't need to do that.
As long as you only run "verifiable" code the CLR effectively controls all access to the system. So the paragraph is absolutely correct in that you could deny all "native" programming tools and only run verifiable code in the CLR. At that point DeCSS et al are screwed because you can enforce system-level encryption, no access to raw devices, secure video paths, government backdoors, mandatary micropayments and all other fun things that the Microsoft/MPAA/RIAA cartel would love to have.
Agree totally.
I have an intrinsic dislike for Microsoft because of their abusive monopoly status, and perhaps even a bit of British "support the underdog" attitude.
But I still use Win2k as my primary OS just because I can't do the things I want in Linux without spending hours on the web tracking down obscure bugfixes. Those are hours much better spent down the pub.
I like your attitude and do much the same thing myself but it unfortunately won't change their behaviour.
A 5% increase in sales to 99% of the population is worth it to these companies even if 1% boycott the product entirely. This is why principled boycotts by a small number of individuals will never really have much effect.
As does capitalism. Neither have been tried in the real world. :-)
Interestingly, the same argument gan be made about information as a public good.
Everyone gains if it is produced and placed in the public domain. It isn't "consumed" like a physical good so my use of information does not mean that there is less for everyone else. But because of this no single individual/corporation has the incentive to produce information based goods.
To create an incentive to produce, the current approach is to create an artificial concept of "intellectual property" to prevent the free use of information so that the producer can reap monopoly profits. This works in a fashion (information gets produced), but is highly inefficient because the full benefits are not realised, future innovation is restricted and there is an extremely costly legal infrastructure required to enfore it.
I personally believe that there are much better ways to structure incentive to produce information products that do not require copyright, patent and trade secret law. The idea of making information free, but requiring contributions and punishing freeloaders certainly seems to have potential. There would clearly be practical difficulties in arranging a universal system, but hey, nobody said that the revolution would be easy......
Some functional languages can have a quite large overhead depending on which advanced features they implement.
Haskell, for example, uses lazy evaluation, which means that calculations are done "on demand". This has a memory/performance overhead because it needs to save the calculation to be performed at a later time.
But this also buys you big convenience / elegance advantages that you don't get in other languages. With lazy evaluation you can define and manipulate infinte-size lists and trees, because you know that the actual values will only get created when you ask for them.
Other non-lazy functional languages can get very near to optimal speeds. Check out O'Caml for example, which is much more tuned towards creting very fast functional code and can certainly match C++ if you know what you are doing.