I was musing about to architect a system, using AlternateHardAndSoftLayers, and I quickly realized that I didn't know enough to do a big design up front. So it seems that I need to grow it organically, with unit tests, refactoring, etc.
So then I started asking myself a few more questions: Where should I start? should I set up just one xUnit testRunner, or one for each language? Assuming the former, which xUnit should I use for the base classes? (the system will probably be a mix of Perl, Java, C and C++ (plus a bit of Verilog to keep life interesting :).
Then there are the questions regarding the true practicality of refactoring between languages. How easy is it to extract a c++ method into Java? Or extract a Perl superclass from a C++ blob? (I assume you first extract the thing in its native language, and then perform a SubstituteLanguage? refactoring)
I am hoping that anyone with experience with MultiLanguageRefactoring might share their thoughts on this page.
--DaveWhipp.
In a way, I do a much smaller version of this with Web applications: code may be refactored across the boundary between client-side JavaScript and the server-side language. In general, I haven't found this to be a big deal as long as you have full-stack AcceptanceTests in place (CucumberFramework is great for this). In this case, it works pretty much like a single-language refactoring. --MarnenLaibowKoser, 2 Dec 2014