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.
Don't we learn by trial and error?
IF AI is close... they'll have a patent on it?
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?
means heuristics.
I.B.M. stands for I.tty B.itty M.egaloMANIAC.
Yours In Domodedovo,
Kilgore T.
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
This has already been tried many years ago and is described in Artificial Intelligence: A Modern Approach which is a book that has been around for quite some time, despite being called "modern". http://aima.cs.berkeley.edu/
There are a lot of challenges with this approach, and it ultimately was been found to be less efficient than existing specialized algorithms used by compilers. It's only strong point would be that it could be generalized to many different languages/scenarios, assuming you could ensure that refactorings don't change the end behavior of the program, which in itself is a big challenge.
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.
I cringe every time I see one of these ... and hope my name's not on the patent, or our board didn't do the review.
I can tell you that the IBM process rewards patents with $$$ (well, maybe $$ or $ these days), that patents are really important to IBM (prestige and licensing revenue), and that we [still] shoot down a lot of vague or just dumb patents. I've seen plenty of patent ideas that looked like they were spit out by a jargon generator, and when you ask "what are you trying to claim" the inventors can't really come up with anything coherent. Those get publish ratings (if they're lucky) or a close (more likely).
But IBM's a really big company. There are probably 50 - 100 separate boards in IBM reviewing patent disclosures. I think most of the really bad patents you see are examples of situations where a patent is assigned to the wrong board, and a bunch of (let's say) power supply designers are asked to review a web 2.0 business process patent. Of course it's cool and new to them. It's also true that IBM's boards have different standards. A lot of boards have at least one "hard-ass" who's seen it all, done it all, and won't stand for "automating a process you already perform manually" ideas. But, sadly not every board has one of them.
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!
What if IBM came back in a year or so and used their giant patent collection in a huge case about why software patents don't make sense and why the USPTO sucks?
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
recommended this approach, I think.
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.
IBM is slow and steadily loosing it's relevance and credibility.
To be fair to the IBM folks...
Imagine that you need to optimize a particular application for a system. On a given system, there are dozens of tunable parameters that can affect performance. For example, on something as ubiquitous as a filesystem mount there are tunable parameters that may or may not improve a workload. Increasing file caching may help. If the link to the remote server has high latency, then caching indexes may help. If file turnaround is very large (i.e., lots of dynamically created files that get purged regularly), then lowering the cache may slow down immediate file access but lead to better overall throughput. In other words, it's a highly complex system.
To optimize this, even for the best engineers, is close to impossible. What we end up with is often a working and adequate solution that is sub-optimal.
It seems that the goal of the IBM approach is to introduce a methodology to automate testing these parameters. Certainly doesn't appear new, but has some merit.
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.
They've patented Web Sphere application development.
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!
IBM should patent a method of writing new patents by trial and error.
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.
The concept and implementations of optimizations by computers/computer programs themselfes is already extensively described in redcode/corewars evolvers.
It goes even a step further and introduces the concept of computers programming computers.