I worked there for about a week before I quit in frustration.
I worked there for about a week before I quit in frustration.
if condition
do x
else
do x
I worked on it for a month and it felt like years.It was the result of automatically porting a codebase written with a RAD system called Gupta Team Developer / SQLWindows[1]. The original language supported multiple inheritance and the converted code was a huge mess of tangled interfaces trying to reproduce that. The tool generated lots of duplicated code and some monster constructs like a static class with 140.000 lines of code, with all public methods.
I still weep for my colleagues who were left to tame that mess.
In the long run it would be cheaper rebuilding the entire thing.
We still rewrote the entire thing, line by line and then spent months refactoring it. It was our only choice really, so much of the original code was so unclear and all the original developers had left so it was our only hope of keeping the business logic intact.
For example, the company I work for has software developed in a legacy language with no support (Forte 4GL).
There are companies that offer Forte to Java migration, it would have been worth it because of better tools and support (even if the code was the same crap as usual :) ).
In two of the three cases I was converting between "the same language" but different incompatible versions of it and the original code bases had strict style guides. At the end of it everything worked brilliantly, and the code was just as maintainable as it was before the conversion.
In the third case was an full lexer/parser built out to compile VBScript down to JavaScript. The resulting code was not readable or maintainable but it did run and that satisfied the needs of the project.
In my experience is that language conversion projects are gnarly, and depend heavily on style guides and accurate specifications for the languages to produce good output. But these are not doomed enterprises from the start and in the end it's the quality of your convertering code that determines the success of the project.
One shot code generation is usually fine (make it, run it, throw it away).
Similarly, if the target language is never going to be read or edited by a human then you should avoid most issues.