Jump to content

  • Log In with Google      Sign In   
  • Create Account


Where to start to program a game


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
25 replies to this topic

#1 Lama43   Members   -  Reputation: 136

Like
0Likes
Like

Posted 19 May 2012 - 03:28 AM

Hello, first post here.
Let me introduce myself, I'm a 15 years old teen who lives in Italy and has the ambition to make a game.

Now, i know that i need to use a programming language, but I'm not sure at all which one. I've had some experience with Squirrel and Pawn mainly in scripting for SA-MP and IV-MP, from which i believe i learned a lot. I developed a few complex functions and also made a small programme that would tell me the number of multiplies needed to reach a certain number with exponential growth ran by the server, but that was pretty easy.

In any case, that was about 2 years ago but now I'd like to start programming again, I've already got a few ideas for games but I simply don't know where to start. My objective is a common 3D computer game, maybe with online support, but I understand that i need to have some experience in 2D game development first.

So, some bullet points to make answering to me easier:

-What language suits my needs best?
-What do I need to make the graphics part of the game?
-Is there any good tutorial that gives info on every step of game development?

I hope this is a friendly community, I'm just a wandering soul wishing to find my path :)

Sponsor:

#2 Sh@dowm@ncer   Members   -  Reputation: 122

Like
1Likes
Like

Posted 19 May 2012 - 05:08 AM

Since you did some programming already even if it was just some scripting. I recommend you skip things like game maker and rpgmaker or similar. I think you are ready to learn a language.

You have 2 choises:

-Game oriented language
-General purpose language

If you choose first you can easily dive in game development. They are usually easy to learn and to use. Also they have everything you need to make simple/comlex games. But they do lack in performance and some advanced tehniques such as good 3d graphics,portability,third party libraries,ussualy have poor multhithreading support or don't have it at all. All in all when you mature past good 2d games you will simply want to skip this one. It is the best for learning but sooner or later you will leave it behind.

If you choose a general purpose language it wont be so easy. Main reason is that you have to learn the language first before even attempting to make a game.Even WHEN you learn it you usually have to choose and learn a game library/engine to use in making your game. There is a lot of work to do just to get anything started. However when you DO learn all those things and learn it well. You will find yourself capable of using amazingly powerfull tools and you will have great freedom on what you can do with your game. They give the best control to you on what you want to make the downside is usually YOU have to make it.

The choise is yours. I will give you some examples of general purpose languages:

C - great starter. Everything you learn will be useful when advancing to the next step. (see below)

C++ - Industry standard and with good reason. Very powerful,fast,full of features. Amazingly well supported,BIG communities,Countless tutorials,books,A lot of third party useful libraries,etc.. Downside IT IS ARGUABLY THE HARDEST THING TO LEARN (to a professional level) but worth it.

C# - Great one. Somewhat easy to learn. Very nice standard library,Very nice modern features,reasonably fast well supported and somewhat elegant to some people.

Java - Also a great one. Very feature rich standard library. Easy to learn and use. Runs on a lot of hardware. Great for mobile development and/or web development. its on;y somewhat good for 3d though. A good example would be Minecraft (it was done in Java)


Python,Fortran,Delphi(free pascal),...

List goes on and on...

#3 Lama43   Members   -  Reputation: 136

Like
0Likes
Like

Posted 19 May 2012 - 06:38 AM

Since you did some programming already even if it was just some scripting. I recommend you skip things like game maker and rpgmaker or similar. I think you are ready to learn a language.

You have 2 choises:

-Game oriented language
-General purpose language

If you choose first you can easily dive in game development. They are usually easy to learn and to use. Also they have everything you need to make simple/comlex games. But they do lack in performance and some advanced tehniques such as good 3d graphics,portability,third party libraries,ussualy have poor multhithreading support or don't have it at all. All in all when you mature past good 2d games you will simply want to skip this one. It is the best for learning but sooner or later you will leave it behind.

If you choose a general purpose language it wont be so easy. Main reason is that you have to learn the language first before even attempting to make a game.Even WHEN you learn it you usually have to choose and learn a game library/engine to use in making your game. There is a lot of work to do just to get anything started. However when you DO learn all those things and learn it well. You will find yourself capable of using amazingly powerfull tools and you will have great freedom on what you can do with your game. They give the best control to you on what you want to make the downside is usually YOU have to make it.

