Hi everyone!
Now I try to fresh up my C++ knowledge and look across by book shelf.
I 'm not completely satisfied with the C++ books I have here.
What are your favorite C++ books you read - and keep readind from time to time?
Eugen
Printable View
Hi everyone!
Now I try to fresh up my C++ knowledge and look across by book shelf.
I 'm not completely satisfied with the C++ books I have here.
What are your favorite C++ books you read - and keep readind from time to time?
Eugen
I'm still a C++ newbie and I haven't read a lot of books about C++ yet. The book I liked the most so far was probably »Who's Afraid of C++«. It was a very nice and easy introduction to C++. If anyone knows of any similar or even better C++/Qt books for newbies just let us know.
My personal favorite is "C++ Primer" by Stanley B. Lippman and Josée Lajoie. I've learned C++ from it.Quote:
Originally Posted by eugen
Try "C++ GUI Programming with Qt 3" by Jasmin Blanchette and Mark Summerfield. It's a very nice book to learn Qt3 from. You can download it for free from this site.Quote:
Originally Posted by jlp
The C++ Programming Language by Bjarne Stroustrup.
Effective C++: 55 Specific Ways to Improve Your Programs and Designs, 3rd Edition by Scott Meyers
As for Qt related programming, the book jacek mentioned is pretty much the Qt book and its all you need, plus the docs :).
Bojan
A good reference is C++ in a Nutshell although it lacks the examples in the Lippman or Stroustrup texts the answers are right there.
The Qt3 book already mentioned is a MUST HAVE (I even PAID for it!) (They even had it at Barnes and Noble!)
of course when I got it Qt4.1 rc 1 was already out (and I wasn't going to start using an old version!) so I pretty much used it to just get an idea about HOW to use Qt since some of the syntax is a little different.
C++ In Plain English is a great reference book, especially for people moving from 'plain old' C to C++. (Which I did kicking and screaming, BTW and now would never go back) It touches on many topics but puts a lot of focus on object orientation and skims over things like int,long,float,printf,arrays,etc (eg. things you should already know unless you are completely new to this)
Not a C++ book, but the O'Reilly Pocket Reference on Regular Expressions is quite helpful even though it is REALLY meant for Java, C#, and PHP
Katrina
The Complete Reference - Herbert Schildt
And of Course the
C++ GUI Programming with Qt 3 - Jasmin Blanchette and Mark Summerfield
Thanks to trolltech for providing the ebook for free download.
Deitel produces thorough books about programming.
Once you have the basics down Effective C++ by Scott Meyers is essential :D
Hi
Begginers C++:
Bjarne Stroustrup
The C++ Programming Language
Advanced C++:
Herb Sutter
Exceptional C++, More Execptional C++
Andrei Alexandrescu
Modern C++ Design
Andrei Alexandrescu, Herb Sutter
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
Best Regards
Can someone recommend any position on Programming Patterns (preferrably with C++ examples)?
I've just found an e-book "Thinking in Patterns with Java", http://www.pythoncriticalmass.com/do...tterns-0.9.zip .
But it would be nice to get something with C++ code!
regards!
There can be only one answer ;)Quote:
Originally Posted by tomek
Design Patterns. Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
PS. Recently a Polish translation was published by WNT.
I am a complete C++ newbie, and I' m reading You Can Do It! : A Beginners Introduction to Computer Programming by Francis Glassborow. I find it quite easy to follow for people without any programming experience (some knowledge of Python might help, though).
After getting the basics, I'll go on with Accelerated C++: Practical Programming by Example by Andrew Koenig and Barbara E. Moo.
Afterwards I plan to read C++ GUI Programming with Qt 3 by Jasmin Blanchette and Mark Summerfield, and finally, as time permits, other advanced C++ books (Alexandrescu, Sutter, Meyers, etc).
Schildt's C++ The complete reference
Meyers' Effective C++
Meyers' More Effective C++
Blanchette's & Summerfield's C++ GUI Programming with Qt 3
and qt assistant plus http://www.cppreference.com/
I am sure a lot of people don't agree with this next statement, but:
I would recomend to a new programmer to learn Java first, then C++. The high level of object oriented-ness is a good practice in C++ and it lets you learn HOW to program and how to think like a programmer without worrying about memory management (although Qt takes a ton of load off this!) and some of C++'s other "advanced" features. (plus the syntax a VERY similar)
I don't, however, know any good Java books... I learned Java b/c it is similar to other modern OO languages and I just read though the Javadoc's :-) and started coding away :-)
Katrina
"Thinking in Java"Quote:
Originally Posted by katrina
Learning Java first can make people hate programming because Java is soooo fast :p
LOL Yeah Java has to be one of the slowest frigin languages in the world... luckily most people nowadays are buying 300000GHz computers with 847583408MB RAM to check their email, use AIM, surf MySpace, and download illegal music so they can afford to use programs written in a language that should have taken their mascot from Logo. (until they get a couple virii and spywares 'cause that will eat up 299999.99GHz of their 300000GHz (Long live Linux))Quote:
Originally Posted by wysota
Gotta give Java one thing though... it is WAY portable... I mean c'mon even the Blackberry runs Java! (actually the entire Blackberry OS is written in Java!)
(Hmmm I seem to have gotten off topic here... back to C++ books:)
ummm... I already listed all of the C++ books I have... LOL I guess I will stop now :-)
Katrina
Well, yes, if you don't count situations, when your program written in java version 1.x.y.z runs, but refuses to run on 1.x.y.z+1. Or runs on SUN implementation and refuses to run on MS "implementation" (or orther).Quote:
Originally Posted by katrina
H. Deitel, P. Deitel, C++ how to program, 2nd edition. I own Eckel's Thinking in CPP and Stroustrup C++ Language, which I got as gifts, but Deitel is my favorite. It most surely is understandable to economist which want's to convert from c99 to c++. ;)Quote:
Originally Posted by eugen
Damian
I couldn't get through that book. Maybe it's because of poor Polish translation (it shows, that there was no linguistic editor), but I find it's language too convoluted to be easly understood.Quote:
Originally Posted by eXire
Damian
I took a rather strange way to learn programming:
- I started by C, when I 10 years old, I didn't understand anything and produced uggly spaghetti code
- then I learn z80 assembly and produced some pretty efficient code but I was fed up with hardware and..
- I came back to C++
code snippets and O'Reilly books helped me a lot
Java is fast??? :rolleyes: What kind of mental derangement do you suffer from? :D
Tom Swan's
GNU C++ For Linux
http://www.amazon.com/gp/product/078...lance&n=283155
I've had formal Java training. I hate Java, and not because it is too slooooowww, even with JIT.Quote:
Originally Posted by katrina
While doing research into alternative development tools and platforms for my department, I tried Eclipse and JDeveloper using Java against our Oracle backend to create our "Homestead" application. JDeveloper was (is?) better than Eclipse, but dealing with Enterprise Beans and the like was a royal PITA. Almost without fail, when I wanted to add special functionality and drilled down into the methods, I'd encounter the base method which had a warning that it was generated automatically and any changes would be lost. So sad, because then I'd have to subclass the generator to add the functionality I wanted. My second big complaint was that once I got the app built it was too slow to be useful.
So, I tried creating the Homestead app with Boa_Constructor and Python, also against Oracle. I really LOVED that tool combo. It was 5-10 times easier to develop in it than in JDeveloper, AND it was 10 times faster than the Java app. The second BIG PLUS was that all files were ASCII, including the screens, making version control of the screens easy. But, alas, the fly in the ointment was that Boa_Constructor is an aggregate tool and when updating it almost invariably wxWindows, or Python, or some library was the wrong version. Boa has some warts, like all tools, but the development cycle on Boa was/is too slow to commit to it. When they can combine all the components into a single tool that results in better version control then Boa will be a tool to revisit.
My next test was with RealBasic, a proprietary tool that runs on both Windows and Linux. I tried it primarily because I used to program in VB and it is a good GUI RAD tool, if you connect to a fast backend. The RealBasic test ended RealQuick because it failed the tutorial test - if you can't get the tool to work following the tutorial then folks aren't tending to business. For a proprietary tool that is a fatal mistake.
My last test was with QT3.3 using the demo version for Windows. Using the bootk "C++ GUI Programming with Qt 3", learning QT 3.3 was easy, with the fine help of people who visit this forum. Even while learning the ins&outs of the QT3.x Designer, the development of the Homestead app was very quick, again thanks to the help of the folks on this forum. I was able to create the Homestead test app in about 5 to 6 weeks, while learning C++ at the same time. My boss was reluctant to consider QT for our department because he prefered Java and he heard "horror" stories about how hard C++ is too learn. He also had misunderstandings about garbage collection (memory leaks) in C++. After my boss saw my demo app, learned that QT controls garbage collection, and visited the QT website to view their demo video, he approved the use of QT in our department. It will become the primary tool in our move toward platform independence.
Just about that time QT4 came out. It's development paradigm was totally different, more along the classic lines of C++ development, as I understand it. While I missed the old Designer at first, it didn't take me long to realize the superiority of the classic method, and its main feature -- total developer control. One no longer has to work around a Designer tool. (And Trolltech can divert resources from maintaining and improving what is essentiall a GUI RAD devl tool to their core product, the API.) I decided to redo Homestead from scratch. It took about two weeks, primarily gettting used to the new API and replacing QT3 stuff with QT4 stuff.
Oh, speed? While a certain report created using our original Visual FoxPro 6.0 app took 2 1/2 HOURS to generate, the same report with the QT4 app takes only 2 MINUTES 30 SECONDS!! While testing the JDeveloper solution I canceled the report request because I got tired of waiting.
So, Java isn't in my future. In fact, were I asked to drop QT and do all my work in Java I'd reconsider my pledge to work till I am 70 years old.
Personally I found Stroustrup's book to be over my head when I first tried to read it. At that point C++ was the first language I was learning, and the way he describes concepts in the book was too abstract for me to make any sense of them.
IMHO the best book for beginning or reviewing C++ is Bruce Eckel's Thinking in C++. The best thing that this book has going for it is that it's absolutely free!!! "Free" is always a good feature in a book, I think. The book describes C++ concepts from the point of view of a developer moving from C to C++, however, I have no experience in C and was still able to follow along easily. The book is a nice blend of theoretical explanation combined with practical code examples. Instead of trying to cover every C++ concept from beginning to end, Eckel's book is a sort of linear narritive that introduces concepts individually but then gradually elaborates on them as parts of a whole. He is also able to explain some of the logic behind the design of the language which I find makes it easier to remember how to use, and begins the book with a very good, high-level introduction to OOP.
While this sounds good in theory, I have seen it fail many times in practice. The problem is that C++, although an OO language, still necessitates learning and knowing lower level stuff. As well, OO concepts in C++ work differently than in Java. I think Java can help understanding OO and C++ concepts and maybe provide some sort of fast track into learning C++, but people who try to make a straight Java to C++ transition often have a lot of dificulty w/ pointers, and C'tor, CC'tor and D'tor concepts, and inheritence. I think it is lot wiser, if one knows Java, to learn C first and pointers, structs, etc.. just the basics. Then move on to C++. I think lots of people take the suggested approach Java -> C++, and I have seen lots of people in my school struggle when attemping this because they write C++ code Java style, and then end up not having any idea of what's actually going on when things begin to segfault. This is just my opinion, and isn't based on any strong empirical evidence or anything, just on my observations. I dont know. Anyway this may be OT, if so I am sorry.Quote:
I would recomend to a new programmer to learn Java first, then C++. The high level of object oriented-ness is a good practice in C++ and it lets you learn HOW to program and how to think like a programmer without worrying about memory management (although Qt takes a ton of load off this!) and some of C++'s other "advanced" features. (plus the syntax a VERY similar)
Bojan
yeah reviving an old thread but adding quality information to it. :)
Core C++: A Software Engineering Approach ( http://www.amazon.com/gp/product/0130857297/104-8958036-0173500?v=glance&n=283155"]link )
is flat out awesome in my book (hehe).
Java? Nah, start with Python. :D
Bruce Eckel's Thinking in C++. It is divided into two volumes, the first dealing with basic concepts, the second dealing with the more iffy stuff. Very clear examples and explenations. As a bonus, this book is downloadable for free. :)
http://www.bruceeckel.com/
Once beyond simple C++ syntax/semantics, I highly recommend
Nicolai M. Josuttis, "The C++ Standard Library: A Tutorial and Reference", Addison-Wesley, 1999.
I'm not looking through the entire thread to see if they've been mentioned already, but:
- Absolute C++, Savich
- Design Patterns, Gang of Four
- Refactoring, Fowler
- C++ For Game Programmers, Llopis
They're not all about C++ specifically, but they're all relevant. I especially recommend Design Patterns.
I prefer Bruce Eckel's Thinking in C++,
Volume 1, 2nd Edition
and Volume 2
It is available in pdf format online
regards :)
Let me post another one that I lately discovered:
Code Reading: The Open Source Perspective
I totally second that brcain. That's a real power users volume, but lucid enough for anyone who has learnt C++ but wants to master it.Quote:
Originally Posted by brcain
Well, I too think that learning Java is a nicer introduction to C++. The path I would recommend is C -> Java -> C++
I am glad you made it clear that it is a personal opinion. Language choice is really a matter of personal tastes and the nature of task at hand.Quote:
Originally Posted by GreyGeek
I find java incredibly more robust and formal, than C++. That makes it easier to develop compiler tool chains and IDEs for Java. The sheer number of refactoring and quick-fix features provided by Eclipse is a testimony to that.
About speed, Java is gaining ground with the help of native compilation. (See ClasspathShowcase and Fedora Eclipse.) Though it really is unfair to compare two languages based on speed, because there are a number of tradeoffs involved (portability, robustness, etc).
As of now, for desktops, I would use C++ to develop real world applications and Java for trying out new algorithms/concepts etc. (I am working on neural net simulation in Java, for example). But I do hope that Java gains more ground and becomes usable for real-world applications on the desktop.
I'm going to go out on a limb and recommend C++ as a first language. I never would have said this several years ago, but then I discovered "Practical C++ Programming" by Steve Oualline (O'Reilly). It a really great book that focuses on the core practical elements of C++. It's written for the beginner programmer, but doesn't treat him like a child.
I would also recommend avoiding IDEs like Visual Studio or KDevelop. Stick with a text editor and the command line until you learn the language.
I second that, ePharaoh. I've been developing with C++ for 15+ years now. And have just begun to learn Java. It would have been nice if C++ had included Java interfaces and packages.Quote:
Originally Posted by ePharaoh
Many people incorrectly assume Java is still interpreted. With just-in-time (JIT) compilitation, it can actually be faster since it can more accurately optimize to the target platform.Quote:
Originally Posted by ePharaoh
C++ : Effective Object-Oriented Software Construction
Dattatri
isbn 0130867691
I've been programming in c++ for about 7 years and this is one book that covers the advanced topics of c++. It starts out with polymorphism, where most books end with that topic. This is the book I use when looking up obscure and advanced topics.
* For newbies I recommand:
Sams Teach Yourself C++ For Linux In 21 Days With Cdrom
Liberty, Jesse
ISBN : 0672318954
This book is easy to read, and has all essentials in it. For those who do not which to program under Linux, just skip the Linux part. The C++ part is very nice on itself.
* Reference for advanced users with specific C++ problems, ofcourse:
The C++ Programming Language
Stroustrup, Bjarne
ISBN : 0201700735
Don't start with this book as a newbie. It is far to advanced, but to become a good c++ programmer someday you will have to read it ;)
* For Object Oriented programming:
An Introduction to Object-Oriented Programming
Timothy Budd
* Design patterns :
Design Patterns (Elements Of Reusable Object-Oriented Software)
Gamma, Erich
ISBN : 0201633612
I'd only get this book as a reference ... or as edb stated ... addressing very specific issues.Quote:
Originally Posted by edb
I rarely, rarely ever need to use this book. And with Internet resources so accessible it's becoming even less needed.
Quote:
Originally Posted by trochej
I am Chinese,and we have Chinese Edition of that book when in college.
But,I preferred the original.
think in C++(2 volumes) is also good C++ books,I think.
is the Design Patterns ,Gamma, Erich e-book available?
Design Patterns by GOF is really good. I also like the Deitel books and Effective C++. And the Qt book of course.
As for C++ vs. Java discussions in general I must say I find them quite silly, biased and prejudiced most of the time. I have both formal training and professional experience with both C++ and Java, and I must say that they are both great languages. Which language to pick really depends on what problem you have at hand. C++ is great on the desktop and on embedded. Java is great on the server and quite allright on embedded too. Both languages have quirks and, uhm, faults, but... please, base your discussion on something else than ignorance, prejudice and what you want to believe.
Talking about Java... have you guys checked out Jambi yet?
C++ Primer! I just bought I yesterday! :)
My most favorite c++ book is
Teach yourself c++ by Herbert Schildt <link>
The approach is awesome and beginners will surely find it easier to understand the basics of c++ very well. The excercies too helped a lot.
That book changed my life since that changed my path from windows to linux side.
Before I used to write crap code in the old turboc c++(3.0) and I didn't even have the slightest clue about standard c++ (lol).
After coming across that book I installed linux(cd from lib) for the first time so that I can get free standard c++ compiler (didn't have access to net at that time and hence no clue about devcpp).
I read an article about GUI design in c++ with Qt on linux in a magzine(PCQuest) and that prompted me to try Qt and Qt amazed me in the first gaze itself. And thats how I have been involved with qt and linux since then. :)
Other that that book I also found these useful
Thinking in C++ (Bruce Eckel)
Effective c++(Scott Meyer)
Most Effective c++ (Scott Meyer)
My first @ c++ book is http://www.koders.com/ 2006 the 2° ISBN-10: 3-89842-816-8
http://www.galileocomputing.de/katal...gp/titelID-899 is ok ....
I don have much C++ expirience, i have only 10 years expirience on php2,3,4,5 Class Object and 3 years http://gtk.php.net/ is nice to learn Class Object to balance theory and practice, without yawn, and 11 month QT..
Read
Effective C++, Third Edition by Scott Meyer
&
More Effective C++, by Scott Meyer
Does any body having e-book of "Introduction to Design Patterns in C++ with Qt 4" ?
well
1. The C++ Programming Language - Bjarne Stroustrup
( a very good book, has loads of thing but pretty difficult one )
2. The Complete Reference - C++ - Herb Schildt
(Explains things pretty simply)
3. Design Patterns - Eric Gamma et. al
( wanna read and re-read this one)
These are the one that I have and like most....however I intend to read the following ones
Effective C++ (Scott Meyer)
More Effective C++ (Scot Meyer)
I heard somewhere that Any Book written by Herb Schildt is not so good, including The Complete Reference, C++; I am an intermediate C++ user but have been following this book for a while.
What do you think ?? May be we should start a bad book topic..
Hello,
Do anyone know something about this ?
http://www.aw-bc.com/catalog/academi...412699,00.html
Hey! I had a PDP-8 class with Walter Savitch way back in the days of the dinosaurs! Glad to see he's moved on to C++.