IBM Patents Optimization
jamie(really) writes "IBM appears to want to patent optimizing programs by trial and error, which in the history of programming has, of course, never been done. Certainly, all my optimizations have been the result of good planning. Well done IBM for coming up with this clever idea. What is claimed is: 'A method for developing a computer program product, the method comprising:
evaluating one or more refactoring actions to determine a performance attribute;
associating the performance attribute with a refactoring action used in computer code; and
undoing the refactoring action of the computer code based on the performance attribute.
The method of claim 1 wherein the undoing refactoring is performed when the performance attribute indicates a negative performance effect of the computer code.'"
The first two words of what is claimed:
"A method"
IBM? Fear the soon-to-come decision regarding Bilski vs. Kappos. That is all.
Living With a Nerd
IBM is on to something big here, folks. Now just try to wrap your mind around this idea: we somehow enable this optimization on ... multiple levels! Stay with me, stay with me, I know this seems like a crazy idea right now. But I imagine a future where just adding something as simple as -02 or -03 to your compile commands will increase the level of optimization at an expense of compilation time!
... what if you didn't have to type out each of your compile statements when you're compiling hundreds of files? What if, and this is totally futuristic possibility here, we introduce a build tool of some sort to the whole process? Let's call it Mack ... no, wait, Make!
Did you get all that? Because I think I just made history.
*grabs his head* Oh Jesus, oh sweet Jesus, another one's coming to me. It's gonna be big! What if
Elvis MF Christ I am going to be a rich man.
My work here is dung.
Trial and error? Sounds like someone needs to patent a way to optimize optimization so that it doesn't include all this wasted time of trial and error.
Thank goodness we allow software and concept patents in the US, else this new advancement in computer optimization might never have been developed. As a bonus, once the patent expires, the method will be in the public domain, so everyone will be free to optimize their code using trial and error.
Tequila: It's not just for breakfast anymore!
Can I patent "Hip Thrusting for Procreation or Fun" and just bill the planet?...c'mon only $2/person ($1 in the developing world cause I'm generous like that).
...there was a $10,000 bonus for patents at IBM in the month of April 2008, right? Alternatively, this was submitted internally at IBM on April 1, and someone missed the joke.
IBMs internal process must have slipped a lot since I was there. I was once on a team which applied for a patent which was useful and arguably non-obvious, the only problem being that IBM had actually done something similar some 20 years before (in a different language)... internal patent people shot it down.
A big shout-out from IBM to all our hill-climbing friends.
As crappy as business model patents are, I think I like product development process patents even less.
Is there some sort of public RFC system on patents? Is there a "write your senator" sort of mechanism for the scenario where the public hears about a patent application before it's awarded and wants to make sure the patent investigator understands the situation? If not, it seems like that would be a worthwhile tool to have.
I had a professor who said that beginner programmers use the Monte Carlo method of programming. You've probably done it, too: change something at random and see if that fixes the problem.
I guess this would be the Monte Carlo method of optimization?
Isn't the larger class of this idea called Newtons Method? Not only has it been done on the software level; I think the mathematicians may have something to say about it too.
The reason companies apply for obvious and trivial patents is because they know that government will grant them. As long as government continues to grant obvious and trivial patents, it is guaranteed that companies will apply for them, and that litigation itself will continue to be a profitable business model.
The law is exploited because the law is designed to be exploitable.
If you're going to comment on a patent, read the patent first.
"IBM appears to want to patent optimizing programs by trial and error"... ...except that isn't what the patent claims describe. I'll grant that if your expectations have been set to believe that's what the patent covers (as mine had been by the summary), then it's possible to interpret the claims in a way that conforms to that assumption; but if you actually read the entire patent to understand the claims in context, that isn't what they really say.
What they are trying to patent is a specific optimization - that of reversing refactorings that the programmer did. If you would like to debate why this is, or isn't, a valid thing to patent, go right ahead; but please don't waste the debate by talking about all the different code optimization schemes that don't do what the patent describes and pretending they are prior art.
If you read the description, the claimed invention is not about trial and error development. The idea is that every time code is refactored, the development environment will tag the refactoring. Refactorings that could affect performance are transparently undone at compile time, so long as it wouldn't change the functional behavior of the program. Thus, the developer sees nice, neat comprehensible code, and the compiler sees more optimized, compiler-friendly code.
Also, if you look the application up on PAIR (the PTO's public patent application database, which contains more detail than the regular patent search or Google Patents), you'll see that it's a new case. That is, the Patent Office hasn't examined the application yet. It's highly likely that after a few rounds of office actions the claims will not look like the current ones. They will probably be narrower and hew more closely to the description in the specification.
Comment removed based on user account deletion
Inventions then cannot, in nature, be a subject of property. Society may give an exclusive right to the profits arising from them, as an encouragement to men to pursue ideas which may produce utility, but this may or may not be done, according to the will and convenience of the society, without claim or complaint from anybody. Accordingly, it is a fact, as far as I am informed, that England was, until we copied her, the only country on earth which ever, by a general law, gave a legal right to the exclusive use of an idea. In some other countries it is sometimes done, in a great case, and by a special and personal act, but, generally speaking, other nations have thought that these monopolies produce more embarrassment than advantage to society; and it may be observed that the nations which refuse monopolies of invention, are as fruitful as England in new and useful devices.
Thomas Jefferson, founder member and director of USPTO.
http://press-pubs.uchicago.edu/founders/documents/a1_8_8s12.html
Read radical news here
Of course I write all my software from the first to last line with perfect efficiency. No bugs, no need to refactor. So IBM and now prove me wrong.
The patented stuff is the "claims". You'll find them hidden, starting somewhere within a brick of text. Harder to find than the abstract, but they're the thing that count.
Expert in software patents or patent law? Contribute to the ESP wiki!
has severly increased in the last few years, making it nearly unreadable.
The post is written by an illiterate (did anyone even look at the patent?) causing the usual slashtards to complain about things they clearly do not understand.
The patent has nothing to do with what the poster claimed. The patent roughly does this: people refactor code to make it more readable or easier to modify. This sometimes has the effect of making the code perform worse. The patent is about tracking the refactoring at some abstract level, and undoing it *at compile time* to gain both the benefits of the refactoring readability and the performance before the refactoring.
This is a good idea. Obvious after the fact, but novel, useful, and not at all about "IBM appears to want to patent optimizing programs by trial and error". If they've implemented it (reducing it to practice) that that would be impressive and innovative, which is what patents were designed for.
Why has Slashdot has become swamped with morons and illiterate whiners? Does anyone know of a place this is not the case where intelligent adults can converse about topics without people too lazy to read swamping any useful comments?
This is not a method of gradually figuring out how to boost performance by trying different things.
This invention makes changes to the source code on the fly. The purpose is to allow programmers to re-factor code for readability, but un-do the process before compiling. Presumably this is built in to one of their automatic refactoring applications or IDE. It is about fixing the problems refactoring causes, specifically in this case performance issues. I assume it could work like automatic inlining of small, commonly used functions, but is open to be a lot more complex.
You click the buttons on the GUI, it refactors some things for you and maintains a history of those actions. It stores the resulting code, which you send to source control or final build kit or whatever. When building, it examines which changes had a negative impact on performance and reverts those before compiling.
To the user, the code is refactored. To the computer, it is not.
My question is, how the hell do you debug this kind of output, or store it in source control? You are clearly going to be locked in to the same IDE, and probably same IDE version, and have to check in all of the project files. Cross-compilation is going to be difficult at best, since compiling the raw code won't have the performance enhancements. Clever for a closed-process shop, but kinda impractical.
What will be more interesting is whatever people come up with to deal with the misery this will create.
I think there's a lot of prior art on this one...
Religion: The greatest weapon of mass destruction of all time
What's next? Patents on random numbers? This is getting so bogus! My guess is that a large part of the reasons for all these "trollhouse good" patents is that companies give bonuses and promotions to the scientists and engineers who generate patents. I know that the company I worked for for almost 20 years did.
Sometimes, real fast is almost as good as real-time.
Actually, someone will probably point out how this is not simulated annealing, but this is how I understand it. It's like a genetic algorithm, but with one population member. You start out with a "high temperature", where you try lots of random runingthings at once. Whenever some random combination makes things better, you keep it. Then you lower the temperature, which means you reduce the number that you try at once. Eventually, you're down to trying one random change at a time.
This "AI" technique is used for things like VLSI placement and routing. You have an N-dimentional circuit that you want to squeeze into basically a 2D space. (The placement is 2D, the routing is a bit more than that.) How do you find the optimal arrangement of gates and their interconnects? Well, optimal is NP-hard, so you can't do it for large circuits. So we use "randomized search". For placement, a random placement is selected, and a "fitness function" is applied. Then random swaps are performed, and when the fitness improves, keep the new placement. A similar thing is done for routing.
Every patent that is ever written walks the line between too broad and too narrow claim language. The broader the language, the more likely prior art will be shown to exist. If the claims are too narrow, it is too easy for others to get around them.
These claims seem about as broad as it gets. There's a whole wiki article on refactoring: http://en.wikipedia.org/wiki/Code_refactoring
Can't imagine this will be issued as written.
I hate being bipolar; it's awesome!
Is there some sort of public RFC system on patents? Is there a "write your senator" sort of mechanism for the scenario where the public hears about a patent application before it's awarded and wants to make sure the patent investigator understands the situation?
There is WikiPatents.
Heuristics + Algorithms + Logic + One letter forward = IBM
Now that IBM has discovered optimization, maybe they could start using this revolutionary method on Lotus Notes...
The age-old Rules of Optimization:
1. Don't.
2. (For experts only) Don't yet.
In the course of every project, it will become necessary to shoot the scientists and begin production.
Typical response from a child. When told you should educate yourself about what you're trying to attack
And:
you're going to have to lose the whiny bitch attitude before you'll have any chance
Just saying.
Weaselmancer
rediculous.
Didn't a patent application originally require an implementation of the method being patented be included? IBM should be forced to submit a grad student along with this patent application!
I've abandoned my search for truth; now I'm just looking for some useful delusions.
I patent patent optimization by trial and error!
Doesn't the ATLAS Project count as prior art for this? It basically compiles the code every possible way, runs it, and compares the results to choose the best algorithm. I believe the traditional use of grad students to achieve trial-and-error optimization also should qualify as prior art.
I've abandoned my search for truth; now I'm just looking for some useful delusions.
If all patents worked the way software patents do then I would so be the first one to patent my revolutionary method for taking a crap while sitting down.
After I build my time machine I plan to go back in time and patent the process of writing buggy code. This of course will lead inescapably to my next patent of fixing buggy code, while of course recursively inserting new bugs. I may even claim all subsequent programs to be covered under these two patents.
The picture I got after reading the post was that it's just another implementation (if they implemented it...) of natural selection. See, (e.g.) human reproduction involves random changes on DNA which will actually survive if they make the new being more productive/fast/efficient/stronger.
Just wait till someone patents patenting.
If you undo it then it wasn't refactoring but refucktoring
Yes I did read the actual patent, well some of it. If the patent office actually allows this I think I will scream. Hmmm I wonder if I will have to pay royalties every time I write a program now.
Kosh: "Understanding is a 3 edged sword, your side, their side, the Truth."
I've filed for a patent on "using a handheld device to selectively transfer contrasting material onto any flat surface or material for the purpose of creating symbols in combinations for the purpose of communication of thoughts or ideas in a non-verbal form". Everyone on the planet should get a jump on it being granted and send me money now -- unless you've never used a pen or pencil to write anything anywhere your entire life. Don't worry, I'm not too greedy: I only expect $1US for a lifetime license to use the technology. :-)
Are YOU using the TOOL, or is the TOOL using YOU? Think about it!
Everybody here should listen (or watch) at least once Andrew Tridgell's presentation about how to read a software patent. He's a good and entertaining speaker, and what he has to say is highly relevant.