Fog Creek Software
Discussion Board




Starting C++

OK, I've decided to jump in and learn C++.  I've been through the archived posts on JOS to come up with a list of items to help me begin.  What I've come up with so far is this:

Book - Bjarne Stroustrup's "The C++ Programming Language (3rd edition)"
IDE - Couldn't find a strong recommendation
Forum for help - comp.lang.c++
Compiler - Visual C++

Could anyone recommend 1 of each of the following items to help me learn the language?

Book recommendation
IDE
Forum for help
Compiler

I will be focusing on Windows development.

Frogmoses
Friday, April 23, 2004


Are you learning to program in order to get a job working for someone else?
(in which case you need to learn what THEY want you to program in).

Or, are you learning it to develop your own programs? (in which case the only criteria for the language chosen is what meets YOUR needs)

Mr. Analogy
Friday, April 23, 2004

> Book recommendation

If you already know C, then I found that Eckel's _Thinking in C++_ was a good introduction to C++ syntax ... it's intended for C programers, and explains incrementally the new C++ syntax features. _Thinking in C++_ is enough to learn to read C++.

The _Effective C++_ books by Meyers are canonical: they describe 85 mistakes to avoid when writing C++.

The _Design Patterns_ book by the "Gang of Four" is about Object Oriented Programming ... I found it told me why I'd want to use C++.

The _C++ Programming Language_ is good and fairly through, but I don't know whether it's good if you don't already know C++.

> IDE

Visual C++ is an IDE as well as being a compiler.

Christopher Wells
Friday, April 23, 2004

Book - Thinking in C++, I & II

RP
Friday, April 23, 2004

Forum help: comp.lang.c++.moderated

Book help: http://www.accu.org/bookreviews/public/reviews/0hr/beginner_s_c__.htm

Danil
Friday, April 23, 2004

I had a quick look through the Safari "most read books" ranking, and was surpised to find the first C++ entry only at position 153 (Practical C++ Programming by Steve Qualline). Any ideas why this would be so far down the pack? A C book (C Primer Plus, Third Edition
By Stephen Prata) has been the staple number 1 for as long as I can remember, and Java, Perl, C# and Phyton books are well into the top 30, so it can't jusy be a lack of language book interest.

Just me (Sir to you)
Friday, April 23, 2004

Book recommendation: Thinking in C++

Compiler/IDE: MSVC6 (the .NET IDE is crap)

Forum for help: groups.google.com

Grumpy Old-Timer
Friday, April 23, 2004

Mr. Analogy,  I am doing this for myself, with a longer-term goal of getting a job.

Frogmoses
Friday, April 23, 2004

Danil.  Great link to the ACCU!

Frogmoses
Friday, April 23, 2004

Do you already have experience programming?

Kalani
Friday, April 23, 2004

Look to Stroustup's "C++ In Depth" series boxed set.

2 of these books are a great for beginners:
Accelerated C++ (Koening and Moo)
Essential C++ (Sutter)

They do an extremely good job of teaching C++ without going through C.  It is important to look at true C++ programs rather than C program with that "class" keyword tossed about.

The other books in the boxed set are spectacular as well, but not as geared for beginners.

Also, any C++ programmer should have the boost library in their toolbox:
www.boost.org

Tito
Friday, April 23, 2004

