Prof. Andreas Zeller from the Saarland University, Germany, announced his Tool Igor: “Your program does not work? The ‘AskIgor’ Web service automatically finds out why. Researchers of Saarland University, Germany, have started a Web service that automatically finds out the causes for program failures – automatically, quickly, and for free. At www.AskIgor.org, programmers may submit buggy Linux programs; Diagnosis tools for Java and Windows programs are underway.” Read more here.
This is amazing! I ran the test program and it’s amazing.
Once we get to the point where the program looks at the programmer’s code and writes it better I would start to worry about more outsourcing… to the machines. The Matrix has us.
“Once we get to the point where the program looks at the programmer’s code and writes it better I would start to worry about more outsourcing… to the machines. The Matrix has us.”
Actually it’s not even a millimeter toward programming AI. Building a robot that can detect scratch and engine problems in a car, is still totally different from a robot that can *create* a new car.
I wonder how Dijkstra would have felt about this. It is really doing stuff you should be doing anyway while you code, but we can’t all be Dijkstras and Knuths.
When properly interfaced into a complete programming environment, I think this could be interesting. Combining it with maybe Anthill and Bugzilla, you could really have something incredible.
You are thinking of the Halting Problem, which applies when you try building a program which can decide the correctness of program given the program’s description and a set of input data.
AskIgor doesn’t do that – it executes the actual program twice with different input sets, and collects and compares the internal states during the execution. As such, the class of programs it can analyze is (at the moment) limited to non-interactive programs which show the failure after a finite amount of time.
Igor (it’s actually “I”, not “L” — see how the .pdf file is called) is a Russian male name.
see http://www.st.cs.uni-sb.de/askigor/faq.php
—-
Why “Igor”?
Igor is the lab assistant in several Frankenstein movies. He does the dumb and ugly work, while being absolutely loyal to his master. For us, Igor was just the perfect name for an automated debugging gofer. “Igor! Go for bugs!”
Actually, Igor (pronounced EE’gore) is a common russian first name, originating from ancient Scandinavian “Ivor”, meaning “bow warrior”. You might also think of Igor as a hero who hits even the most difficult target.
—-
Reinfeld would have been a better choice for the name, seeing as though he eats bugs.
Hi, I’m the professor behind Igor.
We did not run Igor through itself – Igor is written in Python and PHP, but debugs executables. We’re working on an Eclipse plugin that is written in Java and works with Java programs – and this one can be applied on itself. We’re still at the design phase, though – don’t expect to download something tool until mid-2004.
Have fun debugging!
“Incidentally — I don’t mean to embarrass you in any way, but I’m a rather brilliant surgeon. Perhaps I can help you with that hump.”
“What hump?”
How about a list of publications?
“You are thinking of the Halting Problem, which applies when you try building a program which can decide the correctness of program given the program’s description and a set of input data.”
Close, but even weaker than that. Given the description of a program and an input to that program, can another program be created that will decide if the first program will halt when run on the input?
Even something as simple as this is undecidable. Rice’s theorem says that essentially _any_ property of a program is undecidable.
Where is the description of this system?
Very intressting and Innovative project. Mr. Zeller!
I wonder how long it takes before google and MS are starting to copy it..
q. How do you prevent crackers from uploading backdoors and
rootsys programs, does the code actually run to get debugged?
I am not that great in programming but it would be fairly easy to make a backdoor program and let that get executed on the Igor server. How do you deal with these things?
> You are thinking of the Halting Problem, which applies when
> you try building a program which can decide the correctness
> of program given the program’s description and a set of
> input data.
It must be said, though, that the Halting Problem only shows that *in general* it’s not possible to decide the correctness of a progra given the program’s description and a set of input data, it doesn’t tell us anything about *specific* cases when this is possible, in fact it only tells us about *one* case when this is not possible, and specifically when the program whose correctness has to be tested is the testing program itself.