One question that I always face, “Java or C#? “ . Sometimes the language name changes but the choice remains. Since we were young, we were taught to always compare two or more things. As a result we can’t stop comparing 2 things. Firstly I’d say the question itself is stupid. So the answer is also a stupid one. In the end the answer of this particular question is but an opinion. Why are you trying to decide which language you should learn based on someone else’s opinion? If you are smart you will try to avoid answering to stupid question like those. Let’s modify the question a bit. Why Java? And Why C# ? Now that’s a question that is worth answering. Java has some feature that C# doesn’t have and C# has feature that Java don’t have.
If you are a windows fan boy. C# is what you should choose. Don’t even look at Java. C# actually has quite a few wonderful features that Java won’t provide. Properties. Java don’t have properties. You will love properties once you get fed up with Java’s redundant getter and setters. To be honest this is the only feature that is good enough for me to switch from Java to C#. Another good reason is Solution. I totally love how they manage projects with solution. In Java you have to do this with package. But C# made it beautiful by adding a visual root project that is called Solution. I don’t recall java having a package manager where as like most other popular languages C# has a built in package manager called nuget which you will come to love as a developer.
The biggest drawback of C# is , It’s actually built for windows application focused. So if you are planning to make a cross platform application you will be at potential risk. C# is a programming language true. But it’s dependent on .net technology for development. And that’s dependent on windows. There’s a Cross platform version of .net that is known as Mono but that’s left for another day. If you plan to deploy a cross platform application with C# you will find it a little bit difficult to do so directly. Even if you see that you can develop Android and iOS applications on Native C# you should not do that. Trust me.
Old tech. Rich libraries. Cross Platform. Same code will work on Linux , Windows and Mac. If you are planning to distribute your application on multiple platforms with lest amount of pain. This is a very suitable choice. I don’t recall any extra feature that Java offers but C# doesn’t other than this.
It’s Slow. SLOOOOOW. Everything good has it’s draw back. Also you won’t find it’s binary built in on windows or most other OS distributions. You will have to Ship the JRE with your application most of the time which kind of makes the product heavier and looks stupid.
A personal test info: I made a windows form it took 5 MB ram to run it. I made the same thing on Java. Which looked far more aesthetic and easier because there were libraries for new design. But it took 80MB ram to run the application. So if you are aiming for a memory efficient application .. Java won’t be a very good choice. But if you wish to have a good looking app that runs on Windows,MacOS and Linux … Then Java is a suitable choice given that memory is not an issue.
FAR Richer libraries than C# and Java. Cross Platform . FAST! It’s faster than both C# and Java and I mean like 3–4x Faster. No need to worry about that semicolon. No need to think about braces. Best for most cases. No need to declare data types. It’s Magical. Probably the best development option right now.
If you don’t maintain indent , this is not for you.If you love data types this is not for you. If you need braces like i do , This is not for you. Python isn’t your traditional programming language. It’s python.
If you wish to develop large scale web app this won’t be reliable. If you wish to develop desktop application you can use PyQt which has some licencing issues. If you want to publicly distribute your application you rather not use this.
Father of C# and Python. Faster than Python. Cross platform.
You will have to manage the memory.Developing applications are not as easy as other three above.This is for very hard core developers that want to have access to the memory. For example game developers loves C++ as they can talk directly with the machine with this. If you wish to develop desktop applications. You have a good looking library Qt. You can get a free version of it. But the Development process is tedious.
Father of every other language. Fastest High level language.
It’s stupid to develop applications with raw C. It’s also not Object Oriented.
Now it’s here’s the thing. All of these are used for developing applications of different tiers of developers. its for you to choose which language suites your need best. Don’t let someone else’s opinion influence you.