As for IDE and compiler, I have been quite happy with MS Visual C++ 7.1.  (It's in Visual Studio 2003)  I actully kind of like the VS.NET IDE. 

The main advantage for me is that VC 6 is very much not in compliance with the standard, whereas 7.1 is one of the most compliant compilers out there.  That extra functionality makes a big difference for me, but you probably won't notice it until you get more advanced.

If you can drop a little cash for VisualAssist, do so, it is amazing (www.wholetomato.com).

Since you are looking at windows programming, you will need to reference this as your main reference:
msdn.microsoft.com

Your GUI toolkit will probably be either the MFC (microsoft foundation classes) which are quite hideous, but usable.  The other toolkit I should mention is the WTL (windows template library) which is cleaner, but less documentation and not "officially supported".

Tito
Friday, April 23, 2004

I think that you guys are giving him more complication than might be necessary.  If he doesn't already have some experience writing programs, throwing him at MFC/ATL/WFC/boost/etc is only going to make things more difficult for him.  He'll be trying to figure out boost::graph at the same time that he's trying to understand the difference between an int and a char.

Besides, nobody's mentioned the STL! ;)

Kalani
Friday, April 23, 2004

An alternative to the VC++ 7.1 compiler is the Dev-C++ environment ( http://www.bloodshed.net ).  It's not any better than VC++, but it's cheaper.  Not a good choice if you want to do MFC development though.  For GUI development with this tool I recommend wxWidgets ( http://www.wxwidgets.com ).

Clay Dowling
Friday, April 23, 2004

> It's not any better than VC++, but it's cheaper

The cheaper comment no longer applies to the compiler itself:

http://msdn.microsoft.com/visualc/vctoolkit2003/

Rob Walker
Friday, April 23, 2004

Book: Accelerated C++ (far better than Thinking in C++, which frankly is a pretty mediocre book)

IDE: Visual Studio.NET

Forum for help: Google groups search (someone has already answered the question in the past)

Compiler: Visual C++

Best Microsoft Office Assistant: Rocky!

Jorel on Software
Friday, April 23, 2004

Great replies, everyone.  Thanks for the encouragement.

I do have some programming background.  BASIC, PASCAL (in college 10 years ago), VB.

I've also dabbled in Assembly.  I would like to stay away from any books that mix C and C++.  I want to try and stay C++ focused until I comfortable with it. 

Frogmoses
Friday, April 23, 2004

Books:

(1) Another vote for "Accelerated C++".  It's like no other C++ book out there, and it gets you going on using the STL from the get go.  It's a thin book, but don't be fooled.  There's a lot of information packed in there. [ACCU link: http://www.accu.org/bookreviews/public/reviews/a/a002212.htm ]

(2) After that, I would consider "Data Abstraction and Problem Solving with C++: Walls and Mirrors".  This is an academic type book, but I enjoyed it.  It's essentially a data structures book and has good coverage of commonly used sorting, searching, and traversal algorthms. [ACCU link: http://www.accu.org/bookreviews/public/reviews/d/d000420.htm ]

IDE: Really, to start off, a text editor is fine.

Forum: comp.lang.c++.moderated is okay, but the long post latency can be annoying.

Compiler: either the free Visual C++ compiler or the GNU tools (if you install cygwin, I think these come packaged with it.)

yet another anon
Friday, April 23, 2004

I want to amend my post.

Rocky is the best current Microsoft Office Assistant, but the late lamented Power Pup is still the all-time best Assistant.

Jorel on Software
Friday, April 23, 2004

If you know Assembly, great. Whenever you run into trouble, visualize hot it looks at byte level -- this always clears things up for me :)

It's either "remember an immense list of rules and exceptions" or "understand the binary representation and it all flows from there".

Alex.ro
Friday, April 23, 2004

Why do you need an IDE? What is wrong with DJGPP (free) and a syntax highlighter?

I would recommend C/C++ programming reference (by Herbet Schildt, published by McGraw Hill). The handiest desktop reference.

Aussie Chick
Friday, April 23, 2004

If you can afford it, get Visual Studio .Net.  The guys who say its crap are mad because it's different than the VS 6.  The complier is much more standards compliant, and the IDE is pretty darn good.

You'll need some books on windows programming.  Petzold is where you start.

Microsoft has some excellent news groups,  start with the microsoft.public.vc.* groups.

Jim Howard
Saturday, April 24, 2004

If you want a bells'n'whistles-style IDE with the screen full of small controls of all sorts, there's hardly a better IDE than KDevelop. Other people swear by Eclipse, for Java. (Me, I prefer a simple editor.)

Jonas B.
Saturday, April 24, 2004

"Petzold is where you start."

Petzold's book is probably the worst programming book I own, avoid this badly written, badly explained, C-code like the plague.

Mr Jack
Monday, April 26, 2004

*  Recent Topics

*  Fog Creek Home