Where to start programming

Good idea not to try and learn C++ first! Once you've got the concepts of a modern object oriented language like Python firmly under your belt then you can approach C++ as a second language, already knowing that many of the things that exist in Python must have their equivalents in C++.

With a solid background in Python I would send you straight to the fourth edition of the "C++ Primer" by Lippman et al. backed up with "The C++ Standard Library" by Josuttis.

I would do the opposite. Get a solid understand of C++, especially WRT to memory management. I would also only lightly use the standard library initially and instead learn to program your own containers, iterators and algorithms. Once you are proficient and have a deep understanding on the the underlying data structures and processes within contains like queues, heaps and hash maps then you can progress to using higher level languages as time saving when appropriate.


Anyone I have worked with who started in a language like python and then tried to move to c++ really struggled, people who learned c++ and the fundamentals of data structures and algorithms had a much richer understanding, developed better architectures and had no difficulty in learning higher level languages whenever suitable for a project.


I can see the obvious advantage of starting is something like python but in the long term it is likely not beneficial.
 
I would do the opposite. Get a solid understand of C++, especially WRT to memory management. I would also only lightly use the standard library initially and instead learn to program your own containers, iterators and algorithms. Once you are proficient and have a deep understanding on the the underlying data structures and processes within contains like queues, heaps and hash maps then you can progress to using higher level languages as time saving when appropriate.


Anyone I have worked with who started in a language like python and then tried to move to c++ really struggled, people who learned c++ and the fundamentals of data structures and algorithms had a much richer understanding, developed better architectures and had no difficulty in learning higher level languages whenever suitable for a project.


