Drop everything and learn Haskell ! (if you can).
I'm struggling to justify the time for it so if you have some energy and enthusiasm use them for your own sake. You will step into a world of new and strange concepts and you will come out as a better woman/man afterwards. Of course, you may take it slow but don't give up this purpose you've set for you.
While a programming language is just a tool, you will hopefully see that being familiar with more such tools will make you a much more capable programmer anyway. And you will know to explain better why you prefer c# over java
. Being a proficient java programmer and having never used c# i can already agree with you that c# is significantly nicer
what you define of Haskell is what got me so interested in it in the first place.
I always wanted to be a programmer although life takes you to different paths and perfect plans never work, so no matter how perfect your plan and your path are, a perfect plan makes no sense, life is going to put bumps in the road.
To put everything in context... I am a very newbie to be programmer, with literally 3 months of "experience" while coping with real life and other subjects of my studies. My ideal was always to become a John Carmack or
@sebbbi of the world, and I am not bad at maths though I am not a word person.
So, from my little experience being an autodidact at home -learning Java where I study- secretly learning C#....They are both OOP, and quite similar to C++ in some ways.
You must take into account that I am just getting into methods and some recursion for now, so there is a lot of stuff to learn.
Why I think C# is better?:
- Named parameters (that's a very nice feature) to keep track of the parameters you use in a method
- I hate the Scanner function in Java, it's so stupid and a two step pass that confuses me. I just prefer the Console.ReadLine(); feature --> Done.
- Linq (just starting to scratch it, but make your code more concise), Lambdas (starting to scratch it as well)
- Visual Studio and Xamarin Studio (for Mac, Windows or Linux) and SharpDevelop are IDEs that I favour over my default Java IDE (NetBeans and Eclipse).
- C# still uses primitive things like Goto , which is the outcast son of programming, but it is nice to have.
- There is an /unsafe tag in C# where you can write code into "unsafe" memory areas, pretty much like C, C++.
- Unity uses C# as a built-in language. And I want to create games some day.
- More variables. It has var (lets the compiler to find out the actual kind of variable you are trying to use), like u-something....
Both languages are multiplatform now --C# with Xamarin Studio. I mean, some C# games are in Mac, Windows, Linux, Xbox, PlayStation 4, WiiU, and Android, iOS phones.
If you have been using Java for a long while, learning C# might be a breeze for you, trust me on this one.
If you want to learn more about C# and the main differences, aside from the books I recommended, there is also another great book,
"C# 6.0 in a nutshell", if other books like
Essential C# 6.0 is too technical, or
Begin to Code with C# is too high level for an experienced programmer which enjoys the lowest level "normal" native functions of a language and not premade stuff that eases learning from a newbie point of view --though this one book is excellent to learn some basic things a programmer should know and should
never forget, plus the explanations of the exercises are top notch.