The choise is yours. I will give you some examples of general purpose languages:

C - great starter. Everything you learn will be useful when advancing to the next step. (see below)

C++ - Industry standard and with good reason. Very powerful,fast,full of features. Amazingly well supported,BIG communities,Countless tutorials,books,A lot of third party useful libraries,etc.. Downside IT IS ARGUABLY THE HARDEST THING TO LEARN (to a professional level) but worth it.

C# - Great one. Somewhat easy to learn. Very nice standard library,Very nice modern features,reasonably fast well supported and somewhat elegant to some people.

Java - Also a great one. Very feature rich standard library. Easy to learn and use. Runs on a lot of hardware. Great for mobile development and/or web development. its on;y somewhat good for 3d though. A good example would be Minecraft (it was done in Java)


Python,Fortran,Delphi(free pascal),...

List goes on and on...


Thank you for your answer, I suppose i'll stick to C++. Is there any good guide for it that you recommend to me? Also, is there any uncompiled game code that allows me to analyze the structure, libraries and so on? I find that the best way to understand a language is to analyze, experiment with it, coupled with a good manual of course Posted Image

Edited by Lama43, 19 May 2012 - 06:38 AM.


#4 Rybo5001   Members   -  Reputation: 488

Like
0Likes
Like

Posted 19 May 2012 - 06:50 AM

I would highly recommend Mike Dawson's 'Beginning C++ through Game Programming'

#5 Serapth   Crossbones+   -  Reputation: 5181

Like
2Likes
Like

Posted 19 May 2012 - 06:51 AM

First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.


Second, C++ is a horrible first language, period. Don't believe me, read this scenario and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.


EDIT: Never actually answered the question:

-What language suits my needs best?

There are many languages that fit your needs, but a lot of it come down to personal tastes. For example, Python is a highly regarded started language and is a good recommendation, but I personally don't like it. That doesn't make it a bad fit for you, but it does for me. Generally the big 4 recommendations are Java, C#, Python and (ugh) C++. This guide goes into a heck of a lot more detail than I can here and was written to basically answer this question. Beyond that guides recommendations, JavaScript/HTML5, Flash and LUA are also quite common and appropriate to a beginner.



-What do I need to make the graphics part of the game?


A graphics library in most cases. Although Java and C# have graphics routines built in, they are horrifically slow. That guide link has recommended 2D graphic libraries for each language, but it all comes down to which language/platform you decide to go with.

-Is there any good tutorial that gives info on every step of game development?


Yes, tons, and loads of books too. Need to pick a language and platform first though.

Edited by Serapth, 19 May 2012 - 07:00 AM.


#6 Sh@dowm@ncer   Members   -  Reputation: 122

Like
0Likes
Like

Posted 19 May 2012 - 06:57 AM

Well all open source games put their entire code on the internet. So you can start there. Also while it is good to learn from web tutorials (there are a lot of good ones) there is nothing like a good book that you can put on your desk and read from while you learn. You can chose from basic C++ stuff books, to game design , graphics library books, game physics books,... Start small. Really small. Like a simple text console question game. Then move to 2d static graphics simple games,then 2d animated games,...3D can be hard really hard.

For C++ there are some nice libraries for games:

SDL - Simple elegant easy to learn has some books on it, a lot of tutorials , a lot of games use it,..
SFML - Simple well designed powerful easy to learn.
GLUT/OpenGL - Ranging from very simple to extremely comlex. Good start to 3d programming. Easier than DirectX and very cross platform. (Very good books/tutorials)
DirectX - Only for Xbox and windows. Great game library in general. Has all you need for sound,3d graphics,networking,... (Very good books/tutorials)

As for engines i can't really say. Since i usually only use libraries (write simple engines from scratch).

#7 Sh@dowm@ncer   Members   -  Reputation: 122

Like
0Likes
Like

Posted 19 May 2012 - 07:08 AM

First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.


Second, C++ is a horrible first language, period. Don't believe me, read this scenario and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.


