New N00b, (kinda, just read)

Started by
26 comments, last by mohaakilla51 16 years, 9 months ago
Original post by Gage64
Quote:
I disagree.


It's a free country, err, world. But you misread my statement. I wasn't talking about the errors generated, or the idiosyncrasies of a language. A for loop is a for loop, and a class is a class. The way you define and put together programs is largely the same in the sense that if you know one language, it's gonna be relatively easy to start working in most others.

Every language has its weird and obscure parts, and it could take a lifetime to learn them all. Question is how often you'll actually use them, and how long it takes to get used to them.

Original post by Gage64
Quote:
To be proficient in C++, you have to really take your time to learn the language. With C#, you can be productive much more quickly. That's why C# is a much better language for a beginner.


You could also reason that starting with something a bit harder will make you to learn much more, and faster in comparison. All the 'easymode' stuff in C# might just make someone a complacent and sloppy coder, as the compiler takes care of everything.
Advertisement
Quote:You could also reason that starting with something a bit harder will make you to learn much more, and faster in comparison. All the 'easymode' stuff in C# might just make someone a complacent and sloppy coder, as the compiler takes care of everything.


Learning the theory, data structures, algorithms, that kind of thing will make you better coder - the choice of language is secondary, and is quickly becoming tertiary, with the most important choice being management and design strategies.

Starting in assembly will not make you leet coder, starting in VB will not make you sloppy. Each will teach you habits. But understanding the theory and fundamentals is what will improve you. Languages are just syntax - it's not what makes the programs or algorithms.

On topic:
Learn the language you're comfortable with. C++ isn't popular, especially not as starting language. Java is a learning language. But since it's so reliable, it's also boring as hell.

Python and .Net (any language) are also good choices. So is any other "normal" language.

Industry (any industry) has demands. If C#+XNA is currently in, so be it - in two years, things will completely turn around. C++ will continue to be in demand, but that's not language. There's plenty of C++ developers, but getting to useful guru level where you can comfortably and consistently achieve results takes years. For CS people.

The only beneficial thing you can learn to further yourself is theory (CS, math, physics, even literature, philosophy, foreign languages, ...). Everything else is just syntax.

A huge downside to C++ as beginner language without supervision is that the internet is littered with garbage and literally criminal advices, even in plenty of respected sites. At least half of the tutorials are not even C++, they are C. Sometimes with classes. This makes C++ an extremely poor language for self-learning - you'll learn things incorrectly.

For what you want, games + DX, C# is the way to go. Quite safe, gives access to the DX API, fast compilation, plenty of documentation.

And as a plus, there's a C# workshop going on on this site right now.
Yay!!! Language flamewar!!!!!!

Anyway, I would also recommend python, not because it is that much easier to learn, but because you can focus more on making games. Even if you are talented at programming and can learn and use C++ easily, that just means that it will be even easier in python. C++ is good to learn at some point, but if you want to actually finish a game, python will help you a LOT more.

Also the Win32 API is ewwy. Really ewwy. I mean it, really, absolutely disgusting. It will ruin all your thoughts of having pretty, straightforward code. Pygame = winner.
I mean, why would you get your medical advice anywhere else?
If you call this a language flame war then you have never really seen one. :)

I am going to suggest C# and XNA. There are a few reasons for this. First it is just a darn good language and has very nice libraries for Windows or Game programing. Next it is closer to C and C++. If in the future you want to learn C++ you will already have a leg up on doing so because you will for the most part of the syntax down.

Next important thing to learn is that you can write good or bad code in any language. It is up to the developer to make sure that their code is nice code, not up to the tool you are using. I have been a developer for over 20 years now, and I have seen sloppy code in every language I have worked in. So don't blame the language.

Remember languages are just tools, they are not a way of life.
theTroll
Quote:Original post by Menno
Quote:Original post by Gage64
To be proficient in C++, you have to really take your time to learn the language. With C#, you can be productive much more quickly. That's why C# is a much better language for a beginner.

You could also reason that starting with something a bit harder will make you to learn much more, and faster in comparison. All the 'easymode' stuff in C# might just make someone a complacent and sloppy coder, as the compiler takes care of everything.

But that's just a bad way of doing things. Whenever you have to face a challenge, the best way to tackle with it is to make it simpler, not harder. When you start learning math (as a child), you begin by the addition, not Taylor series. Starting with the hard stuff just doesn't make much sense, not to mention that it will be more frustrating.

I don't agree that doing things in the simple way makes you a sloppy coder - from my experience, it's far easier to be a brain-dead C++ coder than a brain-dead C# coder. C++ don't even force you to use a particular paradigm - you can just do plain and horrible C, or even worse, C with classes.

C# has some nice properties, one of them is the style and the coding guidelines that are given by Microsoft and that are apparent in the whole .NET library. Since a beginner often imitate what he sees, it's going to be better for him to learn how to structure code by using C# instead of C++.

And I don't agree with you regarding this 'easymode' thing that would exist in C#. C# is not an easy language - the paradigms that are used are well beyond what one would call "easy". The thing is that it's easier to get things running, which doesn't mean that the language itself is easier or more lenient. The compiler is very precise when it describes an error (something that can't be bad - unless you want to be the only person on earth that understand the compiler messages), but it doesn't "take care of everything". You have to do your part of the job - and if you do it well, the compiler will tell you so.
Amazing how quick everybody is to bite my head off. Your comparsion is flawed. Comparing addition to taylor series is like comparing riding a bicycle to driving a bus. You should be comparing bicycles: multiplication isn't much more difficult than addition, it's mostly just different.

