views:

169

answers:

2

Hi,

I am working in a company that develops computing kernels. Their design is simple : it's a library in c++ which only has one function available to compute results out of available data.

There are essentially four steps in every one of these kernels :

  • retrieve xml content (format has been defined in an XSD file) and store into objects

  • define a mathematical problem using the above objects

  • use a solver to find a solution (or the optimal solution)

  • export results into a new xml file

Currently, our resources are very much model-oriented in terms of capabilities and interests (and not so much into programming). Obviously we want to make the environment as friendly and efficient as possible. We are evaluating the use of c# using LinQ and Microsoft Solver Foundation as a replacement for c++ and home-made tools.

My questions are :

  • Can LinQ and Solver Foundation do all that ? How easy would it be to use ?

  • What would be the gains/losses of changing the environment for our resources (time to learn and rewrite, efficiency, etc.) ?

  • Are there other interesting options that i should consider ?

+1  A: 

I say that any C++ application developer should take a good look at C#. In my opinion, many of the problems that you solve in C++ can be solved much quicker in C#. It is not a hard language to learn coming from C++ at all. I would say, before you decide, check out C# for a week or so and see how much you like it.

Good luck :)

nlaq
+2  A: 

You would get huge benefits by switching to C#/LINQ in terms of working with the XML and even with a lot of the math. There would be a slight learning curve (so that's a con), but in just a couple of weeks, I'm sure you'll be laughing at how much easier coding C#3/LINQ is.

I say this from experience... and I specifically mentioned "C#3" (as opposed to just C#), because when I convinced my fellow C#2 colleagues to move to 3/LINQ, they experienced the above :)

Timothy Khouri
Could you be more specific ?What do they have to do in c++ that they could avoid doing by switching to C#3/Linq ?
Benoît