I told him not to bother with a graphics library until he learns the language. And for that almost all IDE's that are out there thay are all set for the go to do such stuff. No linking problems, no library incompatibilities, no stupid stuff like that. By the time he learns the language. He should be reasnoably competent to understand what a library is ,what is a dll, what do the warnings mean. And most importantly he should know HOW to ask the right questions on the internet to solve his problems. There is nothing wrong with that. A person that doesn't know this basic stuff SHOULD not dive in to use third party libraries or yes i do agree hes in a world of pain. So yes C++ CAN be a begginers language. But C++ with a third party library is definetly not.

#8 Serapth   Crossbones+   -  Reputation: 5181

Like
0Likes
Like

Posted 19 May 2012 - 07:27 AM


First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++.


Second, C++ is a horrible first language, period. Don't believe me, read this scenario and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language.


I told him not to bother with a graphics library until he learns the language. And for that almost all IDE's that are out there thay are all set for the go to do such stuff. No linking problems, no library incompatibilities, no stupid stuff like that. By the time he learns the language. He should be reasnoably competent to understand what a library is ,what is a dll, what do the warnings mean. And most importantly he should know HOW to ask the right questions on the internet to solve his problems. There is nothing wrong with that. A person that doesn't know this basic stuff SHOULD not dive in to use third party libraries or yes i do agree hes in a world of pain. So yes C++ CAN be a begginers language. But C++ with a third party library is definetly not.


Did you read the scenario in the link I provided? It was using Visual Studio, which probably has the easiest to configure linking settings, and it still was a massive failure. An IDE does not shelter you from the linker, not in the slightest. In fact, it adds "Yet another thing you have to learn" to the long list of things you already need to learn.

Again, to your example of asking the right questions... the error in the scenario I provided was "Unhandled exception at 0xBlahblahblah in Pang.exe 0XC0000005: Access violation reading location 0xBlhabblahba". Good luck asking for help on that problem on the internet. At best someone *might* be able to tell you it's a linker problem, maybe. Especially when the IDE says "THIS IS THE LINE WHERE THE ERROR OCCURRED", which is exceedingly misleading. Simply put,this is one of those problems you would have to puzzle out on your own and I don't think a new developer has a hope in hell of figuring this out.

As to using C++ without libraries... good luck with that. The standard libraries are crap in their scope and probably the single biggest strength of C++ IS the third library support. You take that part out and frankly there are even less reasons to use C++.


Also, don't get me wrong, C++ *CAN* be a beginner language. It just can't ever be a good one.

#9 Sh@dowm@ncer   Members   -  Reputation: 122

Like
0Likes
Like

Posted 19 May 2012 - 07:47 AM

You know what i agree. I never started big either. I tried learning C++ and fell to just C. Then mastered it and suddenly C++ and Java was a breeze. Yes the standard library is really really bad. If anything you cant really make games with it. I tend to avoid it completely. I only use C library for File input/output and that's it.

