Advertisement

what lang. is the best to start programming?

Started by January 01, 2003 05:09 PM
195 comments, last by caandom 21 years, 10 months ago
quote: Original post by Digigamer15
The most important thing is not whether you pick the "best" language to learn first but that you accually stop toying over which language to learn and accually sit your ass down and learn one!

That''s a really good point. Not being able to decide which programming language to learn in the first place is just going to give you an excuse to postpone learning one. Maybe the AP should just put all the names of programming languages they''ve been given so far into a hat and pick one at random. Or better still, just have a quick look at some information on them on the internet and then just go by what he thinks looks "cool".

"C combines all the power of assembly language with all the ease of use of assembly language"
quote:
OK, let''s try a different approach. If so many people think C++ is a good language for new programmers, would someone please explain why that is the case. Just to pre-empt, here are some non-explanations:

"Because I learned it and it was easy".
"Because lots of games are written in C++".
"Because there are lots of books about C++".

If you feel someone is lacking help them out rather than writing some (for them) useless piece of answer.

If someone wants to explain why they think C++ is good for beginning programmers, I am prepared to state the case for Python.


Ok, let´s have a look at this. I suggest that there is no such thing as a beginners language and here is why. When you program in any language you are dealing with abstraction. I don''t mean in the normal sense here I mean in a physical sense. This is what most new programmers have problem with. It really does not matter which language you start with. You will be facing the very same problems regardless. Let us take variables for instance, it is a common truth that most people that start learning programming do it because they are curious. Most of these curious people lack many of the basic knowledge that you and I had (most likely) when we started programming. Most important of these is mathematics. I have tutored many people through the years and seen a lot of these people and trying to explain how a variable works is not as simple as it might seem. Try explaining zero without using the word zero and see how easy that is. This is only one example.
Explaining any syntax, function or special behaviour is very hard for beginners since it requires some level of abstract thinking they are not used to. So, no matter which language you want to learn they all present problems for beginners to overcome and c/c++ is no different. What does matter is how you approach the student/beginner and explain things to them. How fast they are capable of learning and what method of learning dominates them. Yes, there is such a thing also. You have kinetic learning, visual learning, reading learning and hearing learning. Any one of these typically dominate any one person. Most people are reading and visual learners dominated by reading. But for those whom are dominated by kinetic learning there is little help in schools today. They will appear to be slow, stupid, aggressive (because of their frustration) etc... and generally fall behind in class. All because the teacher and people around them do not understand their needs. They will sit and look at the blackboard and no matter how obvious the explanation is they still don''t get it. It is not their fault, it is because the teacher does no realize that this individual needs to have the teacher with him/her and physically work the pen with this person. It might seem stupid but for them it is really important. Some of these are really highly intelligent people also. So is c/c++ a good beginners language? Yes! It is just as good a beginners language as any other language. You need to take the time to slowly work through the syntax and the specifics of the language. It is going to take time and it is probably going to be hard (for most people). But I would recommend c/c++ for the reason that most use it. If c# becomes the most commonly used language I would recommend that langauge. I would not recommend python however because of it''s very limited use globally. I don''t mind the language as such but learning the most common language is the best approach regardless how you feel about it.
Advertisement
Conclusion: C++ is for the smart people. Not nerds, just people with high IQ''s.

.lick
quote: Original post by Pipo DeClown
Conclusion: C++ is for the smart people. Not nerds, just people with high IQ''s.


And you come to this conclusion because...?
I learned things a little weird
for me it went something like this

1/2 C++ --> 1/2 C ---> BASIC ---> VB6 ---> Other 1/2 C++

This was somewhat due to a caffeine addiction i had though, which was so bad I had a symptom known as psychoagitation, i wont get into details but the caffeine messed me up and made C++ a real bitch so i did some basic and then went back to c++!
quote: Original post by ph33r
Saying that one of the reasons you believe that C++ is not a good choice for a beginners language because of the fact that there is a lack of appropriate learners guides is not true.

Why not?
quote:
The C++ community is arguably one of the largest. With it being the largest it has more recourses available to it, so the more C++ programmers == more tutorials/books/guides.

The problem is that there are so many bad resources. The only book I''m aware of that can be regarded as good in terms of learning C++ is Accelerated C++. That book is not aimed at complete newbies. There is no book aimed at complete newbies which is regarded as particularly good or up-to-date. That''s why Francis Glassborow is working on such a book right now. Steve Heller has also recently released a new edition of his book. I don''t know if that book is any good.
quote:
Now just because there are more tutorials/books and guides does not make them an adequate learning source. But there are plenty of appropriate recourses that do in fact teach the language in an appropriate manner.

Such as...?
Advertisement
quote: Original post by Anonymous Poster
I would not recommend python however because of it''s very limited use globally.

What do you mean? Python has a massive user base and it is growing very rapidly. The toolset available is very good, the community is very helpful, and most of the stuff is free. All of the Python tools I use for professional development are completely free to use, including the base runtime and libs, the interactive IDE, debugger, GUI libs (wxPython), OpenGL libs, Win32 extensions, tutorials, etc.

