IBM Watson's Next Challenge: Modernize Legacy Code
spectrum.ieee.org
spectrum.ieee.org
Would you like help?
* Get help with writing the program.
* Enable autocorrect and code prediction.
* Translate the program to COBOL.
* Write the program without help.
[ ] Pin Watson to taskbar.
Phase 1 (18 months): COBOL-to-Java code automated refactoring to x86/RHEL platform. This was the most complex and risky phase.
Phase 2 (12 months): Code advanced refactoring to remove COBOL design overtones
Phase 3 (3 months): Infrastructure moved to AWS GovCloud (US)
Article: https://aws.amazon.com/blogs/apn/automated-refactoring-of-a-...
Discussion here: https://news.ycombinator.com/item?id=19839563
The only thing that event proved was that a computer can press a button faster than a human can. The system was getting a digital signal when the signaling devices were unlocked, so unless Watson was unsure of the correct response, it could _always_ beat the humans to the punch. It also had the advantage of parsing the text version of the answers, rather than the audio of Alex speaking in real time, meaning it had a head start to begin with. Unlike the similar Chess and Go challenges, the Jeopardy event was incredibly unfair to the humans involved.
This seems to me much more impressive than playing go or chess..
https://spectrum.ieee.org/biomedical/diagnostics/how-ibm-wat...
For Watson to be able to convert code, it's going to have to be able to determine the intention of each block of code, and know how to translate those intention into the new code.
You will, of course, end up with "You can write Fortran in any language" output, but if they do manage to succeed, then this will be the first time in my career that I've ever been remotely worried about the prospect of computers taking over the job of programming.
In all likelihood however, it'll turn the process of creating software into a conversation, not unlike the negotiations between a builder, the customer, and the architect.
Honestly though, if we'd have ever cracked the modularity problem, we'd just be loading this old code as opaque blobs, possibly through a cross-compiler. But we never succeeded, and over a time span of decades, lots of coding conventions start to resemble premature optimization, making it painful for modern eyes to look at this old code.
In fact the latter may be the stumbling block for automated translation. If the old code wasn't so 'quirky' (read: byzantine as hell) we would have ported it already.
I've done many translations of large programs from one language to another. This includes two large assembler programs that I didn't write into nice, clean C. I don't see any way a machine could determine what effects were important and what weren't.
I don’t think I would ever hire IBM consulting to convert my COBOL to Java, so not sure Watson could do it any better than IBM professional services.
Has Watson ever done anything? Is it used anywhere? I don't want a PR puff piece. Don't want theories. Don't want, I used it for a week. I don;t want to know what you claim it can do.
I want an article or youtube from an independent person who's used it in the field for a year and confirms it works at all.
How about we start there.
And FYI Watson cheated at Jeopardy. It couldn't even do that properly.
https://spectrum.ieee.org/biomedical/diagnostics/how-ibm-wat...
I'm curious to what degree their solution will end up being isomorphic (in the graph theory sense) to that sort of exercise.
[1] https://github.com/github/semantic/issues/452
You might also have implicit dependencies in the legacy code on the schema of some external database, all of which would need to be taken into account when migrating.
Also, tests might be missing, so how do you even know that your migration was successful?
Also, lost in the conversation is the other language that keeps showing up: RPG. It was and is used in at least the AS/400 - iSeries arena.
Lastly, I would imagine translated code would actually fit into something like orchestrations in BizTalk or related tool. I get the feeling if you did an actual analysis, some form of workflow language would be developed and be a better fit.