Where Do We Go From Here?. Jim Fawcett CSE687 – Object Oriented Design Spring 2005. C++ in Depth. The C++ Programming Language, 3 rd Edition, Bjarne Stroustrup, Addison-Wesley, 1997 Complete and accurate The C++ Standard Library, Nicolai Josuttis, Addison-Wesley,1999
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Where Do We Go From Here? Jim Fawcett CSE687 – Object Oriented Design Spring 2005
C++ in Depth • The C++ Programming Language, 3rd Edition, Bjarne Stroustrup, Addison-Wesley, 1997 • Complete and accurate • The C++ Standard Library, Nicolai Josuttis, Addison-Wesley,1999 • Very readable, and fairly complete. • Some of the examples are over-simplified. • C++ Coding Standards, Alexandrescu and Sutter, Addison-Wesley, 2005 • Excellent review of what we covered in this class. Recommended study for interviews. • C++ Common Knowledge, Stephen Dewhurst, Addison-Wesley, 2005 • Clear, consise intermediate level discussion of C++ design issues and idoms. • Modern C++ Design, Andrei Alexandrescu, Addison-Wesley, 2001 • Most sophisticated book on templates I’ve seen. • C++ Gotchas, Stephen Dewhurst, Addison-Wesley, 2003 • 99 items that describe common errors and correct methods • Effective STL, Scott Meyers, Addison-Wesley, 2001 • 50 items that describe common errors and correct methods • Exceptional C++, Herb Sutter, Addison-Wesley, 2000 • 47 items that describe common errors and correct methods.
Gentler C++ • Accelerated C++, Andrew Koenig and Barbara Moo, Addison-Wesley, 2000 • Starts with the STL and procedural programming. • Builds up to classes, class relationships, and polymorphism. • C++ Primer Plus, Third Edition, Stephen Prata, Waite Group, 1998 • Large, thorough coverage of the C++ Language with lots of small examples.
Object Oriented Design • Design Patterns, Erich Gamma, et. al., Addison-Wesley, 1995 • This wonderful book is the text we use in the summer course of that name. You have to write software using the patterns to understand in detail what the book is saying, but well worth reading even if you don’t follow my advice. • CSE776 - Design Patterns Course • Presentations and discussions of 23 patterns from the book and half a dozen from other places. • A relaxed, reflective look at OOD, with an orientation toward C++ • Excellent practice making technical presentations, much like those you will be required to give when working professionally. But this is a much more forgiving atmosphere – a chance to learn these skills with help from the instructor and your classmates.
Is it Worthwhile to Study C++ Further? • C++ is the system programming language for the foreseeable future. • Standards work, focused on the library, may provide more platform tools like threading, directory support, and smart pointers. • Only language that works in both managed and unmanaged code. • C# and the .Net Framework are the best language/library/runtime combination available for the Windows platform. • Usability is excellent for beginners as well as experts • Intellisense and object browser are terrific tools • Best integrated over the desktop and server platforms • Becoming available on non-Wintel platforms • Mono, GNUdotNet • Java and J2EE have a large installed base but … • My personal opinion is that Sun no longer has the financial muscle to vigorously support the Java infrastructure. • They have continually refused to surrender any control over the language and packages to a standards body.
My Favorite Language • C++ is my favorite programming language. Why? • Deep copy model is by far the best model for scientific computing. You need real object identity to implement algorithms effectively, not just “assignment makes another reference”. • I believe it’s easier to elegantly structure programs using C++: • Templates • Rich memory model • Exceptional control over program execution. • Global functions as well as classes. • The STL provides a very powerful collection of containers and algorithms. • It’s easier to build complex data structures with the STL than anything else I’ve used.
Open Libraries • Loki library • http://www.moderncppdesign.com/ • Exploits template policy and template metaprogramming to provide flexible tools for implementing C++ programs: • Smart pointers • Generalized functors • Object factories • Boost library • www.boost.org • An open-source set of libraries started by members of the C++ standardization committee. • Many useful capabilities for C++ • Graphs • Math • testing
Other Links • Association of C/C++ Users • www.accu.org • Book reviews and links • UML Tutorial: • bdn.borland.com/article/0,1410,31863,00.html • Stroustrup's Home Page • www.research.att.com/~bs/homepage.html • Code Project • www.codeproject.com • Chris Sells • www.sellsbrothers.com • Guru of the Week • www.gotw.ca • C/C++ User's Journal • www.cuj.com • Dr. Dobb's Journal • www.ddj.com • techNetCast • http://technetcast.ddj.com