The huge advantage that Python (and many dynamic languages) has over C++ for beginners is the interactive environment. The environment allows you to type in snippets of code and have immediate feedback of the results. This immediacy is something that continues being useful even for experienced professional programmers, who often like to employ incremental development techniques. Often, you will find newbie C++ programmers struggling to get their code past the compiler, in the mistaken belief that compiled code means correct code. It is a small triumph simply to get the type-system to accept what they want to do.

A further advantage of Python over C++ is a reported 20x decrease in the amount of code you have to write to complete a task. Admittedly, that figure is anecdotal, but I have heard that from David Ascher. My own experience also bears that out. I recently recoded a medium-sized C++ application in Python and found a reduction in LOCs of around 50x (IIRC). The C++ was badly written, so I''d expect that to come down to 20x-30x if someone competent had written it. Still, that''s a hugely significant figure. If you are writing less code, that means you are concentrating less on irrelevancies and more on the problem you are trying to solve. That''s no small consideration when you are learning, or when you have a complicated problem to solve.

Furthermore, the fact that in C++ you have to adorn many declarations with type-information is redundant from a functionality point-of-view. It means much duplication of effort and often confusion (in particular for newbies). In all, C++ puts far too much syntax in the way for people to really concentrate on the problem at hand. That is a particular problem when you have not already learned to deal with the syntactic issues.

Another advantage of Python for newbie game developers is the PyGame library. Unsurprisingly, it''s free. PyGame is very easy to use - a basic screen can be set up in around 10 lines of code. The PyGame libs include such things as classes for sprites, image loading routines which perform necessary translations, ready built collision detection which takes 2 lists of game objects and tells you which ones are intersecting, code for handling sounds and MPEG playback, control devices such as keyboard, joystick, mouse and CD. There are a number of games linked-to on the website and you are free to download the source for each one to see how they work.
quote: Original post by Pipo DeClown
Conclusion: C++ is for the smart people. Not nerds, just people with high IQ''s.

Smart people choose the tools that allow them to maximise their productivity and thus defeat the competition.
quote: Original post by SabreMan
I would not recommend python however because of it''s very limited use globally.

What do you mean? Python has a massive user base and it is growing very rapidly. The toolset available is very good, the community is very helpful, and most of the stuff is free. All of the Python tools I use for professional development are completely free to use, including the base runtime and libs, the interactive IDE, debugger, GUI libs (wxPython), OpenGL libs, Win32 extensions, tutorials, etc.

The huge advantage that Python (and many dynamic languages) has over C++ for beginners is the interactive environment. The environment allows you to type in snippets of code and have immediate feedback of the results. This immediacy is something that continues being useful even for experienced professional programmers, who often like to employ incremental development techniques. Often, you will find newbie C++ programmers struggling to get their code past the compiler, in the mistaken belief that compiled code means correct code. It is a small triumph simply to get the type-system to accept what they want to do.

A further advantage of Python over C++ is a reported 20x decrease in the amount of code you have to write to complete a task. Admittedly, that figure is anecdotal, but I have heard that from David Ascher. My own experience also bears that out. I recently recoded a medium-sized C++ application in Python and found a reduction in LOCs of around 50x (IIRC). The C++ was badly written, so I''d expect that to come down to 20x-30x if someone competent had written it. Still, that''s a hugely significant figure. If you are writing less code, that means you are concentrating less on irrelevancies and more on the problem you are trying to solve. That''s no small consideration when you are learning, or when you have a complicated problem to solve.

Furthermore, the fact that in C++ you have to adorn many declarations with type-information is redundant from a functionality point-of-view. It means much duplication of effort and often confusion (in particular for newbies). In all, C++ puts far too much syntax in the way for people to really concentrate on the problem at hand. That is a particular problem when you have not already learned to deal with the syntactic issues.

Another advantage of Python for newbie game developers is the <a href = "http://www.pygame.org/">PyGame library</a>. Unsurprisingly, it''s free. PyGame is very easy to use - a basic screen can be set up in around 10 lines of code. The PyGame libs include such things as classes for sprites, image loading routines which perform necessary translations, ready built collision detection which takes 2 lists of game objects and tells you which ones are intersecting, code for handling sounds and MPEG playback, control devices such as keyboard, joystick, mouse and CD. There are a number of games linked-to on the website and you are free to download the source for each one to see how they work.


There is plenty of such libraries for c/c++ also that can handle all of those things MT-GameSystem (Although a replacement is under way for that one), Crystal space, CDX and SDL comes to mind to mention but a few. And there are those c/c++ libraries that can produce a usable screen setup in one(1) line. That was a poor argument. Also, understanding how the compiler works does not require that much effort. Python is a very small language compared with c/c++ so that is what I mean.


I believe that c++ is a good language for beginners there are many resources on it. After you learn c++ you have many more options available as there are many books on windows and game programming that assume prior knowledge of C/C++.

I agree that c++ is a very hard language to learn. But it is also a very powerful language. I don''t think that learning another language will make C++ simpler and that both newbies and pros alike will have trouble with so you might as well learn it now.
And so, the evil religion thread stole the wonderful "What the Heck?" thread's throne. Truly a sad day for gamedev.

This topic is closed to new replies.

Advertisement