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.
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.
https://spectrum.ieee.org/biomedical/diagnostics/how-ibm-wat...