Thursday, January 29, 2015

CSharp and .Net

I have decided to switch to C# and .Net.  There are quite a few reasons:
  • Cross-platform through Mono
  • Better language features like delegates, lambdas, extensions, linq, var, dynamic (although linq and dynamic are slow and will not be used)
  • Raw ValueTypes like uint, ulong, decimal
  • Roslyn open source compiler will allow community additions and language features far faster than any language out there which once stable I will definitely use
  • MonoGame cross-platform which is similar to the XNA framework which I used back when it first came out
  • Easy to transfer Java classes to C#
  • Visual Studio Ultimate is a godsend.
  • Task Parallel Library makes doing asynchronous programming easy
  • Exceptions from third party libraries are optional to catch, like null pointers when you already did a check for null before the method is called
 I was very stubborn about Java and chose it over C#.  This is mostly due to the speed of Java.  But by sacrificing time to adhere to optimization standards that have developed for C# you can achieve speed close to Java.  Java accomplishes those fast speeds through what is called [Hotspot](http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html).  If .Net were to make something like that it would be even better than Java with the above reasons.

Already have networking and graphics with some cool utilities like Memory watching, logging, asset management, text-to-speech, controller support, and much more built in to the framework.