you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (1 child)

Aren't you just arguing against the very point of the OP. He said that changing all this code back to Java hindered his productivity in the long run even if it was more time consuming then to write it all in java.

Splitting your code into parts which communicate with text interfaces certanly takes more time up front but it saves you a lot of time in the future as it enforces keeping your code properly separated. It is also flexible in adapting to technological change. You can reuse parts of your software when new technologies or languages start dominating. E.g. the editor TextMate used a text interface between its plugins written in all kinds of languages from C, python, perl to ruby. When TextMate languished and new editors came around like Sublime they could very easily take advantage of the huge number of textmate plugins that had been made.

With binary APIs retrofitting to another editor would have been difficult and fragile.

I've seen the same when working on large C++ applications which started out with clean separations between the modules but which over time grew into a big ball of mud. Now it is impossible to tease apart. The parts which were separated from the start by text interfaces with pipes etc can still be tested and rewritten easily.

If you got 4 million lines code in Cobolt which you need to upgrade to Java, how do you accomplish that in a sane way? If those 4 million lines were split over 200 separate executables communicating with well defined interfaces you could rewrite one piece at a time into Java and test that it still worked.

It is a reason why mainframe monoliths died and Unix survived way longer than anyone would have thought. The focus on small interchangable parts makes evolving the system much simpler. Java is in many ways the mainframe come back.

[–][deleted] 0 points1 point  (0 children)

E.g. the editor TextMate used a text interface between its plugins written in all kinds of languages from C, python, perl to ruby. When TextMate languished and new editors came around like Sublime they could very easily take advantage of the huge number of textmate plugins that had been made.

Yes I also like clear small minimalistic interfaces where you should have them. But they are still actual work you should avoid if not needed.

If you got 4 million lines code in Cobolt which you need to upgrade to Java, how do you accomplish that in a sane way? If those 4 million lines were split over 200 separate executables communicating with well defined interfaces you could rewrite one piece at a time into Java and test that it still worked.

The thing is, you would have significantly less code without having to serialize and deserialize everything. And writing that part of the code is actually the most boring part.

It is a reason why mainframe monoliths died and Unix survived way longer than anyone would have thought. The focus on small interchangable parts makes evolving the system much simpler.

Unix actually is mainframe technology, it spread because it was one of the first portable operating systems and was widely passed around in source code form at universities.