Deciding on My Next Language to Learn (C#, C++, Recommendations)

  • (2 Pages)
  • +
  • 1
  • 2

21 Replies - 2242 Views - Last Post: 07 December 2011 - 03:05 PM Rate Topic: -----

#1 Jordan94jb   User is offline

  • New D.I.C Head

Reputation: 6
  • View blog
  • Posts: 22
  • Joined: 03-December 11

Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 03 December 2011 - 06:14 PM

Hi

I'm currently learning Visual Basic.Net in ICT as well as teaching myself out of Sixth Form. I'll finish this project on the 16th December and want to move onto another language. Preferably one that would be best suited to games programming but also with compatibility to make desktop applications.

I've been looking around the internet at different languages and I'm still not sure which would be the best language to move onto next.

Any help or advice is appreciated,
Jordan.

Is This A Good Question/Topic? 0
  • +

Replies To: Deciding on My Next Language to Learn (C#, C++, Recommendations)

#2 Oler1s   User is offline

  • D.I.C Lover
  • member icon

Reputation: 1397
  • View blog
  • Posts: 3,884
  • Joined: 04-June 09

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 03 December 2011 - 06:19 PM

Because based on your requirements, you haven't filtered down any languages. You might as well say, "What is the best car that can go from point a to point b, oh, and it can move faster than someone walks?" . That's not a specific requirement.

If you can't specify, then either find other criteria to evaluate programming languages, or just pick one...
Was This Post Helpful? 0
  • +
  • -

#3 Jordan94jb   User is offline

  • New D.I.C Head

Reputation: 6
  • View blog
  • Posts: 22
  • Joined: 03-December 11

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 03 December 2011 - 06:27 PM

View PostOler1s, on 03 December 2011 - 06:19 PM, said:

Because based on your requirements, you haven't filtered down any languages. You might as well say, "What is the best car that can go from point a to point b, oh, and it can move faster than someone walks?" . That's not a specific requirement.

If you can't specify, then either find other criteria to evaluate programming languages, or just pick one...

*Points Up*

I've taken my choice down to either C# or C++, but I'm also open to recommendations if someone feels that I might be more suited to another language.

And instead of condescending to someone you could simply talk to them like a human and ask them a question, or suggest something, or even a mix of the two.

""What is the best car that can go from point a to point b, oh, and it can move faster than someone walks?"" - What speed would like to go at, would you like it to look nice, of road?

If I'm posting in the 'Games Programming' area of the forum, and mention I want to move onto Games Development in the future surely that means I'm asking, "Which language is best suited to Games Development"; I've been reading over the internet over the past few weeks, well months on and off and the same two languages keep coming up, C# and C++. Which is why I felt that I'd make a post here asking for peoples suggestions or sharing experiences to help my decision.
Was This Post Helpful? 0
  • +
  • -

#4 aaron1178   User is offline

  • Dovakiin, Dragonborn
  • member icon

Reputation: 170
  • View blog
  • Posts: 1,310
  • Joined: 22-October 08

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 03 December 2011 - 07:08 PM

There isn't a best suited language for games. Games come in many shapes and sizes, including language choice.

You can make web games, desktop games, flash games ect. The industry standard is C++, but it is not an easy language to learn. C# is a good and easy to use language. Many languages are capable of making games... But in the end it comes down to choice.

I suggest C# for new comers to programming or C++ if you have a firm grasp. But be aware, that you must fully understand the language in order to make games.

Hope it helps,
Was This Post Helpful? 0
  • +
  • -

#5 Oler1s   User is offline

  • D.I.C Lover
  • member icon

Reputation: 1397
  • View blog
  • Posts: 3,884
  • Joined: 04-June 09

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 03 December 2011 - 07:47 PM

Quote

I've taken my choice down to either C# or C++
Based on what criteria?

Quote

And instead of condescending to someone you could simply talk to them like a human and ask them a question, or suggest something, or even a mix of the two.
I did suggest something. I said you need to specify criteria to evaluate programming languages. When you say "best", you ask for an ordering of languages. So how would you compare two languages? What criteria are you comparing them with?

This is not something we can do. This is something you have to do. You have various business and technical constraints you need to fulfill. What are they?

You asked the question here because you want a technical answer, yes? I'm not being condescending. I'm responding from a technical point of view.
Was This Post Helpful? 0
  • +
  • -

#6 anonymous26   User is offline

  • D.I.C Lover

Reputation: 2
  • View blog
  • Posts: 3,638
  • Joined: 26-November 10

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 03 December 2011 - 08:07 PM

The very first questions that should have been answered before deciding on a language for programming games are:

1. Platform on which the game will run?
2. Tools to support game programming on a particular language and platform?

It might also be worth your while to consider if programming games will be you hobby or career.

Answer these then we can direct you better.
Was This Post Helpful? 0
  • +
  • -

#7 TheCompBoy   User is offline

  • D.I.C Regular

Reputation: 11
  • View blog
  • Posts: 314
  • Joined: 21-April 11

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 04:05 AM

My advice would go C# XNA its great to make games with!

And if you dont have much experience then its also good. Else if ur going the hard way pick C++
Was This Post Helpful? 0
  • +
  • -

#8 SixOfEleven   User is offline

  • Planeswalker
  • member icon

Reputation: 1055
  • View blog
  • Posts: 6,643
  • Joined: 18-October 08

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 06:26 AM

As mentioned it depends on if you want to make games as a hobby or eventually as a profession. If you want to make games as a profession then you might as well start with C++ as that will more than likely be what you will find in the work place. If you want to make games as a hobby C++ would still be a good choice, sticking with VB.NET would also be a good choice. Why stick with VB.NET? Because with the release of XNA 4.0 Refresh you can create games with XNA and VB.NET. You will need either Visual Studio or Visual Studio 2010 Express for Windows Phone. Even though it says for Windows Phone you call also create games for Windows and the Xbox 360. Since you're already familiar with VB.NET there will be less to learn to start with game programming.
Was This Post Helpful? 0
  • +
  • -

#9 Jordan94jb   User is offline

  • New D.I.C Head

Reputation: 6
  • View blog
  • Posts: 22
  • Joined: 03-December 11

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 09:33 AM

View Postaaron1178, on 03 December 2011 - 07:08 PM, said:

There isn't a best suited language for games. Games come in many shapes and sizes, including language choice.You can make web games, desktop games, flash games ect. The industry standard is C++, but it is not an easy language to learn. C# is a good and easy to use language. Many languages are capable of making games... But in the end it comes down to choice.I suggest C# for new comers to programming or C++ if you have a firm grasp. But be aware, that you must fully understand the language in order to make games.Hope it helps,

Thanks, yeah I'm not looking for an easy ride into it, I'm looking for the best language tom move onto, C# seems desirable due to it's simplicity but from looking around bigger companies are looking for C++ developers.

View PostButchDean, on 03 December 2011 - 08:07 PM, said:

The very first questions that should have been answered before deciding on a language for programming games are:1. Platform on which the game will run?2. Tools to support game programming on a particular language and platform?It might also be worth your while to consider if programming games will be you hobby or career.Answer these then we can direct you better.

Platform for me doesn't matter, as long as I can produce games, I'd be happy with starting out just producing computer based games as for tools I haven't looked into the tools to use yet.

And programming in general is already a hobby and hopefully a career, one that will develop into a games programming career.

View PostTheCompBoy, on 06 December 2011 - 04:05 AM, said:

My advice would go C# XNA its great to make games with!And if you dont have much experience then its also good. Else if ur going the hard way pick C++

Yeah, I've been hearing good things about producing games in it but I've been told that it isn't looking to be a very good language for other areas.

View PostSixOfEleven, on 06 December 2011 - 06:26 AM, said:

As mentioned it depends on if you want to make games as a hobby or eventually as a profession. If you want to make games as a profession then you might as well start with C++ as that will more than likely be what you will find in the work place. If you want to make games as a hobby C++ would still be a good choice, sticking with VB.NET would also be a good choice. Why stick with VB.NET? Because with the release of XNA 4.0 Refresh you can create games with XNA and VB.NET. You will need either Visual Studio or Visual Studio 2010 Express for Windows Phone. Even though it says for Windows Phone you call also create games for Windows and the Xbox 360. Since you're already familiar with VB.NET there will be less to learn to start with game programming.


Thanks, yeah, like I've said above it's already a hobby to program and will hopefully be a career, my post desirable career would be games programming though. I've been recommended recently to look into C++ if I'm planning a career in programming.

The improvements in VB.Net sound interesting but of course I wouldn't want to just ditch off the language, if I need to make a quick GUI program then I'd likely use VB.Net and I would like to have a diverse range of languages as well.

Thanks for all of your helps guys, very helpful!
Was This Post Helpful? 0
  • +
  • -

#10 Serapth   User is offline

  • D.I.C Head

Reputation: 53
  • View blog
  • Posts: 153
  • Joined: 17-August 11

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 03:17 PM

Frankly I don't really understand the point of VB.net. Frankly its just C# in a fat suit. VB basically ceased to exist with the move to .NET. Now its basically a C# dialect with VBish syntactical sugar. It mostly exists as a language to migrate VB developers more comfortably over to C#... I actually got that from the lips of an Microsoft language tools developer at a TechEd conference one year! If you aren't already vested in VB ( pre .NET ), there are little to no reasons to choose it as a language.


If you want to have a job in the industry, in the end, C++ is the language you will want to know, but it surely isn't the language you want to learn on. If you haven't gotten to at least an intermediate level with VB.NET, I would learn a slightly more... forgiving... language than C++.


I know this sounds strange, but if you don't have enough programming experience, you would probably learn C++ faster by learning C#! That is because there are certain langauge concepts that are pretty much universal, and all languages are not created equal when it comes to learning those concepts. Simply put, in this regard, C++ is lousy, with its stupid build system, horrific error messages ( especially templates, which are very important to the language ), convoluted rule set ( it is a complicated language and that is no compliment! ), its laughably awful standard libraries and various other things that make C++ not to friendly to new developers ( and veterans alike ).

So instead of learning programming concepts, you are going to be smashing your head off the wall learning how the damned linker works, or deciphering cryptic and misleading C++ error messages. Once you have programming experience, these challenges are... well, a lot less challenging.


I used this example the last time I encountered it.


Don't get me wrong, this kind of stuff a veteran C++ developer will literally spot in seconds, but to someone just learning, its a complete @#$@$ing train wreck. In the end, it comes down to a simple missing ";" at the end of a class definition, something everyone does a few thousand times in their career.

That this is an error isn't so much a big deal ( although, C++ is one of the few languages with the (needless?) separation of definition and declaration anymore, so it simply wouldn't occur in other languages ), what is a big deal is the error it gives:

error C2533: 'SFMLSoundProvider::{ctor}' : constructors not allowed a return type



This kind of stuff happens all the time in C++, and it is stuff like this that make learning to programmer harder than it should be. When you factor fighting with an unfriendly language with the fact you are learning to program at the same time ( and frankly don't have a ton of confidence in your code ), these kind of problems lead to hours or days lost!


When people talk about C++ being hard then cite memory management and pointers as the difficult aspects I have to laugh a bit inside. These are actually a few of the **best defined** and straight forward areas of C++ to learn. You should be able to get the basics of pointers down in an afternoon, once you have that initial AHAH moment about why they exist in the first place.

No, its not pointers and memory management that make C++ hard, its crap like the above. Or, I could start pasting a few template error messages in here... :)

This post has been edited by Serapth: 06 December 2011 - 03:32 PM

Was This Post Helpful? 0
  • +
  • -

#11 Jordan94jb   User is offline

  • New D.I.C Head

Reputation: 6
  • View blog
  • Posts: 22
  • Joined: 03-December 11

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 03:21 PM

View PostSerapth, on 06 December 2011 - 03:17 PM, said:

Frankly I don't really understand the point of VB.net. Frankly its just C# in a fat suit. VB basically ceased to exist with the move to .NET. Now its basically a C# dialect with VBish syntactical sugar.


If you want to have a job in the industry, in the end, C++ is the language you will want to know, but it surely isn't the language you want to learn on. If you haven't gotten to at least an intermediate level with VB.NET, I would learn a slightly more... forgiving... language than C++.


I know this sounds strange, but if you don't have enough programming experience, you would probably learn C++ faster by learning C#!

Yeah, I'd say I have a good grasp on programming, I think I'll look into C++ and if I feel it's above me then I'll start to learn C# and move on later.

I have heard that before that people who've learnt C# seem to pick up C++ faster, are the languages similar? I've heard that they are, just they have a few varying features.
Was This Post Helpful? 0
  • +
  • -

#12 SixOfEleven   User is offline

  • Planeswalker
  • member icon

Reputation: 1055
  • View blog
  • Posts: 6,643
  • Joined: 18-October 08

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 03:42 PM

C#, C++, and Java are all C-style languages, descendents of plain C. That is they all share the same style of syntax as C does. Learning any C-style language makes learning the others easier because of the common syntax that they share. Because C# is a higher level language than C++ it is often easier to learn because is shields you from many of the things you have to do manually with C++, like working with pointers and memory management.
Was This Post Helpful? 0
  • +
  • -

#13 Serapth   User is offline

  • D.I.C Head

Reputation: 53
  • View blog
  • Posts: 153
  • Joined: 17-August 11

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 03:55 PM

View PostSixOfEleven, on 06 December 2011 - 03:42 PM, said:

C#, C++, and Java are all C-style languages, descendents of plain C. That is they all share the same style of syntax as C does. Learning any C-style language makes learning the others easier because of the common syntax that they share. Because C# is a higher level language than C++ it is often easier to learn because is shields you from many of the things you have to do manually with C++, like working with pointers and memory management.



This.

More so, C# was designed with the hindsight of what sucked about C++. Thats the advantage of coming later, you can learn from other mistakes. As a design principal, they basically take a 99% approach, in that if a feature was abused or bad 99% of the time, they got rid of it.

As a result, they stripped out multiple inheritance, which makes the type system sooooooo much easier ( for both the developers, the tool providers and compiler makers ). Same with the use of header files, unmanaged memory, etc. As a result of many of these changes, the tools themselves are a ton easier to work with. You simply don't have to fight with the linker. You don't fight with the pre-processor, etc...

So basically they took what (they thought) were the worst features of C++ and removed them. Yes, you loose some choice, but often those choices were the equivalent of where would you like this bullet, to the head, or the genitals? Sometimes no choice is the much better option.

So one thing I don't want you taking away is that C# is somehow less powerful or a step down, it is simply streamlined. To say nothing of the new features it added, like dynamic, anonymous methods, lamdas, generics, etc... which C++ simply put are hacking in now. Working with the STL after years of using the .NET framework, and working with templates after getting used to generics, it feels painfully... um painful. This is one of the advantages of being a young language, you have less legacy cruft to carry around. Don't get me wrong, C# is starting to suffer this as well, with things like non-generic containers, because when the language came out, generics didn't exist. Since generics came out, there is absolutely no use for the non-generic variety and they just cause confusion. Thing is, C++ is much older ( and inside has inherited C's cruft ), so you have many worse cases of old and outdated ways of doing things supported to this day because backward compatibility demands it.


To make another thing very clear, C++ is not a bad language and I am not trying to discourage you from learning it. I am trying to discourage you from learning, now. :)