I can see the obvious advantage of starting is something like python but in the long term it is likely not beneficial.
I have no idea what you just said :(

But anyway, see here's the debate that's obviously quite popular; determining whether to start off with the 'harder' language such as C++ and then work backwards/on other languages, or to start with something like Python and then work up. I'm honestly still unsure which would be more beneficial for me, but the thing with C++ is there seemed to be a lack of books/resources for beginners which put me off. I do have the C++ primer book, however I don't think it's particularly aimed at beginners.
Are there any outstanding resources which go through the learning phase step-by-step? I feel I learn a lot better this way than watching a multitude of videos.
 
I have no idea what you just said :(

But anyway, see here's the debate that's obviously quite popular; determining whether to start off with the 'harder' language such as C++ and then work backwards/on other languages, or to start with something like Python and then work up. I'm honestly still unsure which would be more beneficial for me, but the thing with C++ is there seemed to be a lack of books/resources for beginners which put me off. I do have the C++ primer book, however I don't think it's particularly aimed at beginners.
Are there any outstanding resources which go through the learning phase step-by-step? I feel I learn a lot better this way than watching a multitude of videos.

If you want the absolute simplest programming language (IMO) which is very low level etc, then have a look at fortran. Its the language I used to write rather large quantum mechanical simulations to run on thousands of processors, and the language I used to calculate 3+3 when I couldn't be bothered to use a calculator!
 
If you want the absolute simplest programming language (IMO) which is very low level etc, then have a look at fortran. Its the language I used to write rather large quantum mechanical simulations to run on thousands of processors, and the language I used to calculate 3+3 when I couldn't be bothered to use a calculator!

The thing is, I don't want to start at the lowest level. I want a challenge, something heavily engaging. Like I said, I think the only reason I didn't start out with C++ was the lack of resources, but if I did find something I'd definitely give it a bash.
 
I would do the opposite. Get a solid understand of C++, especially WRT to memory management. I would also only lightly use the standard library initially and instead learn to program your own containers, iterators and algorithms. Once you are proficient and have a deep understanding on the the underlying data structures and processes within contains like queues, heaps and hash maps then you can progress to using higher level languages as time saving when appropriate.


Anyone I have worked with who started in a language like python and then tried to move to c++ really struggled, people who learned c++ and the fundamentals of data structures and algorithms had a much richer understanding, developed better architectures and had no difficulty in learning higher level languages whenever suitable for a project.


I can see the obvious advantage of starting is something like python but in the long term it is likely not beneficial.

Got to say I disagree with this.
The OP barely knows what a for loop is, so I'm not sure how a thorough understanding of data structures using C++ is beneficial at this stage.

I'm sure he'll learn that sort of stuff in time, but for the moment he seems to have lots of enthusiasm for learning python so I'd say to keep down this track for the time being.
 
Hi,
I would download Visual Studio Express and get a book on C++ or C# to learn the basics. Then go to NeHe’s site and do the OpenGL tutorials. GameDev is a good site to have a look at for game programming.
 
Got to say I disagree with this.
The OP barely knows what a for loop is, so I'm not sure how a thorough understanding of data structures using C++ is beneficial at this stage.

I'm sure he'll learn that sort of stuff in time, but for the moment he seems to have lots of enthusiasm for learning python so I'd say to keep down this track for the time being.

A for loop is just as easy in C++ as python really, especially with c++11.


The real issue is people might go some way in python and then never be able to make the change to c++ for a variety of reasons. If they start in c++ then learning Python at a future date is required is easy, and moreover they have a very direct path into Java and C#.
 
A for loop is just as easy in C++ as python really, especially with c++11.


The real issue is people might go some way in python and then never be able to make the change to c++ for a variety of reasons. If they start in c++ then learning Python at a future date is required is easy, and moreover they have a very direct path into Java and C#.

How did you go about learning C++? Any recommendations for websites etc?
I have the C++ Primer book but also thinking about getting C++ for beginners 2nd ed. (3rd ed doesn't come out until June), and maybe 'Beginning C++ through Game Programming'
 
C is an awkward, error prone and infuriating language to write in. However it is also wildly successful, I think in part because the compiler was given away free to Universities at a point where Fortran compilers were all paid for.

It is the foundation for C++. The reference python implementation is written in C. At least one SQL (databases) implementation is written in C. Java, C#, Perl - all have syntax based closely on C and I suspect the underlying implementation for all three is C.

When I decided to learn to program properly, I went for C on the grounds that everything else is built on it. It's brutally unforgiving and has a rather sharp learning curve - but as a consequence I learned a great deal.

C++ should have a similar effect but with an even steeper learning curve. There's some really complex functionality on C++ (exception handling and template metaprogramming come to mind) which, while useful, are even less beginner friendly than memory allocation.

For learning to write good software, as opposed to learning why semicolons really do matter in C, the books "the pragmatic programmer" and "code complete" are worth a look. Neither are beginner books.

If you want the absolute simplest programming language (IMO) which is very low level etc, then have a look at fortran. Its the language I used to write rather large quantum mechanical simulations to run on thousands of processors

Fortran is unusual. It's close to being a domain specific language - it does maths really well and everything else really badly. I love fortran dearly, but only because I'm using it to do maths. Not sure I'd recommend it to someone beginning computer science.

The thing is, I don't want to start at the lowest level. I want a challenge, something heavily engaging.

Well, C++ is certainly a challenge. I wouldn't have made it over that learning curve when just starting out. C++ for beginners sounds like a contradiction in terms.
 
We recently got a couple of interns who have never programmed in their life, but they were smart kids with a masters in maths. A little supervision, lots of motivation and a couple of books and they are very proficient C++ coders.

Not sure what books they were given, will try to find out.


Edit, checked my emails.we gave the interns:
C++ Primer by S. Lippman:
Programming: Principles and Practice Using C++
Accelerated C++: Practical Programming by Example


The latter is a little tougher, good for those that have some concept of coding.
We also gave the, $200 to buy more books, I think one of them got C++ for dummies.


These books combined with google, and help at stack overflow will get any bright motivated person from nothing to a proficient c++ coder.

c++ is not a hard language. It has it's querks (like most languages, I mean th whole indention BS in python is just weird and unique), it has it's ugliness, compilers can be a pain but linking issues are common in many languages also). You know C++ is actually a high level language designed to develop software fast and easyily. I had friends at uni doing electrical engineering that had to learn assembly.
 
Last edited:
My issue with C++ was not the language, I grasped the basics quite easily using a "Sams teach yourself in X days" book, I just always had issues setting compilers up and documentation for it was awful :(

Getting Python and my web coding skills down, then picking up C++, it's just finding the time :(
 
My issue with C++ was not the language, I grasped the basics quite easily using a "Sams teach yourself in X days" book, I just always had issues setting compilers up and documentation for it was awful :(

Agree with this. In reality, a beginner is going to be writing very basic programs - they are not going to be looking at complex data structures, memory management, etc. until they understand the basics. I think people on here are really over-egging the 'c++ is difficult' line - you can make the learning curve as steep or as shallow as you want.
 
My issue with C++ was not the language, I grasped the basics quite easily using a "Sams teach yourself in X days" book, I just always had issues setting compilers up and documentation for it was awful :(

Getting Python and my web coding skills down, then picking up C++, it's just finding the time :(

Yeah, I hate setting up C++ compilers! sorting out linking issues and the often useless compiler errors (although that is mostly just with GCC, Clamg is much better).

But for a beginner with only 1 or 2 files and no libraries beyond stl then it isas eay or easier than python IMO.
Code:
g++ hello_world.cc -o hello


Learning the basics and then learning things like making a tree structure etc. is easy to do in C++ and teaches you a lot of important grounding.
 
Is OP still here?
You say your Doing a games design course(at the beginning) now this seems to be a general learning to program thread :p

Is your course actually about games design or games development? If dev then your C++ route is great.
If it's more design then I've seen too many games designers get lost it the code of things and would warn against delving too deep as the nitty gritty is un-needed in the design side
 
Is OP still here?
You say your Doing a games design course(at the beginning) now this seems to be a general learning to program thread :p

Is your course actually about games design or games development? If dev then your C++ route is great.
If it's more design then I've seen too many games designers get lost it the code of things and would warn against delving too deep as the nitty gritty is un-needed in the design side

Yes I'm still here. It's a game dev course, which by the end of it we will have a proper, functional, playable game. I've already spoke to one of the tutors of the course and they've told me it's more visual perspective rather than on an actual code base, so I presume we won't be delving deep into any programming languages. He also said that the majority (if any) of it would be done in C and Java. Sorry, must've been confusing.

Not sure if I've highlighted it before, but working in the games industry would be my ideal, dream job; but not entirely necessary, at least not to start out with anyway. If that means working for a company doing software dev or something along the lines of that it doesn't really matter.
I want to be able to make games, and I want to be able to make programs.
I think I'm going to learn both through the use of a combination of internet tutorials, and then making my own (similar, but not replica of course) versions of programs/mini games, and then two books (C++ Primer, and Beginning C++ through Game Programming).
 
Last edited:
Yes I'm still here. It's a game dev course, which by the end of it we will have a proper, functional, playable game. I've already spoke to one of the tutors of the course and they've told me it's more visual perspective rather than on an actual code base, so I presume we won't be delving deep into any programming languages. He also said that the majority (if any) of it would be done in C and Java. Sorry, must've been confusing.

Not sure if I've highlighted it before, but working in the games industry would be my ideal, dream job; but not entirely necessary, at least not to start out with anyway. If that means working for a company doing software dev or something along the lines of that it doesn't really matter.
I want to be able to make games, and I want to be able to make programs.
I think I'm going to learn both through the use of a combination of internet tutorials, and then making my own (similar, but not replica of course) versions of programs/mini games, and then two books (C++ Primer, and Beginning C++ through Game Programming).

Cool,
I would commend you on the approach, I have a degree to games programming and right now I only do games part time.
'Real' programming jobs have much better pay, and games industry jobs favour veteran programmers.
But I keep in touch regularly with friends who went to games companies, a couple who started some. I plan to go back full time once I've got some money in the bank.

After that ramble I was just going to suggest in my opinion there's no better rapid prototyping system than Unity3D you can throw a fully working, intricate multi-platform game in a month easy. A word of caution though, It has a habit of building bad coding practices, as it's very flexible.

I'd highly suggest taking a look, it's got plenty of tutorials, simple pre-written code you can look through etc
 
Cool,
I would commend you on the approach, I have a degree to games programming and right now I only do games part time.
'Real' programming jobs have much better pay, and games industry jobs favour veteran programmers.
But I keep in touch regularly with friends who went to games companies, a couple who started some. I plan to go back full time once I've got some money in the bank.

After that ramble I was just going to suggest in my opinion there's no better rapid prototyping system than Unity3D you can throw a fully working, intricate multi-platform game in a month easy. A word of caution though, It has a habit of building bad coding practices, as it's very flexible.

I'd highly suggest taking a look, it's got plenty of tutorials, simple pre-written code you can look through etc
If you don't mind me asking; what do you currently do as a full-time job?
I've been told by tutors to use UDK > Unity, although I am unsure. I am aware of the no royalties with both programs, and I think it's Unity that allows $100k p/annum before you have to give any money to them, whereas with UDK it's after the first flat $50k
I think working in the games industry, as I previously said before, it's always been a dream and I'll still always apply for jobs in gaming companies (or maybe even make my own if I get a bunch of dedicated people) but I am completely aware that it's quite over-ambitious as this point in time. If I never get a job working in the industry, then I'll sure as hell still be making stuff in my own spare time still.
 
If you don't mind me asking; what do you currently do as a full-time job?
I've been told by tutors to use UDK > Unity, although I am unsure. I am aware of the no royalties with both programs, and I think it's Unity that allows $100k p/annum before you have to give any money to them, whereas with UDK it's after the first flat $50k
I think working in the games industry, as I previously said before, it's always been a dream and I'll still always apply for jobs in gaming companies (or maybe even make my own if I get a bunch of dedicated people) but I am completely aware that it's quite over-ambitious as this point in time. If I never get a job working in the industry, then I'll sure as hell still be making stuff in my own spare time still.

UDK is VERY powerful, the things you can do in it are incredible.
Unity is more restrictive, and you need to by the pro version to get the features to really polish something.

that being said Unity is much quicker and you can throw a platformer together in a few hours. but if you want real lighting/physics control you can find it limiting.

Currently I work in telecoms test equipment market. Not really my intended field but the graduate salaries weren't to be scoffed at and Now I've got a son and saving for a mortgage so not the care free games programmer some of my mates are, 16k can get them by but I'd not cope with that :p
That's those that started their own companies, I have friends in Ubisoft and Blizzard who get paid a lot more. But they're better programmers than me, genius level :p one turned David Braben himself down when he offered them a job lol
 
I feel your pain (and yes, I did read the end of the thread, or rather, the newer posts).

I'm 19, and I am a University student.

I took Computing at A-Level, without having my Computing O-Level (GCSE). Pretty much all my class mates had their Computing O-Level, so starting it from scratch put me in a disadvantage.

They learned pascal, and in A-Level, we were thought Java. I was told by pretty much all my friends that there is no comparison between pascal and Java, and their background didn't really help them.

Java was easy at the beginning, when using simple loops, prints etc. but when it came to the object oriented part, it got tougher. Teachers were useless, so got my friend to pretty much walk me through it. For my A-Level, I had to do a project, and only then did I really understand how to use Java, and all its OO (object oriented) functionality. Still makes little sense in my mind, but I accept it and work with it.

Fast forward 6 months, I'm in University, and learning to program in C. First few months are simple. You pretty much just do the same things you did in Java (loops, print etc.). You get to the memory allocation part, and things get tougher. Once again, learnt nothing at all, and I had to do my project. This time, very little friends to help, so I went for it myself. Mashed it all in 4 days, and my project is done. If I had to do it, I could easily do it now.

You might ask, yes, so how is this relevant?

As a student, I used 2 languages. I have noticed that the base is the same in all languages. That loops are always used. Print/inputs are always used.

Before you swap language, become fluent in that language. Don't jump to a different language before knowing what you are doing. Finish the book, and make up projects for yourself. Some people in my A-Level course did a fully fetched chess game, including GUI, save/load functionality, undo last move, leaderboard etc. They didn't have to do something that complicated, but they did, and they learnt 100 times more than me. Only when you have really experienced a language, do I advise you to start a new language.

Good luck.
 
I feel your pain (and yes, I did read the end of the thread, or rather, the newer posts).

I'm 19, and I am a University student.

I took Computing at A-Level, without having my Computing O-Level (GCSE). Pretty much all my class mates had their Computing O-Level, so starting it from scratch put me in a disadvantage.

They learned pascal, and in A-Level, we were thought Java. I was told by pretty much all my friends that there is no comparison between pascal and Java, and their background didn't really help them.

Java was easy at the beginning, when using simple loops, prints etc. but when it came to the object oriented part, it got tougher. Teachers were useless, so got my friend to pretty much walk me through it. For my A-Level, I had to do a project, and only then did I really understand how to use Java, and all its OO (object oriented) functionality. Still makes little sense in my mind, but I accept it and work with it.

Fast forward 6 months, I'm in University, and learning to program in C. First few months are simple. You pretty much just do the same things you did in Java (loops, print etc.). You get to the memory allocation part, and things get tougher. Once again, learnt nothing at all, and I had to do my project. This time, very little friends to help, so I went for it myself. Mashed it all in 4 days, and my project is done. If I had to do it, I could easily do it now.

You might ask, yes, so how is this relevant?

As a student, I used 2 languages. I have noticed that the base is the same in all languages. That loops are always used. Print/inputs are always used.

Before you swap language, become fluent in that language. Don't jump to a different language before knowing what you are doing. Finish the book, and make up projects for yourself. Some people in my A-Level course did a fully fetched chess game, including GUI, save/load functionality, undo last move, leaderboard etc. They didn't have to do something that complicated, but they did, and they learnt 100 times more than me. Only when you have really experienced a language, do I advise you to start a new language.

Good luck.
Thanks for the advice bud.
What are you doing at uni?
 
Back
Top Bottom