But i do not understand why would you bash C. Yes it is outdated. Yes it is not really object oriented (C++ also isn't really). But it is very easy, very well supported,very useful and it makes learning C++,C#,Java much much easier later. Where almost everything that you learned will be used with almost the exact same synthax in these languages.
Functions become methods,Structures become Classes,Bit operators remain,...

The only problem i see is that some people get too much into C and start programming Java as they would C. They will make bad OO decisions and so forth. But most people that i know are very flexible and is easy to them to change the design of their code and approach to problems.

#10 Serapth   Crossbones+   -  Reputation: 5181

Like
1Likes
Like

Posted 19 May 2012 - 08:17 AM

But i do not understand why would you bash C.


I didn't bash C, I said it was a domain specific language and learning C to learn C++ was a waste of your time.

C for games is a pretty poor fit though for a number of reasons. The community is quite small now, and C as is represented in C++ is a 28 year old language. C has evolved massively since then, but the user base has dwindled. Many game libraries are moving to C++ only. As well, C++ came to be because of the inability ( arguable I know ) of C to scale to large projects; this fact hasn't changed.

As to the direct reasons why C is a fairly poor beginners language, again the standard libraries are downright anemic even compared to C++! Then we get into the matter of safety. I've not much followed the evolution of C as a language so I don't know if they've fixed the myriad of exploitable language features, but that was a major downside the last time I used C.

I agree that learning a language in advance of C++ will make the task easier, but there are better choices than C.

#11 Lama43   Members   -  Reputation: 136

Like
1Likes
Like

Posted 19 May 2012 - 09:19 AM

Hmm, i read that article and probably it's better if i learn C# instead. I've never particularly liked the way C++ is scripted either. From what i know C# is much more similar to Squirrel than C++ and also as i understand XNA is a great way of starting up. Thanks for the advices guys, now i know where to begin programming at least.

Edited by Lama43, 19 May 2012 - 09:20 AM.


#12 Goran Milovanovic   Members   -  Reputation: 1103

Like
0Likes
Like

Posted 19 May 2012 - 09:23 AM

-What language suits my needs best?


It's hard to say. I mean, you didn't really provide a set of needs.

You stated that you're a beginner, so you're probably looking for a modern language with a rich set of libraries, a relatively large community, and a wealth of instructional resources.

If that's the case, I think you should look into Python.

-What do I need to make the graphics part of the game?


You can create your assets with Blender.

-Is there any good tutorial that gives info on every step of game development?


Actually, there is: http://www.gamedev.n...er-game-engine/


My thoughts on C vs C++:

It's perfectly possible to make good games using either. There are valid arguments that could be made against C, but I think it's worth remembering that "OOP" is just a paradigm, which one could follow in any language.

+---------------------------------------------------------------------+

| Need a programmer?        ->   http://www.nilunder.com/protoblend   |

| Want to become one?       ->   http://www.nilunder.com/tutoring     |
| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#13 Rybo5001   Members   -  Reputation: 488

Like
0Likes
Like

Posted 25 May 2012 - 06:02 AM

learning C is not a great starter language


Totally disagree with this, C was my first language and learning the hard stuff first makes every language after that so much easier (especially since you understand what's going on beneath the syntax)

#14 Serapth   Crossbones+   -  Reputation: 5181

Like
1Likes
Like

Posted 25 May 2012 - 12:01 PM


learning C is not a great starter language


Totally disagree with this, C was my first language and learning the hard stuff first makes every language after that so much easier (especially since you understand what's going on beneath the syntax)



This is one of those baffling pieces of logic I see recurrent among ( pro and prospective ) game developers. Think about this for a moment, with every other topic you can imagine for which formal instruction exists... do you EVER start off hard to make the easier stuff later seem easier?

No, you don't. You start learning math by learning your numbers and sums and progress from there. You don't start with calculus! When learning to cook, you don't start with a souffle. If you pick up a chiltons manual to fix your car, does it start off with engineering an engine? Do interns start with open heart surgery? You don't learn English by reading great literary works, you start with the basics, like Mr Muggs goes to School and Red Shoe, Blue Shoe, Green Shoe, MooShoo.


This whole meme of starting with the hard stuff to make the easy stuff easier is so patently wrong in 99.999999% of endeavers, what exactly makes computer science so unique as to buck the trend.

Here's a hint. Nothing.

Starting hard is just a bad way to waste your time. Don't get me wrong, you can do it, it's just certainly not a productive way to go about things, as millennia of teaching experience has already taught us.

Now, you could argue if C is hard or not, but that's a completely different conversation.

#15 thugthrasher   Members   -  Reputation: 241

Like
0Likes
Like

Posted 25 May 2012 - 12:40 PM

This is one of those baffling pieces of logic I see recurrent among ( pro and prospective ) game developers. Think about this for a moment, with every other topic you can imagine for which formal instruction exists... do you EVER start off hard to make the easier stuff later seem easier?

No, you don't. You start learning math by learning your numbers and sums and progress from there. You don't start with calculus! When learning to cook, you don't start with a souffle. If you pick up a chiltons manual to fix your car, does it start off with engineering an engine? Do interns start with open heart surgery? You don't learn English by reading great literary works, you start with the basics, like Mr Muggs goes to School and Red Shoe, Blue Shoe, Green Shoe, MooShoo.


This whole meme of starting with the hard stuff to make the easy stuff easier is so patently wrong in 99.999999% of endeavers, what exactly makes computer science so unique as to buck the trend.

Here's a hint. Nothing.

Starting hard is just a bad way to waste your time. Don't get me wrong, you can do it, it's just certainly not a productive way to go about things, as millennia of teaching experience has already taught us.

Now, you could argue if C is hard or not, but that's a completely different conversation.


None of those analogies really work for coding, though. Nearly all of those things directly build on what you had to learn before. A programming analogy for the examples you gave would be learning multithreading before you learned loops.

No one is saying start by learning the hardest parts of C, but if, while you are learning the basics of programming, you are able to pick up on some of the things that make C/C++ harder to learn, then it is very useful. There are advantages to going both ways, but for many people, starting with the more complicated language is the easiest method. It was for me.

It takes a little longer to feel like you have good control over the language you start with, but it makes it easier to pick up other languages later (I've never met anyone who thought going from C++ to Java was harder than going from Java to C++). It's really a personal preference, which depends greatly on someone's learning style. Not everyone learns the same way.

#16 Serapth   Crossbones+   -  Reputation: 5181

Like
0Likes
Like

Posted 25 May 2012 - 01:11 PM

The examples are hyperbolic I agree to that, but the gestalt is exactly the same. I am speaking only to the line "learning the hard stuff first makes every language after that so much easier"
or your later comment of
"

starting with the more complicated language is the easiest method".




This is simply not true. It is all a matter of perception, and frankly self deception. There is nothing so specifically special about programming, compared to so many other skills you learn in life, although people really like to believe there is.

Here is the reality of it ( to use your example of ), going from C++ to Java *seems* easier, as you have already learned the majority of the difficult aspects in what is a traditionally more difficult language. That you had a hard time learning didn't magically make this process quicker, in fact quite the opposite. Again, I am not making the claim that C++ is harder than Java, that is subjective/personal and subject for a different thread that has been argued ad nauseum.

However, if your personal experiences are with X, which was a difficult subject to master, then you learn Y with much greater ease, you are going to conclude that you succeeded in learning Y faster because of the lack of difficulty you encountered while learning X. This is where the fallacy comes in. The first thing you learn, on almost any subject, is almost always going to be the most difficult part, while each successive topic is going to be progressively easier to learn, even if the domain itself is considered more difficult. This is why it takes months to years to master an initial programming langauge, while often takes weeks or even days to master a new language. Intentionally looking to start with the difficult bits is doing you no favor!


Again, I am not getting into the nitty gritty langauge debate over if C ( or C++, Java, or whatever else ) is or is not a hard language to learn with, that is not the crux of this argument. Learning in reverse order of (personal) difficultly, is an exceptionally bad way to go about learning, as is evidenced by the way pretty much ever single subject in every single topic is currently taught.


You are right, all people learn differently. This is why I am not getting into the whole conversation of if C is or isnt difficult to learn, I have my opinion on that topc, and a great deal of it is subjective. ( Ironically too, my stated objectopn to learning C first has nothing to do with difficulty, as is clear if you scroll up ). However, until you have learned a subject yourself you really can't make a judgement call on the difficulty of learning something, so we make societal judgements on relative difficulty. They may not apply to everyone, but they do apply to the majority.


Simply put, if you are trying to learn to program and are finding say C++ exceptionally difficult, and you tried say Python and found the process much easier, continuing to learn in C++ "because it will make learning in the future easier", is overwhelmingly WRONG.



/EDIT: Editor is borked, no matter what I try, I cant reformat that one extra newline at the top after the quote.

Edited by Serapth, 25 May 2012 - 01:35 PM.


#17 Serapth   Crossbones+   -  Reputation: 5181

Like
0Likes
Like

Posted 25 May 2012 - 01:22 PM

Finally the argument that "I learned it this way and I turned out fine", is about as meaningful as proving your magical tiger protection stone works because you haven't been attacked by tigers. I KNOW the way I learned wasn't ideal, but I still ended up learning how to program quite well. I am never going to suggest the way I learned to other people simply because it worked for me, nor am I going to conclude it was the ideal way because it was successful.


There is certainly no argument that everyone learns differently. But I do not think you will find an educator alive that doesn't believe learning ( in any subject ) is best done with a progressive difficulty curve.

Edited by Serapth, 25 May 2012 - 01:24 PM.


#18 aattss   Members   -  Reputation: 372

Like
0Likes
Like

Posted 25 May 2012 - 01:47 PM

To get your assets, I would recommend making pixelart in mspaint.

Btw Java can be only 1.1 time slower than other languages on average, and it depends on the situation.

There are many Java tutorials on TheNewBoston.org, although they also 15 videos on C, 73 videos on C++, and 200 videos on C#.

#19 yannbane   Members   -  Reputation: 113

Like
0Likes
Like

Posted 26 May 2012 - 07:24 AM

I don't know if this has already been suggested, but...

You can always go with WebGL + Javascript, using the Three.js engine. This is a great choice, because it is platform independent, and has a great deal of abstractions, which you can use, but you don't have to (in this context, you can think of abstractions as pieces of code that do the hard math, shading and so on for you, so you can concentrate on what you're doing). WebGL has direct access to the GPU, so these games wont have any problems running, and the best part: most browsers (Chrome, Firefox, Safari, Opera, etc) have native support for WebGL! This means no plugins, it's already in there!

WebGL is pretty similar to OpenGL, and it uses the same shader language (GLSL). If you were to only use WebGL, you would have to write shaders yourself, but Three.js does a lot of the work for you. This is not to say that you can't write them on your own, you can. (Shaders are basically pieces of code which are compiled on the fly and sent to the GPU to tell it how something should look.)

Here are some resources for you:

Intro to WebGL and Three.js (presentation)
Three.js GitHub page (GitHub is a page where coding projects are hosted, just download the Three.js, I think it's in the build/ directory)
HTML5 Rocks (a great page for learning HTML5)
Learning Three.js (a great Three.js blog, many cool examples)


In case you don't really want to jump straight to the 3D stuff, check out the <canvas> element.

#20 thugthrasher   Members   -  Reputation: 241

Like
1Likes
Like

Posted 26 May 2012 - 10:36 AM

I don't want to get into this too much, as it is a little off topic, but I don't disagree with the general ideas you put forward in your post, Serapth, but you again seem to be missing how "learning a programming language" is different from many types of learning (partially because learning a programming language is learning multiple things: programming concepts, concepts specific to the language, and syntax).

I will definitely give you that if your goal is to program something 'real' or 'substantive' quicker, then learning other languages is probably a better idea than learning C/C++. A lot of that is because there are generally (not always) fewer "concepts" to learn before you get into that.

I want to preface the rest of this by saying that I'm not talking about everyone in the next few paragraphs, just some people (who learn in certain ways).

However, if your initial goal is just 'learning to program' (and you don't mind waiting longer to make a substantive program, which is a personal decision) then C++ is NOT a terrible first language. It's not the best for everyone, it may not even be the best for most people, but it's definitely not terrible. You STILL are learning progressively. You don't start out with the hard parts of C++. It is not really any more difficult to code very basic programs (the type you program when just starting out) in C++ than any other language (or at least the difference in difficulty is negligible). If you are just going through learning concepts and building on them, then C++ works just as well as any other language for that (at least for a while). C++ also makes it easier than many languages (again, not all) to learn a variety of programming styles.

The reason I (and many others) say that it's easier to go from C++ to Java/C#/etc. than the other way around is NOT just because I learned C++ first. It's not even because I've seen other people going both ways and everyone I've seen who went to C++ first had an easier time switching languages than those who went the other way (as that is anecdotal and I realize that it could have just been that the people who learn programming easier happened to pick C++ first). The reason I (and many others) say that it's easier to go from C++ to the other languages is because there are (again, generally) fewer concepts that you have to pick up on to program in those languages (which is why, I believe, many others recommend going to, say, Java as a first language), so you are MOSTLY learning syntax. If you can program well in C++, then you have to learn less to program in Java than if you go the other way. Yes, there are some concepts/methods to learn, but it generally takes less time to learn those concepts you need for Java than those you need for C++.

As long as you are learning progressively (starting from the basics and moving on), MOST languages are decent starter languages. You just have to pick the one that fits your goals more closely (such as how quickly you want to program something substantive vs. how deep you want to get into how things work "below the language" before you program something substantive). The error you pointed out earlier is NOT something someone just starting out should run into (if they are starting with beginning concepts as they should), so it is NOT something to worry about when picking your first language.

Again, a little off topic, so I'm done posting about it, I just wanted to clarify what I was talking about and that I completely agree with you that you should start simple when learning new things, I just disagree on whether or not it's possible to start simple with C++.

It's like actual (non-programming) languages. Most are fairly easy to learn when you are just learning very basic grammar and counting. Some are just going to make you learn more things before you get to the point that you could write a book in that language.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS