Search code examples
c#.netlanguage-comparisons

Moving a C# Program to a different language


I am currently in charge of the development of the second version of program that was created in Microsoft .NET C#. I'm not doing any actual programming, but I am writing the specification for the programmer. I'd like to take it off the .NET codebase, but since Joel said on his blog never to rewrite code, and he does provide good reasoning, I'm inclined to think carefully.

So my question is,

(1) Are there any easy ways to transition? (Languages like .NET C#)
(2) Would you take it off .NET?
(3) If so, what language would you use?

The reason I want to take it off of .NET is as far as my understanding of .NET, it has to be installed on the client. I'd prefer not to inconvenience my customers when there's a better way.


Solution

  • Unless you are moving away from C# as part of some sort of enterprise-wide shift from C# to another language, or unless there is some sort of valid technical requirement that C#/.NET can't satisfy, I would not move from the existing code base.

    You state your reason as that the client needs .NET. Is your program client/server, or is it a web application? If it's web based, then you are incorrect, the client does not need .NET, only a browser.

    If the program is client/server and is already written in C#, then any language you move to is also likely to require some form of runtime installation. .NET comes with every new install and service pack of Windows from XP on.

    Unless of course you're trying to target OSX and Linux users, in which case I would consider a serious examination into the value of those markets before you make any decisions to abandon your codebase. Java might help you better there -- but you can do a hell of a lot with the Mono platform, so you might be able to save your C# code even if you target those platforms.

    Edit:

    waiwai933 wrote:

    I'm aware that I shouldn't make the decision, but it wasn't my decision to make about who would make the decision. By "easy language", I meant a language extremely similar to C#, so that the transition would be easier.

    Unfortunately, you are out of luck. The closest language to C# is Java, but the differences between the two are significant enough that you'll need to do a complete rewrite; a port simply will not work. It's highly unlikely that the C# code you have does not use delegates and events -- they're omnipresent -- and there is no similar construct in Java. The WinForms GUI framework (I'm guessing WinForms) is so different from Swing that none of the constructs will easily port; and it's littered with events and delegates.

    You are looking at at least as much effort to switch platforms as there was for the initial effort, possibly more. Plus going to Java violates the reason you want to switch from C#: Java requires a runtime installed on the client.

    As I mentioned before, look long and hard at the real benefits you might get from switching platforms before you make this decision.