This post has been edited by Serapth: 06 December 2011 - 03:57 PM

Was This Post Helpful? 0
  • +
  • -

#14 Oler1s   User is offline

  • D.I.C Lover
  • member icon

Reputation: 1397
  • View blog
  • Posts: 3,884
  • Joined: 04-June 09

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 06 December 2011 - 07:19 PM

The hardest part about C++ is not the error messages. You can figure those out with some time. Painful, but you can do it. Here's hard:

What's the difference between:

T *t = new T;
T *t = new T();



I'm posing this question to you, but did you even know there is a difference? Would you realize the wrong version is used when reviewing code? No compile error. No information. Try looking this up in your book.

The problem with C, and C++, which is something not immediately apparent, is that it is possible to write bad code with little to prevent you from doing so. It's not the error messages that are frustrating. It's the lack of messages. Beginners are afraid of compile errors. Experts are afraid of not having compile errors.

Writing good C++ code means becoming pedantic, and that's a bad thing. C is not a simple language for developers. C++ just compounds the complexity so much more, and this difficulty inhibits learning.


I would also say that there's a notion that the end goal is C++. This is the worst thing you can take away from this discussion. C++ is just one more tool in your toolbox. Don't make C++ your end goal. Make becoming a good programmer your end goal. Mixing up a tool with the end result just prevents you from solving the problem effectively.
Was This Post Helpful? 1
  • +
  • -

#15 DivideByZero   User is offline

  • D.I.C Addict
  • member icon

Reputation: 240
  • View blog
  • Posts: 551
  • Joined: 02-December 10

Re: Deciding on My Next Language to Learn (C#, C++, Recommendations)

Posted 07 December 2011 - 09:07 AM

View PostOler1s, on 06 December 2011 - 07:19 PM, said:

What's the difference between:

T *t = new T;
T *t = new T();


Out of curiousity, what is the difference?
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2