Necessary to learn C#?

Joined
7/7/13
Messages
24
Points
113
Hi all,

a quick qestions -- I've heard that some financial model developers have started using C#.

Is it a trend for the next few years after C++?
is it a good idea of start learning/using it now?

Thanks for the inputs!
 
As we already know that C is one of the compulsory language for the programming and to do better about the programming you should be good in C language. If companies are now adopting this trend then you should make your own research regarding this is you may know better about what to do better.

certificate iv in training and assessment
 
Last edited:
Hi all,

a quick qestions -- I've heard that some financial model developers have started using C#.

Is it a trend for the next few years after C++?
is it a good idea of start learning/using it now?

Thanks for the inputs!

I think what you are hearing is a trend indeed. For my part, I use both C++ and C# and I see C# gaining in popularity.

With Andrea Germani I have written a book on C# for financial markets. Some info + blogs beow.

C# productivity levels are high in general.

http://www.wilmott.com/blogs/cuchulainn/index.cfm/BK

http://www.datasimfinancial.com/forum/viewtopic.php?t=104
 
C++ is not going anywhere (at least not for the next 10 years).

Relatively open standard (big advantage over C#/Microsoft and Java/Oracle)
Platform independent
Efficient
Flexible (supports many programming paradigms)
Great libraries
Corporations have existing large existing code bases in C++

If you are learning to program start with Python. C++ is a great language and pays my bills. But it's not a good first language.
 
C++ is not going anywhere (at least not for the next 10 years).

Relatively open standard (big advantage over C#/Microsoft and Java/Oracle)
Platform independent
Efficient
Flexible (supports many programming paradigms)
Great libraries
Corporations have existing large existing code bases in C++

If you are learning to program start with Python. C++ is a great language and pays my bills. But it's not a good first language.

I agree with you. But it is not a either/or discussion.

But C++ is not the only kid on the block. Other languages are more suitable for other problems, e.g.

GUI
Databases
..
 
I am a C# developers in electronic trading and have some knowledge regarding C++ as well. I can tell you the difference between both.

C#:
Speed: Not optimal. Slower than Java. Codes are compiled into intermediate language. CLR will translate them into machine instructions later. (similar to the way JVM takes byte code. but it is even slower)
Super easy syntax. Lambda expression. LINQ. Handle memory leak automatically.
UI: WPF(escape from the traditional windows and allow UI to be customized and nested)
Multi-threading and parrallel programming: very mature .Net library specialized for this kind of stuff. They even provide you a ThreadPool to schedule threads and enable parrallellism if you are running on a multi-core machine.

C++:
Fast. Codes are complied into machine code. That is something you cannot compete with using Java or C#.
Hardest syntax in high level language probably. You need to handle memory leak on your own.
UI: I have not tried but I assume it would not be easy
Multi-threading: Boost has a very mature library for multi threading. but it is not as easy as the one in C#.

I do not see it replacing C++. Well..someone can just load the C++ quant libraries in C# for some UI applications if required.

Hope it helps :)
 
Last edited:
I am a C# developers in electronic trading and have some knowledge regarding C++ as well. I can tell you the difference between both.

C#:
Speed: Not optimal. Slower than Java. Codes are compiled into intermediate language. CLR will translate them into machine instructions later. (similar to the way JVM takes byte code. but it is even slower)
Super easy syntax. Lambda expression. LINQ. Handle memory leak automatically.
UI: WPF(escape from the traditional windows and allow UI to be customizes and nested)
Multi-threading and parrallel programming: very mature .Net library specialized for this kind of stuff. They even provide you a ThreadPool to schedule threads and enable parrallellism if you are running on a multi-core machine.

C++:
Fast. Codes are complied into machine code. That is something you cannot compete with using Java or C#.
Hardest syntax in high level language probably. You need to handle memory leak on your own.
UI: I have not tried but I assume it would not be easy
Multi-threading: Boost has a very mature library for multi threading. but it is not as easy as the one in C#.

I do not see it replacing C++. Well..someone can just load the C++ quant libraries in C# for some UI applications if required.

Hope it helps :)

