Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Programming language advice

Junior Spellweaver
Joined
Jan 7, 2014
Messages
191
Reaction score
2
Hello!

So I've been learning C# for a while now, and have also coded several application in C#, like a server/chat application and other stuff thats not worth to mention. Anyways, I feel that I'm famillar with the language and I actually used to love C#, until a friend of mine told me that I should spend my time learning another programming language, and he suggested C, C++ or Java. And the reason behind this was that for some reason they're better and that .NET is not cross-platform.
After that I did some digging and found out that it's not true, I can develop C# applications with monodevelop, but I also found out that there is some disadvantages of using monoproject, like for example things might not always work the same way in monoproject as they do in .NET, and some other stuff.

So I'm wondering: Whats your guys opinion on this? If I develop an application in C# on windows and later on decide to continue it using monoproject, will the code need modifications or what? Will the applications I develop work perfectly without problems on other platforms than Windows? I don't really understand.
Should I spend my time learning another language like C++ or Java or just continue on C#?
Even if we put the monoproject issue aside, it seems like C++ and Java is used much more than C# too, so maybe its better if I spend my time learning C++ or Java?

Sorry if some of the questions might seem stupid, thanks in advance.
 
Custom Title Activated
Loyal Member
Joined
Mar 14, 2010
Messages
5,363
Reaction score
1,343
C# is not cross platform as a stand alone thing, yeah mono works just fine.

If you make a C# and intent to make it compatible with other platforms, you should use mono from the start.

Java will work on any platform that has java since it runs on the JVM.

C++ is very ideal to know when you're working for a company or yourself. It's almost always a requirement to know since it's widely used everywhere.

I started off with Java and after I got to know it pretty well I moved onto c#. C# and java are sort of similar syntax wise so it was easy to learn. C++ was my next step and it's way more difficult to learn and I've still got a long way to go.

Whether to learn java or c++ or keep c# depends on what type of thing you're going to dev. Want multi cross platform compatibiilty? Java can do that, c++ also and c# with mono.

I know it might seem like a lot or redundant, but you should learn at least all three. Don't have to be a pro, but at least knowledge in all is good and when you know that you can pick which language to use for which project you want. If you're making a big big application or even a game and think java won't be so ideal for performance issues or what not then ideally c++ would be your best option, but it's also the harder route. C# in that instance would be better.

tl;dr
Learn java and c++ so you'll know 3 languages. You'll need more than 1 language knowledge in programming if you want to survive and surpass your current skills.
 

Ben

Developer - JS
Developer
Joined
Jul 6, 2013
Messages
1,224
Reaction score
506
From a college sight, on here you learn Java, C# and then a bunch of Web languages.

As far as I agree with sunnyboy I would say start off with learning Java and then apply the things that you might have not been able to do yet/didn't know about in C# and see if you can improve ur C# skills on that part too.

I most likely mean:
-Threading
-Generics
-Lambda
-Method Reference
-GUI in java
 
Watching from above
Legend
Joined
Apr 9, 2004
Messages
3,828
Reaction score
752
C# is just fine. Performance wise you'll kill your applications with bad code 99% more likely than ever get to a point the language itself will be your problem. As for cross platform well who the duck makes desktop apps these days anyway?

You will never ever come to a situation where you'll have to look at a problem or an idea or yours and think "awwww poop I wish I knew Java instead of C# so I could work on this". If you're good with C# you'll pick it up when you need it.

Then for the point of variety. Learning all three aforementioned languages on the basis of having wide experience is like living in Finland, then visiting Sweden and Norway next to it and thinking with 3 different places you've seen what it's like all around the world. Obviously if you want variety, go further. Investing some time into a nice scripting language like Python or Ruby for example is always time well spent.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
I learned c++ recently by coding a game and some other smaller projects in it. I can really recommend learning it, if I look back now I see no more reason to use Java or c# for a project ever again. But take my opinion with a grain of salt, I've come to love c++ so my opinion is rather biased.
 
Elite Diviner
Joined
Feb 18, 2014
Messages
440
Reaction score
232
Hello!

