Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Looking for c++ books

Master Summoner
Joined
Jan 20, 2011
Messages
512
Reaction score
163
so i've been looking for books on google but couldn't find any , i'm not a noob when it comes to programming . So now i want to learn c++ but i can't find any good recommended books , some advised me to c++ prime but its from 2005 so i'm afraid its outdated , any advice ???
 
Junior Spellweaver
Joined
Oct 27, 2008
Messages
165
Reaction score
89
Naah, C++ books cant be outdated.


If you want to learn c++, I suggst starting with C then continue with C++.
C/C++
C:
C++:
Tools Win32:Notepad++, CodeBlocks, Visual C++, Borland C++, Turbo C
Tools Linux:Geany, CodeBlocks, Kwrite, gedit, emacs

Good Book in C++(do the Exercises after finishing the chapter)
Teach Yourself C++ in 21 Days
Then read about Data Structures and Algorithms(you can read after pointers and structs)
Then read about Design Patterns and Anti Patterns(you can read after object orientated)
 
Ginger by design.
Loyal Member
Joined
Feb 15, 2007
Messages
2,340
Reaction score
653
Don't learn C++. Learn C. Read K&R and you're set.

C++ is completely misused by 99% of developers. Syntactic sugar is not a license to abuse it to make your programs incomprehensible, and operator overloading is a cancer.
 
Master Summoner
Joined
Jan 20, 2011
Messages
512
Reaction score
163
no i need to learn c++ because i'm going into the game development , its easy for me to learn c++ because i read a c++ book ones but didn't continue

@ghost107 c++ can be outdated because some structures where changed , i heard some also changed in c++ 11
 
Junior Spellweaver
Joined
Oct 27, 2008
Messages
165
Reaction score
89
no i need to learn c++ because i'm going into the game development , its easy for me to learn c++ because i read a c++ book ones but didn't continue

@ghost107 c++ can be outdated because some structures where changed , i heard some also changed in c++ 11

I know about C++ 0x/11, and what books teach works the same on all versions of C++, plus to use C++ 11 you must have the C++11 library and enable it into your compiler. Your still running c++ 98/03 with some improvements of c++ 0x.

For example in GCC:
It must compile with the paameter -std=c++0x(-std=c++11).

That's why I said C++ can not be outdated, most of the stuff that is added into the in the new ISO versions of C++ are more of Thread safe, Atomic data types, auto, lambda expressions, bigger STD library, but the stuff that is in C++ books teach works on all versions of C++.

So if your wanting to learn Game development, Learn C, then C++, then Win32/MFC/XLib(Depending on the OS you want to develop, or you can learn both ), then OpenGL/DirectX(depending what rendering Interface your Wanting to use, or both), Learn about Shading, And Other Game Development (Camera, Scene Graph, Animations, etc)

On game development you should know a lot of data structures(like Arrays / Multidimensional Arrays, bitconverters, Single/Double Linked lists, Stacks, Queues, Hash Tables, Trees, Heaps, Graphs).
 
Last edited:
• ♠️​ ♦️ ♣️ ​♥️ •
Joined
Mar 25, 2012
Messages
909
Reaction score
464
c++ will never be outdated due the fact it compiles your static code. but c++ is even a hard language if u want to do it right. i just can say ppl here are right, u should head C first, it gives u the necessary basics u have to care on before learning c++.
 
Joined
Jun 8, 2007
Messages
1,985
Reaction score
490
You can build games using many programming languages. I never got into C++.. The syntax is too much for me to feel certain about things. Though I use JavaScript a lot and there is the same problem.. The difference is C++ is 10-fold the complexity of JavaScript, so coding in JavaScript in a consistent manor isn't hard, where C++ is hard for me..

Python is good. Knowledge you gain from C can help you with Python sometimes. If you feel compelled to learn C++, bight the bullet and try it. there are many places on the internet with books and reviews.
 
Joined
Nov 19, 2003
Messages
4,436
Reaction score
78
You've received a lot of crappy answers in this thread.

It is perfectly fine to start directly with C++ instead of straight C. I would strongly recommend in this order:








Yes, this is a lot of reading, but you should realize what you're getting yourself into. C++ is one of the most complex and convoluted programming languages ever developed. There's a reason that most programmers have moved on to languages like C# and Java. There are usually very specific reasons anything today would be written using C++.

Be aware that you can do a lot of game development nowadays using C#, and I'd recommend learning it before moving on to C++ due to its garbage collection. If C++ is your first programming language, pointer logic is going to be very difficult for you to wrap your brain around no matter how smart you may be.

To throw my own opinion in here, I personally think C++ is a terrible language. Virtually everything it does, it does badly. Its implementation of OO compared to Java and C# is horrible. Development time for even the simplest of tasks sometimes takes ages compared to "modern" languages. The only thing it has going for it is execution speed.
 
Ginger by design.
Loyal Member
Joined
Feb 15, 2007
Messages
2,340
Reaction score
653
You've received a lot of crappy answers in this thread.

It is perfectly fine to start directly with C++ instead of straight C. I would strongly recommend in this order:








Yes, this is a lot of reading, but you should realize what you're getting yourself into. C++ is one of the most complex and convoluted programming languages ever developed. There's a reason that most programmers have moved on to languages like C# and Java. There are usually very specific reasons anything today would be written using C++.

Be aware that you can do a lot of game development nowadays using C#, and I'd recommend learning it before moving on to C++ due to its garbage collection. If C++ is your first programming language, pointer logic is going to be very difficult for you to wrap your brain around no matter how smart you may be.

To throw my own opinion in here, I personally think C++ is a terrible language. Virtually everything it does, it does badly. Its implementation of OO compared to Java and C# is horrible. Development time for even the simplest of tasks sometimes takes ages compared to "modern" languages. The only thing it has going for it is execution speed.

I've never met a good C++ programmer who didn't master C first. I've never met a great C++ programmer who couldn't do everything in x86, if asked.

This is causation, not correlation. To be a programmer is to understand what you're doing. To understand half of what C++ builds on top of C is implicitly to understand the underlying concepts in C, and the motivation behind the additions made in C++, otherwise it's some magic.

If you learn C++, you learn that there are these things called "objects" and "new" creates them. Pointers are just basically references with a fancy name/syntax (the same things you get in Java etc), and new/delete are just annoyances you have to put up with because you don't have a GC. Man we have a tough life, C++ programmers!

If you know C, you know that 'new' is just a wrapper for malloc that hides some of its ugliness (can return NULL even if memory is available, in fact operator new is a just spins on malloc until it gets a non-NULL value or until the process runs out of memory in which case it throws), that pointers are the same pointers as in C, and that you use them for almost everything (or should, or it's probably being done wrong). Pointers are to data access and data structures what closures are to functional programming.

If you know x86, you know that malloc is really just a procedure that manages a heap, and that it's incredibly slow (and that you should use local variables if possible because it's stack allocated which is a sub esp, x, not a call to malloc which is > 1000x slower). You also know that pointers are explicitly supported as references to mem via both imm32 values (direct offsets) and register/segment addressing modes, which is how you get data at a certain address. Pointers are how you access memory AT ALL in x86, the only way outside of using a cached value in a register, and they're your fundamental tool. Your use of them in C represent this (which is why you use them liberally).

Knowledge of the basics matters. Without it, you take what you know as the lowest level, which makes you stupid, basically. If you only know C++ here, you use 'new' for everything, and this is misleading. Because 'new' in other languages is the primary (read: only) means to create a new object, you don't associate a cost with it. So you then hear people complain about needing to delete everything, and these schemes to wrap a pointer inside a local variable with a destructor so it's automatically deleted at the end of the scope (my god, trying to break abstraction with abstraction, what the duck?). They don't usually understand that you need to call free (which is what delete does, besides call your ~Class function), because you called malloc, instead of allocating on the stack. In fact, it goes way, way deeper than this.

Here's a small example of the enormous complexity introduced by C++ on top of what is a trivial and stable API in C:

Note at the top, once introduced to malloc/free, you've just completely learned memory allocation/deallocation in C (sans OS-specific API to allocate more heap or virtual blocks, but as far as standard C is concerned, you're done). It's so simple a noob could learn it! (yeah, see the relevance to this thread?) The rest of that rant/paper is discussion about the shenanigans that is new/delete. The size alone should let you know you're in for a lot of wtf-ery, so enjoy. If you can follow every detail in that paper already knew all of it, you MIGHT be a moderately competent C++ programmer.

At the end of the day, your speed writing software depends on a few factors. Knowledge of a language, knowledge/use of libraries, and language features are among them. Specifically, the capability of a language to support the creation of simple yet useful abstractions rapidly and in a manner unlikely to be error-prone. Higher level languages give you this by being far simpler than C++, but mostly by providing powerful library support and ease of use/deployment (Perl, PHP, Ruby, Javascript, Python, etc all have shipping module management systems to download libraries, see CPAN, PECL, NPM, etc). C gives you this in that it's far more difficult to get an abstraction wrong in C than it is in C++, because your primary means of abstractions are structs and functions. C++ adds to that classes, templates, and operators, and some other things. It's not hard to see why I and many others suggest that people, especially new programmers, avoid C++.
 
Watching from above
Legend
Joined
Apr 9, 2004
Messages
3,828
Reaction score
752
I don't really agree with having to start with C before C++. You should definitely understand assembly before you can be comfortable with C. But even before that it's crucial that you know how to build your own computer from scrap electronics, because otherwise you'll just not understand what's going on behind the scenes.
 
Junior Spellweaver
Joined
Sep 24, 2006
Messages
186
Reaction score
19
It's pretty crazy that nobody told him bout bjarne stroustrup c++ book,
this one is tought at my university, basicly if you understand everything in it and use it as a reference, you ll p0wn at c++, trust me!

just google his ebook, in case you didnt know, stroustrup is the inventor of c++ ^^
I got that book laying besides me here, though I have to admit that it aint easy reading for a beginner,
though if it' your first programming language, better take a look at python first!
 
Back
Top