What are your views on programmer productivity C# vs C++? Time is money.
 
What are your views on programmer productivity C# vs C++? Time is money.
definitely C# in terms of productivity. Lots of existing examples over the internet. Array and linkedlist can be manipulated using LINQ....most importantly in C# errors can be easily traced and fixed. well in C++ sometimes I don't even know what's going wrong if the application use pointers extensively........
 
definitely C# in terms of productivity. Lots of existing examples over the internet. Array and linkedlist can be manipulated using LINQ....most importantly in C# errors can be easily traced and fixed. well in C++ sometimes I don't even know what's going wrong if the application use pointers extensively........
I have designed a 1-factor Monte Carlo engine in both C++ and C#

. C# productivity 4 times higher
. run-tim C++ 3 times faster
 
Don't bother. C# can be classed as a technology, since it is a Microsoft proprietary language. Concentrate on learning concepts, not technologies. If you want to be 10x more productive but sacrifice code speed, use Python instead.
 
C# can be classed as a technology, since it is a Microsoft proprietary language. Concentrate on learning concepts, not technologies. If you want to be 10x more productive but sacrifice code speed, use Python instead.

Have you empirical data to support this bold claim?

C# is language. .NET is a framework.
Many people use it, in some cases it is going to replace C++ (even now).

Don't forget: C# works great with Excel, SQL (!!), LINQ even C++.

IMO your employability(C#) >> employability(Python). That's a good tip if ever there was one :)

A issue with Python is its lack of compile type checking AFAIK that makes it unsuitable for critical applications. For prototyping it is probably fine.
 
Last edited:
I'm glad for your opinion about the employability of C# skills and python skills. I respectfully disagree, however.
You could perhaps try learning and using some python before you go around slating it all the time.
 
Is there a business case?
The way I see it breaking down, the startup world is dominated by FOSS languages, especially dynamic weakly typed ones like Python, Ruby, Javascript.

C# has the unique (dis)advantage of being the dominant Windows language. On the plus side, there are lots of people developing for Windows. On the downside, those are usually not the most exciting places to work, and also it's developing under Windows which is a pain in itself.

There is the Mono angle, but Mono is a separate project from .NET so it doesn't directly inherit the massive MSFT infrastructure supporting .NET. Also, it's quite telling that .NET has IronPython, and Java has Jython.

As a whole, Python is a simply far more portable skill. And more generally applicable. Would you write a C# program to match a regex on filenames and copy them from one directory to the next?

And it has massively extensive libraries. Numpy, scipy, gevent, Twisted, Django, SQLAlchemy. If your problem is common, it's been solved. And for quants, that includes optimized numerics (see Theano, Numba).

It's the Swiss Army Chainsaw of languages.
 
The way I see it breaking down, the startup world is dominated by FOSS languages, especially dynamic weakly typed ones like Python, Ruby, Javascript.

C# has the unique (dis)advantage of being the dominant Windows language. On the plus side, there are lots of people developing for Windows. On the downside, those are usually not the most exciting places to work, and also it's developing under Windows which is a pain in itself.

There is the Mono angle, but Mono is a separate project from .NET so it doesn't directly inherit the massive MSFT infrastructure supporting .NET. Also, it's quite telling that .NET has IronPython, and Java has Jython.

As a whole, Python is a simply far more portable skill. And more generally applicable. Would you write a C# program to match a regex on filenames and copy them from one directory to the next?

And it has massively extensive libraries. Numpy, scipy, gevent, Twisted, Django, SQLAlchemy. If your problem is common, it's been solved. And for quants, that includes optimized numerics (see Theano, Numba).

It's the Swiss Army Chainsaw of languages.

What apps is Python good for/not good for?
 
Back
Top Bottom