[OT sort of] Recommended Reading

M

Michael

What books would you guys put as essential reading on your book shelves? For
instance I think that "Code Complete", "Effective C++" and "Design Patterns"
have all greatly improved my c++.
Any thoughts??
Mike
 
D

David Hilsee

Michael said:
What books would you guys put as essential reading on your book shelves? For
instance I think that "Code Complete", "Effective C++" and "Design Patterns"
have all greatly improved my c++.
Any thoughts??

"The C++ Programming Language" and "Modern C++ Design" are excellent books.
Sutter's "Guru of the Week" articles are also good, as are his books (e.g.
"Exceptional C++"). "The Design and Evolution of C++" answers a lot of
questions concerning why the language is the way it is. Also, "Large Scale
C++ Software Design" provides (sometimes outdated) guidance for developing
larger C++ programs. I'd say that all of these books are great, and I'd
rank them in the order that I listed them.
 
J

John Harrison

Michael said:
What books would you guys put as essential reading on your book shelves?
For
instance I think that "Code Complete", "Effective C++" and "Design
Patterns"
have all greatly improved my c++.
Any thoughts??
Mike

'More Effective C++' is also excellent.

john
 
J

JKop

Michael posted:
What books would you guys put as essential reading on your book
shelves? For instance I think that "Code Complete", "Effective C++" and
"Design Patterns" have all greatly improved my c++.
Any thoughts??
Mike


Well, just for perspective, I've learned more in this newsgroup than I have
in any book. . .


-JKop
 
M

Michael Kurz

Michael said:
What books would you guys put as essential reading on your book shelves? For
instance I think that "Code Complete", "Effective C++" and "Design Patterns"
have all greatly improved my c++.
Any thoughts??


For C++ I liked:
[1] Object Oriented Programming in C++ , Josuttis N
[2] The C++ Programming Language
[3] Excpetional C++
[4] Modern C++ Design


Language independent:
[5] Design Patterns, GoF
[6] Pragmatic Programming, Hunt A

Wheres [6] in my case lead automatically to:
[7] Perl programming, Larry Wall
[8] Programming Ruby, Hunt A (you see I like Andrew Hunt's book)
[9] Lexx & Yacc, Helmut Herold (I have it in German, dont know if its
available in English as well)


Regards
Michael
 
O

osmium

Michael posted:
I would certainly include the printed version of _C++ FAQs_ by Marshall
Cline in any list of must reads for C++/
 
P

Phlip

[Books are on-topic, guys...]
What books would you guys put as essential reading on your book shelves? For
instance I think that "Code Complete", "Effective C++" and "Design Patterns"
have all greatly improved my c++.
Any thoughts??

Reposted from c.l.c++.mod:
I've read the sams publishing Teach yourself c++ in 21 days.. can anyone
recommend any more books to aid me in my quest of becomming a proficient
C++ programmer?

Within each category, I sort in order from entry-level to advanced. Note
that some books (shamefully) reference languages other than C++. Learn the
languages and read the books to become a better C++ programmer.

These books introduce some topics they probably didn't teach you in
school...

Firstly, books directly about C++ coding and designing:

* Accelerated C++: Practical Programming by Example by Andrew Koenig &
Barbara E. Moo
* Effective C++ 2nd Edition by Scott Meyers
* More Effective C++ by Scott Meyers
* The C++ Programming Language 3rd Edition by Bjarne Stroustrup
* Large Scale C++ Software Design by John Lakos
* Scientific and Engineering C++: An Introduction with Advanced Techniques
and Examples by John J. Barton, Lee R. Nackman
* C++ Coding Standards: Rules, Guidelines, and Best Practices by Herb Sutter
& Andrei Alexandrescu
* Modern C++ Design: Generic Programming and Design Patterns Applied by
Andrei Alexandrescu
* Exceptional C++ by Herb Sutter
* More Exceptional C++ by Herb Sutter


Next, books about design:

* Design Patterns: elements of reusable object-oriented software by Gamma,
Johnson, Helm, & Vlissides
* Refactoring: Improving the Design of Existing Code by Martin Fowler
* Refactoring to Patterns by Joshua Kerievsky
* Smalltalk Best Practice Patterns by Kent Beck
* Domain Driven Design: Tackling Complexity in the Heart of Software by Eric
Evans
* The Art of Computer Programming by Knuth


Books about the culture of programming around the source code:

* Lean Software Development: An Agile Toolkit for Software Development
Managers by Mary Poppendieck and Tom Poppendieck
* Extreme Programming eXplained: Embrace Change, 2nd Edition, by Kent Beck
* Agile Development: Principles Practices and Patterns by Robert C. Martin

* AntiPatterns: refactoring software, architectures, and projects in crisis
by Brown, Malveau, McCormick & Mowbray
* The Pragmatic Programmer: From Journeyman to Master by Andy Hunt & Dave
Thomas
* Rapid Development: Taming Wild Software Schedules by Steve McConnell


How to preventing long open-ended debugging sessions:

* Test-Driven Development: By Example by Beck
* Code Complete 2nd Edition by Steve McConnell
* Test Driven Development: A Practical Guide, by Dave Astels
* How to Break Software: A Practical Guide to Testing by James A. Whittaker


Specific programming scenarios:

* C++ GUI Programming with Qt 3 by Jasmin Blanchette & Mark Summerfield
* Developing International Software 2nd Edition by Dr. International
* Working Effectively with Legacy Code by Mike Feathers


/C++ GUI Programming with Qt 3/ is especially noteworthy because, unlike
most other GUI Toolkits, C++ does not wrap Qt. Its inventors architected Qt
directly in C++, using only the finest OO idioms.

The TDD books are especially noteworthy because, as you start writing
programs larger than a couple modules, you will discover that most
programmers spend most of their time debugging. The solution to this
connundrum is so simple it shouldn't need a book, but our industry has a lot
of "antipatterns" to overcome. The solution is to write tests for every kind
of behavior you need, to only add code when you can get a test to fail, and
to use Undo if a test fails unexpectedly (and you don't feel like applying a
light amount of debugging). Replacing our advanced interactive debuggers
with an Undo button helps code's behavior never depart from a known state.
Prevention is better than a cure.

The Refactoring books are significant because, no matter how smart you are,
you will always write code whose design could be improved after you read it.
You could fight this effect, by planning on paper for a long time, or you
can leverage it. Refactoring fits TDD like a glove.

Smalltalk (and Python & Ruby) is a strongly typed dynamic language. C++ is
an almost-strongly typed static language that introduces generics to cover
some dynamic typing abilities. Curiously, the higher level your code, the
more dynamic typing you need. Dynamic typing means that foo.bar() will
compile and execute no matter what type 'foo' is, so long as it has a method
'bar()'. This works as if all objects inherited a common interface, Object,
that magically declared every possible method.

Curiously, the big software vendors keep pushing statically typed languages,
Java & C#, while high-level code, such as GUI code or business-logic code,
typically must bend over backwards to provide dynamic typing. Free and
powerful languages, such as Ruby, supported entirely by their own programmer
communities, are going to teach these big software vendors a thing or to.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top