Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 264
waiwai933 Avatar asked Nov 27 '22 20:11

waiwai933


2 Answers

This is going to sound rude and I risk being downvoted, but forgive me, I'm going to be honest ... you are saying, "[you are] in charge of the development of the second version of program that was created in Microsoft .NET C# ... not doing any actual programming ... [would] like to take it off the .NET codebase". Are you hearing yourself? You clearly don't have any knowledge or experience to make that decision, further evidenced by questions 1 and 3. There are no "easy languages" - what does that even mean? Is a powerful language "easy"? Is a weak language "easy"? How could there be an easy transition to anything different? Even if you have something to automatically translate the code, differences in the runtimes and platforms and libraries make porting any non-trivial application far from easy. It takes work and knowledge. Perhaps easy for someone with a lot of time, but not for most people with deadlines and reality to face.

like image 99
Richard Anthony Freeman-Hein Avatar answered Jan 19 '23 00:01

Richard Anthony Freeman-Hein


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.

like image 25
Randolpho Avatar answered Jan 18 '23 23:01

Randolpho