I still don't see what the fuss is. They're just tools, tools I say! ;) It's all just personal preference and whatever happens to be the trend. Difficulty is such an amazingly relative term after all. People need to stop acting like learning any particular programming language is such a huge ordeal.

As for making it more difficult being such a bad idea: sometimes throwing people in the deep is the best way to make them learn. It might not work for everybody, so I guess I'm just speaking from personal experience.
Quote:Original post by Menno
Amazing how quick everybody is to bite my head off. Your comparsion is flawed. Comparing addition to taylor series is like comparing riding a bicycle to driving a bus. You should be comparing bicycles: multiplication isn't much more difficult than addition, it's mostly just different.

I'm not biting your head off. And my comparison is not flawed: it's about starting the easy way vs. starting the hard way. Just like riding a bicycle vs driving a bus.

On a side note, multiplication is more difficult than addition. The different sets of rule that govern multiplication makes it something that children have some difficulty to understand. Addition can be easily understood by using objects around you: if I have two pen and if you have three pens, we have five pens. The abstraction behind multiplication can only be explained if the abstraction behind addition has been understood - Five people in a room, each of them have 4 oranges, so there are 20 oranges in the room, because that's 4+4+4+4+4. That's why children learn addition before multiplication - because it's simpler, and it can be seen as the root of multiplication.

Quote:Original post by Menno
I still don't see what the fuss is. They're just tools, tools I say! ;) It's all just personal preference and whatever happens to be the trend. Difficulty is such an amazingly relative term after all. People need to stop acting like learning any particular programming language is such a huge ordeal.

Difficulty might be relative, that doesn't mean that one should start to learn things that are relatively difficult.

Quote:Original post by Menno
As for making it more difficult being such a bad idea: sometimes throwing people in the deep is the best way to make them learn. It might not work for everybody, so I guess I'm just speaking from personal experience.

Well, all the education programs all over the world are based upon the idea of learning things one step at a time. You may have learnt C++ directly - without any prior programming knowledge. If it's the case, that's good for you. But most people will have a hard time going this way (I'm not saying that they won't be successful; I'm just saying that it's going to be hard), and if you consider that there are better, simpler ways, then one should first advertise them instead of directly jumping on the "learn C++, it's hard but you'll feel as a hero after that" mantra.

Best regards,
Throwing someone off into the deep end is also a good way to make the person drown. Repeated failure can cause a beginner to quit programming and never look back.

Also, to keep the analogy going, when you throw someone into the deep end, they won't learn proper swimming techniques. They'll find something that works, and eventually grow a habit out of it. Good coding design is not enforced in C++.

In truth, unless you are doing something really exotic, you can accomplish anything in C# that you could accomplish in C++, and in less time and with less frustration. C++ has its uses if you are working one-on-one with the system. But that's something a beginner should not be worried about.
.:<<-v0d[KA]->>:.
Wow, I can't believe I really asked that question... I knew what was coming, I was just really tired...

so:
C# != C

C# is easier to learn than C++ (and you don't have to declare variables? Because I have always hated that... :p)

People like to get into very intelligent sounding flame wars over which language to choose, and use very obscure analogies like bike riding and swimming...

It's sad, about a year ago I tried almost every language mentioned here (Perl, Python, C++, etc.) But I could never get the hang of it. I am back now because if I ever want to do anything besides web design, I have to start somewhere. :P.

So the (non)general consensus is NO C++? Just because it is more difficult and structured and because I am learning it on my own over the web? P.S: I am not worried about hours of banging my head on my desk trying to get my code to work. That is nothing new...
,
So, although you have told me not to, and have given your reasons in a clear manner and I understand your reasoning, I think I am gonna go and Give C++ a try again... Or C#... One of those 2... or maybe python... who knows... Eh.. I Will get back to you on the language of my choosing. Will probably go with C#, though, because I hear it is in demand at this point in time... (although I really have no chance of getting into the job market right now :P) But is there just a compiler for C#, because I really don't like the Visual C# Express Enviroment. I am more accustomed to coding in my old faithful notepad...(at least to start with, since I am gonna start with console programs first and then go on to the games, windows apps, etc.
Quote:Original post by mohaakilla51
C# is easier to learn than C++
I would agree with that statement.

Quote:(and you don't have to declare variables? Because I have always hated that... :p)
No, you do have to declare your variables before you use them. It's actually a good thing (insofar as it's an implementation of static typing) as it makes it easier to find bugs. If you don't like it my guess would be that you are lazy (and/or were spoiled by shoddy languages like PHP).

Quote:But is there just a compiler for C#, because I really don't like the Visual C# Express Enviroment. I am more accustomed to coding in my old faithful notepad...(at least to start with, since I am gonna start with console programs first and then go on to the games, windows apps, etc.
Sure, you can just run the compiler that comes with C# Express (csc.exe). A good developer embraces change and seeks to learn new technologies, though.

I'd recommend taking a look at the C# Workshop.

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

This topic is closed to new replies.

Advertisement