So I've been learning C# for a while now, and have also coded several application in C#, like a server/chat application and other stuff thats not worth to mention. Anyways, I feel that I'm famillar with the language and I actually used to love C#, until a friend of mine told me that I should spend my time learning another programming language, and he suggested C, C++ or Java. And the reason behind this was that for some reason they're better and that .NET is not cross-platform.
After that I did some digging and found out that it's not true, I can develop C# applications with monodevelop, but I also found out that there is some disadvantages of using monoproject, like for example things might not always work the same way in monoproject as they do in .NET, and some other stuff.

So I'm wondering: Whats your guys opinion on this? If I develop an application in C# on windows and later on decide to continue it using monoproject, will the code need modifications or what? Will the applications I develop work perfectly without problems on other platforms than Windows? I don't really understand.
Should I spend my time learning another language like C++ or Java or just continue on C#?
Even if we put the monoproject issue aside, it seems like C++ and Java is used much more than C# too, so maybe its better if I spend my time learning C++ or Java?

Sorry if some of the questions might seem stupid, thanks in advance.

Yes, i think you should learn C++, as it's an essential coding language for most programs, plus it definitely expands your knowledge on programming languages.

Although it takes years to master C++, it's still a fun language to experiment on. How i learn is by looking at other C++ code, and modify it/add to it.
 
Libre Software Dev
Developer
Joined
Sep 25, 2012
Messages
676
Reaction score
434
@SubDababa So my recommendation doesn't differ much from the others in the end, you should learn them all. My reason though is different.

I've run into many cases where I find a program/library/function that does what I want but isn't written in my preferred language(s). Now if you don't know the other language, how the hell are you going to port it to the one you want to use?

In those cases, just using the language you prefer just does not suffice. This will happen way more often then you'd like. That's why you should learn all of them and other types as well (like the scripting languages Negata mentioned).

Oh as for monodevelop project configs, those issues only arise when you use a .net framework higher than 2.0 but yes that is troublesome but when that happens, make sure the people you are working with monodevelop as well then it will become a non-issue.
 
Joined
Aug 15, 2006
Messages
944
Reaction score
53
C# is actually going crossplatform right now with .NET Core. And with mono it's crossplatform too.
I would not advice switching. Certainly not if the other options are c++ and Java.
C++ is not a managed language, so you need to take a lot of things into consideration security-wise.
And let's be fair.. why would any c# developer ever want to switch to java? At this time, it's years behind c# in terms of language features (linq, dynamic, ..).
 
Joined
Jun 8, 2007
Messages
1,985
Reaction score
490
My advice, if you really like programming and are interested in learning more, is to learn the roots. Explore Lisp and C. This is for practice, of course. For professional purposes, do one thing and do it well. The one thing you're doing now is C#, and C# is a great modern language.

The majority of people here are saluting C++, but I'm going to be brutally honest: C++ is named after an operator that has no purpose, and causes more harm than good. Most people misuse the ++ operator, and anytime I see i++ in a program, I have to stop for a moment and wonder if the person who wrote that code meant to use ++i instead. If you're writing programs where a single byte of uncompiled code is more important than clarity, I don't want you on my team. The correct name for a programming language should be C += 1.

Enough with my rant about the name of C++, the language itself makes me weep for the poor souls forced to write programs in such an environment. Building off of what Negeta stated, you're much more likely to make inefficient programs due to human error or bad algorithms, as opposed to a slow programming language. And if you are the Yoda of programming C++: this is 2016, most of us aren't forced to program a fully featured game with only 16 bytes of breathing room.

Java and C# are very similar- as they both follow the C syntax, both do OOP and type safety well.. If enforced type declarations matter to you. I mean, you can learn whatever you want to in any order you wish- but I suggest getting a strong handle on C and Lisp- as those are the two low-level sides of the coin you get to work with in this world... From there, move onto more modern dialects like C# and Python.

Get good at Object Oriented and Functional Programming.. Learning several design patterns and reliable algorithms is worth much more than a bunch of silly syntax.. There are manuals on the internet for syntax, but good instincts and good design isn't something you can simply search for when you need it.
 
Last edited:
Back
Top