Also, their lawsuit is not going too far, unless they personally are the copyright owners of the code. Just having a violation is not enough. The copyright owner needs to sue them for it. It's not enough for someone who have heard about the work to sue them.
Once this service is up and running, they'll get a botnet which will take over people's machine and start sending spam. If it manages to send 10000000 emails from your machine, who pays the bill?
1) java failed to support variables in stack, and the whole VM/GC thing is horrible.
> Uh, variables on the stack isn't required to > build "correct programs". Meanwhile, I would > argue that a GC *helps* you do just that.
Here's how the logic works. Java removed one of the important features of c++, which is stack variables. The result of this decision was that they need to use very complex tool (the heap) to manage memory of all objects. Then they use GC to patch the earlier bad decision. So GC just tries to patch a problem that java created in the first place. The problem does not exists in C++. In java's case, the complexity caused by heap allocation is a reason why java failed.
2) haskell failed in supporting for-loops
> Haskell failed because of *for-loops*? WTF? > > Heck, even if that made any sense (which it > doesn't, at least to my feeble brain, as, > AFAICT, for-loops aren't even necessary, let > alone a deal-breaker), how is mapM_ not > perfectly sufficient?
Important feature of loops in C++ is that you can move away much of the code from inside the loops as possible, because that code gets executed millions of times. So any extra instructions that you cannot get rid of when writing a loop is bad for your performance. Try writing any algorithms for image manipulation if your loops to go through pixels and _modify_ the image, if your MapM_ contains function calls inside the loop! And I'm not even talking about what monads make your image manipulation for-loops to do...
4) python failed when it's performance is not very good
> Also not "required" for making "correct > programs". Is Python necessarily suited to all > application domains? No (although it's strong > FFI means you can probably use it for most). > But it's still a perfectly fine language > when used appropriately.
One of the correctness criteria is that the resulting program is fast enough.(I don't want to wait weeks to get result from the program.)
5) C# failed because it's from microsoft
> ROFL, how does that stop you from building > "correct programs"? Oh right, it doesn't. It's > just blind dogma.
If the fact that it comes from microsoft causes that it won't work on my linux box or solaris box, then it prevents me from implementing one of the important requirements. C# might be useful for building PC applications, but useless for anything more complex. (it's no longer the case that every computer has windows in it and microsoft's support for other platforms is kinda bad). C++ has no such problems.
> Frankly, it sounds to me like you're just > looking for feeble excuses so you can > slink back to the comfort of C++.
Well, these were the reasons each of the language failed for me. Other people might have different reasons. And maybe they're doing different decisions on the language of their choice.
Every time I try to start using some other language, it fails. Mostly because other languages do not provide necessary tools to build correct programs.
1) java failed to support variables in stack, and the whole VM/GC thing is horrible.
2) haskell failed in supporting for-loops (MapM_ is not exactly the same thing)
3) erlang failed when it made it too difficult to use existing libraries made with some other language
4) python failed when it's performance is not very good
5) C# failed because it's from microsoft
6) C failed because of it's lack of support for abstractions
So I keep coming back to c++ every time. It provides combination of performance, low level programming, high level programming, good abstractions, rich tools to build your programs, proper tools for debugging your programs, plenty of libraries available, caveats are well known and workarounds exists, and it keeps working year after year without any compability problems in all supported environments.
C++0x dropping concepts is a big news. This is because c++ is important. It also means that the concepts proposal was not good enough. Only the best proposals will survive. If concepts needs to go, then they go. C++ is too important to get ruin by proposals that do not work or leads programmers to deadends. Concepts looked like a fine proposal at first, but seems it was still not good enough.
This might make other languages think they're progressing faster and providing new features faster. The other languages are still struggling to provide even basic support for things that programmers need. It's not the new features that the languages provide that determines if the language is useful. It's what the language fails to provide that counts. If there are big gaps in it's support, the tool is just unusable for use.
You cannot change the world if you never tell anyone about your idea. If you truly believe that your idea is good, share it and make the world better place.
Good chance is that noone is interested in your idea. It takes years and years of work to get anyone interested in your work, much less some ideas with no proper effort behind them.
Ideas are useless, if noone implements them. It's the implementation that gets patent protection, not just the idea. But we can only implement the very best ideas - it takes lots more effort to extract useful result out of an idea than it takes to invent the idea. And it's boring manual labor of hundreds of people to make an idea useful.
Even if the size is only 4kb, it takes lots of work to write those things. The reason is that 4kb is LOTS of space. And if you're using just small primitives, you can fit LOTS of primitives to that space. Choosing correct primitives for that is LOTS OF WORK. Making it look great requires testing after testing, and knowing algorithms for graphics.
In competitions they have restricted the size to 4kb just to keep it suitable for one person. It probably takes one year to write one of those. The size limitations are not there to annoy programmers, they are there to keep the amount of work reasonable. If the size was bigger you'd have to use 10 years to write one or use 10 people working for a year...
Even if $80000 is less than they've spent on those songs, the cost of creating those songs should be distributed between all consumers who listen the music. So single person should not be required to pay the cost of creating those songs alone. One million dollars is small change for a company dealing with thousands of customers, but big money for one person.
Guess they're claiming that distributing those on internet will prevent them distribute the cost between consumers. But seems they're assigning blame for actions of thousands of people to single person. And that does not sound right.
The whole idea of companies sueing normal people does not sound right. Companies should deal with problems of thousands of people -- their customers. If a company assigns a blame of their damages to single person, the awards necessarily go high, because company cannot be funded by single person. Instead, they should distibute the damage awards between _all_ people who distributed the copies. This means they should try to collect $2 from all persons using kazaa and who happened to listen the songs. How they're going to collect that from the 2 million people might be difficult. But that's what they should do. This is what companies are for -- collecting money from thousands of people.
Combining effect of those thousands of separate distibutions and placing them on single person is wrong. The US law about copyright is also wrong in this issue, they made damage awards excessive because companies need to have some way to get back the money. But making single person pay for actions of many is clearly wrong.
Internet distribution is clearly issue of thousands of people working together. You cannot place blame for it on one person.
Also by the way, companies should sue other companies. In this case, they should sue the companies that distribute internet connections to thousands of people. But I guess that was already decided and that there are no grounds to sue them. So they went for the ordinary people instead. Uh oh.
1) Copying bits is almost automatic operation with current technology. Any legislation that makes restrictions on copying is outdated. If you place limits of what can be copied, you will have millions of people that can be sued on a whim of the copyright owners.
2) On the other hand, creating digital works requires considerable effort. This effort should be rewarded and encouraged. How to do this is open issue which will evolve over time.
3) But there will be large collections of digital works available because of access is not restricted and availability of copies is very different from availability physical goods.
4) But once digital work has been created, digital copying should be encouraged to maximize benefit of technology to the society. (worst kind of digital work is something noone uses)
5) Need to be careful with relying on old technology solutions to new digital problems. For example money or cash is already outdated because it takes more effort to move money than move digital works. Services requiring money transfer have clear disadvantage over services which work only in digital domain. Any solution that ties digital copies to manual movement of cash is outdated.
6) Open source and free software movements have solved the problem copies using a licensing scheme that allows copying, but they create additional problem that people work on their free time receiving no compensation for their time that is used to create digital works. Compensation for creating digital works comes in form of other digital works and is not suitable for buying food for example. (this is slashdot so this was necessary)
7) Digital behaviour of people changes very quickly. Behaviour forbidden yesturday will be necessary survival behaviour tomorrow in the digital world. Make sure you update your system regularly and measure the effect of any changes.
8) There are very small number of activities in digital world that should be controlled or restricted by law. Most activities involving computers are harmless and causes no or only small damage. (including copying of copyrighted works)
9) When you decide to restrict some activity, make sure it is not something used by thousands of people for legimate purposes. If you create hundred thousand criminals from ordinary people by changing the law, something is wrong. (seems that the US copyright people did just that, criminalise huge part of the population and allow punishing them.)
Also, their lawsuit is not going too far, unless they personally are the copyright owners of the code. Just having a violation is not enough. The copyright owner needs to sue them for it. It's not enough for someone who have heard about the work to sue them.
Once this service is up and running, they'll get a botnet which will take over people's machine and start sending spam. If it manages to send 10000000 emails from your machine, who pays the bill?
In this case, the jury was explicitly forbidden to decide on liability. So they had to assume that he did it.
1) java failed to support variables in stack, and the whole VM/GC thing is horrible.
> Uh, variables on the stack isn't required to
> build "correct programs". Meanwhile, I would
> argue that a GC *helps* you do just that.
Here's how the logic works. Java removed one of the important features of c++, which is stack variables. The result of this decision was that they need to use very complex tool (the heap) to manage memory of all objects. Then they use GC to patch the earlier bad decision. So GC just tries to patch a problem that java created in the first place. The problem does not exists in C++. In java's case, the complexity caused by heap allocation is a reason why java failed.
2) haskell failed in supporting for-loops
> Haskell failed because of *for-loops*? WTF?
>
> Heck, even if that made any sense (which it
> doesn't, at least to my feeble brain, as,
> AFAICT, for-loops aren't even necessary, let
> alone a deal-breaker), how is mapM_ not
> perfectly sufficient?
Important feature of loops in C++ is that you can move away much of the code from inside the loops as possible, because that code gets executed millions of times. So any extra instructions that you cannot get rid of when writing a loop is bad for your performance. Try writing any algorithms for image manipulation if your loops to go through pixels and _modify_ the image, if your MapM_ contains function calls inside the loop! And I'm not even talking about what monads make your image manipulation for-loops to do...
4) python failed when it's performance is not very good
> Also not "required" for making "correct
> programs". Is Python necessarily suited to all
> application domains? No (although it's strong
> FFI means you can probably use it for most).
> But it's still a perfectly fine language
> when used appropriately.
One of the correctness criteria is that the resulting program is fast enough.(I don't want to wait weeks to get result from the program.)
5) C# failed because it's from microsoft
> ROFL, how does that stop you from building
> "correct programs"? Oh right, it doesn't. It's
> just blind dogma.
If the fact that it comes from microsoft causes that it won't work on my linux box or solaris box, then it prevents me from implementing one of the important requirements. C# might be useful for building PC applications, but useless for anything more complex. (it's no longer the case that every computer has windows in it and microsoft's support for other platforms is kinda bad). C++ has no such problems.
> Frankly, it sounds to me like you're just
> looking for feeble excuses so you can
> slink back to the comfort of C++.
Well, these were the reasons each of the language failed for me. Other people might have different reasons. And maybe they're doing different decisions on the language of their choice.
Every time I try to start using some other language, it fails. Mostly because other languages do not provide necessary tools to build correct programs.
1) java failed to support variables in stack, and the whole VM/GC thing is horrible.
2) haskell failed in supporting for-loops (MapM_ is not exactly the same thing)
3) erlang failed when it made it too difficult to use existing libraries made with some other language
4) python failed when it's performance is not very good
5) C# failed because it's from microsoft
6) C failed because of it's lack of support for abstractions
So I keep coming back to c++ every time. It provides combination of performance, low level programming, high level programming, good abstractions, rich tools to build your programs, proper tools for debugging your programs, plenty of libraries available, caveats are well known and workarounds exists, and it keeps working year after year without any compability problems in all supported environments.
C++0x dropping concepts is a big news. This is because c++ is important. It also means that the concepts proposal was not good enough. Only the best proposals will survive. If concepts needs to go, then they go. C++ is too important to get ruin by proposals that do not work or leads programmers to deadends. Concepts looked like a fine proposal at first, but seems it was still not good enough.
This might make other languages think they're progressing faster and providing new features faster. The other languages are still struggling to provide even basic support for things that programmers need. It's not the new features that the languages provide that determines if the language is useful. It's what the language fails to provide that counts. If there are big gaps in it's support, the tool is just unusable for use.
You cannot change the world if you never tell anyone about your idea. If you truly believe that your idea is good, share it and make the world better place.
Good chance is that noone is interested in your idea. It takes years and years of work to get anyone interested in your work, much less some ideas with no proper effort behind them.
Ideas are useless, if noone implements them. It's the implementation that gets patent protection, not just the idea. But we can only implement the very best ideas - it takes lots more effort to extract useful result out of an idea than it takes to invent the idea. And it's boring manual labor of hundreds of people to make an idea useful.
Even if the size is only 4kb, it takes lots of work to write those things. The reason is that 4kb is LOTS of space. And if you're using just small primitives, you can fit LOTS of primitives to that space. Choosing correct primitives for that is LOTS OF WORK. Making it look great requires testing after testing, and knowing algorithms for graphics.
In competitions they have restricted the size to 4kb just to keep it suitable for one person. It probably takes one year to write one of those. The size limitations are not there to annoy programmers, they are there to keep the amount of work reasonable. If the size was bigger you'd have to use 10 years to write one or use 10 people working for a year...
Even if $80000 is less than they've spent on those songs, the cost of creating those songs should be distributed between all consumers who listen the music. So single person should not be
required to pay the cost of creating those songs alone. One million dollars is small change for a company dealing with thousands of customers, but big money for one person.
Guess they're claiming that distributing those on internet will prevent them distribute the cost between consumers. But seems they're assigning blame for actions of thousands of people to single person. And that does not sound right.
The whole idea of companies sueing normal people does not sound right. Companies should deal with problems of thousands of people -- their customers. If a company assigns a blame of their damages to single person, the awards necessarily go high, because company cannot be funded by single person. Instead, they should distibute the damage awards between _all_ people who distributed the copies. This means they should try to collect $2 from all persons using kazaa and who happened to listen the songs. How they're going to collect that from the 2 million people might be difficult. But that's what they should do. This is what companies are for -- collecting money from thousands of people.
Combining effect of those thousands of separate distibutions and placing them on single person is wrong. The US law about copyright is also wrong in this issue, they made damage awards excessive because companies need to have some way to get back the money. But making single person pay for
actions of many is clearly wrong.
Internet distribution is clearly issue of thousands of people working together. You cannot place blame for it on one person.
Also by the way, companies should sue other companies. In this case, they should sue the companies that distribute internet connections to thousands of people. But I guess that was already decided and that there are no grounds to sue them. So they went for the ordinary people instead. Uh oh.
Issues to consider
1) Copying bits is almost automatic operation with current technology. Any legislation that makes restrictions on copying is outdated. If you place limits of what can be copied, you will have millions of people that can be sued on a whim of the copyright owners.
2) On the other hand, creating digital works requires considerable effort. This effort should be rewarded and encouraged. How to do this is open issue which will evolve over time.
3) But there will be large collections of digital works available because of access is not restricted and availability of copies is very different from availability physical goods.
4) But once digital work has been created, digital copying should be encouraged to maximize benefit of technology to the society. (worst kind of digital work is something noone uses)
5) Need to be careful with relying on old technology solutions to new digital problems. For example money or cash is already outdated because it takes more effort to move money than move digital works. Services requiring money transfer have clear disadvantage over services which work only in digital domain. Any solution that ties digital copies to manual movement of cash is outdated.
6) Open source and free software movements have solved the problem copies using a licensing scheme that allows copying, but they create additional problem that people work on their free time receiving no compensation for their time that is used to create digital works. Compensation for creating digital works comes in form of other digital works and is not suitable for buying food for example. (this is slashdot so this was necessary)
7) Digital behaviour of people changes very quickly. Behaviour forbidden yesturday will be necessary survival behaviour tomorrow in the digital world. Make sure you update your system regularly and measure the effect of any changes.
8) There are very small number of activities in digital world that should be controlled or restricted by law. Most activities involving computers are harmless and causes no or only small damage. (including copying of copyrighted works)
9) When you decide to restrict some activity, make sure it is not something used by thousands of people for legimate purposes. If you create hundred thousand criminals from ordinary people by changing the law, something is wrong. (seems that the US copyright people did just that, criminalise huge part of the population and allow punishing them.)