Modern C Design

Filename: modern-c-design.pdf
ISBN: 0201704315
Release Date: 2001
Number of pages: 323
Author: Andrei Alexandrescu
Publisher: Addison-Wesley Professional

Download and read online Modern C Design in PDF and EPUB This title documents a convergence of programming techniques - generic programming, template metaprogramming, object-oriented programming and design patterns. It describes the C++ techniques used in generic programming and implements a number of industrial strength components.


C Coding Standards

Filename: c-coding-standards.pdf
ISBN: 0132654423
Release Date: 2004-10-25
Number of pages: 240
Author: Herb Sutter
Publisher: Pearson Education

Download and read online C Coding Standards in PDF and EPUB Consistent, high-quality coding standards improve software quality, reduce time-to-market, promote teamwork, eliminate time wasted on inconsequential matters, and simplify maintenance. Now, two of the world's most respected C++ experts distill the rich collective experience of the global C++ community into a set of coding standards that every developer and development team can understand and use as a basis for their own coding standards. The authors cover virtually every facet of C++ programming: design and coding style, functions, operators, class design, inheritance, construction/destruction, copying, assignment, namespaces, modules, templates, genericity, exceptions, STL containers and algorithms, and more. Each standard is described concisely, with practical examples. From type definition to error handling, this book presents C++ best practices, including some that have only recently been identified and standardized-techniques you may not know even if you've used C++ for years. Along the way, you'll find answers to questions like What's worth standardizing--and what isn't? What are the best ways to code for scalability? What are the elements of a rational error handling policy? How (and why) do you avoid unnecessary initialization, cyclic, and definitional dependencies? When (and how) should you use static and dynamic polymorphism together? How do you practice "safe" overriding? When should you provide a no-fail swap? Why and how should you prevent exceptions from propagating across module boundaries? Why shouldn't you write namespace declarations or directives in a header file? Why should you use STL vector and string instead of arrays? How do you choose the right STL search or sort algorithm? What rules should you follow to ensure type-safe code? Whether you're working alone or with others, C++ Coding Standards will help you write cleaner code--and write it faster, with fewer hassles and less frustration.


C Template Metaprogramming

Filename: c-template-metaprogramming.pdf
ISBN: 9780321623911
Release Date: 2004-12-10
Number of pages: 400
Author: David Abrahams
Publisher: Pearson Education

Download and read online C Template Metaprogramming in PDF and EPUB C++ Template Metaprogramming sheds light on the most powerful idioms of today's C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer. A metaprogram is a program that generates or manipulates program code. Ever since generic programming was introduced to C++, programmers have discovered myriad "template tricks" for manipulating programs as they are compiled, effectively eliminating the barrier between program and metaprogram. While excitement among C++ experts about these capabilities has reached the community at large, their practical application remains out of reach for most programmers. This book explains what metaprogramming is and how it is best used. It provides the foundation you'll need to use the template metaprogramming effectively in your own work. This book is aimed at any programmer who is comfortable with idioms of the Standard Template Library (STL). C++ power-users will gain a new insight into their existing work and a new fluency in the domain of metaprogramming. Intermediate-level programmers who have learned a few advanced template techniques will see where these tricks fit in the big picture and will gain the conceptual foundation to use them with discipline. Programmers who have caught the scent of metaprogramming, but for whom it is still mysterious, will finally gain a clear understanding of how, when, and why it works. All readers will leave with a new tool of unprecedented power at their disposal—the Boost Metaprogramming Library. Note: CD materials are only available with the print edition.


API Design for C

Filename: api-design-for-c.pdf
ISBN: 0123850045
Release Date: 2011-03-14
Number of pages: 472
Author: Martin Reddy
Publisher: Elsevier

Download and read online API Design for C in PDF and EPUB API Design for C++ provides a comprehensive discussion of Application Programming Interface (API) development, from initial design through implementation, testing, documentation, release, versioning, maintenance, and deprecation. It is the only book that teaches the strategies of C++ API development, including interface design, versioning, scripting, and plug-in extensibility. Drawing from the author's experience on large scale, collaborative software projects, the text offers practical techniques of API design that produce robust code for the long term. It presents patterns and practices that provide real value to individual developers as well as organizations. API Design for C++ explores often overlooked issues, both technical and non-technical, contributing to successful design decisions that product high quality, robust, and long-lived APIs. It focuses on various API styles and patterns that will allow you to produce elegant and durable libraries. A discussion on testing strategies concentrates on automated API testing techniques rather than attempting to include end-user application testing techniques such as GUI testing, system testing, or manual testing. Each concept is illustrated with extensive C++ code examples, and fully functional examples and working source code for experimentation are available online. This book will be helpful to new programmers who understand the fundamentals of C++ and who want to advance their design skills, as well as to senior engineers and software architects seeking to gain new expertise to complement their existing talents. Three specific groups of readers are targeted: practicing software engineers and architects, technical managers, and students and educators. The only book that teaches the strategies of C++ API development, including design, versioning, documentation, testing, scripting, and extensibility. Extensive code examples illustrate each concept, with fully functional examples and working source code for experimentation available online. Covers various API styles and patterns with a focus on practical and efficient designs for large-scale long-term projects.


Exceptional C

Filename: exceptional-c.pdf
ISBN: 0201615622
Release Date: 2000
Number of pages: 208
Author: Herb Sutter
Publisher: Addison-Wesley Professional

Download and read online Exceptional C in PDF and EPUB The puzzles and problems in Exceptional C++ not only entertain, they will help you hone your skills to become the sharpest C++ programmer you can be. Many of these problems are culled from the famous Guru of the Week feature of the Internet newsgroup comp.lang.c++, moderated, expanded and updated to conform to the official ISO/ANSI C++ Standard. Try your skills against the C++ masters and come away with the insight and experience to create more efficient, effective, robust, and portable C++ code.


Effective C

Filename: effective-c.pdf
ISBN: 0132702061
Release Date: 2005-05-12
Number of pages: 318
Author: Scott Meyers
Publisher: Pearson Education

Download and read online Effective C in PDF and EPUB “Every C++ professional needs a copy of Effective C++. It is an absolute must-read for anyone thinking of doing serious C++ development. If you’ve never read Effective C++ and you think you know everything about C++, think again.” — Steve Schirripa, Software Engineer, Google “C++ and the C++ community have grown up in the last fifteen years, and the third edition of Effective C++ reflects this. The clear and precise style of the book is evidence of Scott’s deep insight and distinctive ability to impart knowledge.” — Gerhard Kreuzer, Research and Development Engineer, Siemens AG The first two editions of Effective C++ were embraced by hundreds of thousands of programmers worldwide. The reason is clear: Scott Meyers’ practical approach to C++ describes the rules of thumb used by the experts — the things they almost always do or almost always avoid doing — to produce clear, correct, efficient code. The book is organized around 55 specific guidelines, each of which describes a way to write better C++. Each is backed by concrete examples. For this third edition, more than half the content is new, including added chapters on managing resources and using templates. Topics from the second edition have been extensively revised to reflect modern design considerations, including exceptions, design patterns, and multithreading. Important features of Effective C++ include: Expert guidance on the design of effective classes, functions, templates, and inheritance hierarchies. Applications of new “TR1” standard library functionality, along with comparisons to existing standard library components. Insights into differences between C++ and other languages (e.g., Java, C#, C) that help developers from those languages assimilate “the C++ way” of doing things.


Elements of Programming

Filename: elements-of-programming.pdf
ISBN: 9780321635372
Release Date: 2009
Number of pages: 262
Author: Alexander A. Stepanov
Publisher: Addison-Wesley Professional

Download and read online Elements of Programming in PDF and EPUB New techniques for building more secure, reliable, high-performance software, from the renowned creator of the C++ STL • • A truly foundational book on the discipline of generic programming: how to write better software by mastering the development of abstract components. • Based on Alexander Stepanov's breakthrough lectures to programmers at Adobe and throughout Silicon Valley. • For serious software developers, architects, and engineers, the perfect complement to Knuth's theory and Stoustrup's practice. Elements of Programming is the next breakthrough book for serious practitioners seeking ways to write better software. In this book, Alexander Stepanov - the legendary architect and creator of the C++ Standard Template Libraries - focuses on the discipline that offers the greatest potential for improving contemporary software: the proper development of abstract components. Drawing on his enormously popular lectures to programmers at Adobe and throughout Silicon Valley, Stepanov illuminates crucial techniques of generic programming, specifically focusing on abstraction as the key to secure, reliable, and high-performance software. Together with co-author and ACM Fellow Paul McJones, Stepanov shows programmers how to use mathematics to compose reliable algorithms from components, and to design effective interfaces between algorithms and data structures. Topics covered in Elements of Programming include: transformations, associative operations, linear orderings, ordered algebraic structures, iterators, coordinates and coordinate structures, copying algorithms, rearrangement, sorting, and much more. This book requires an understanding of mathematics, but is consistently focused on identifying superior solutions to practical programming problems. Stepanov and McJones illuminate their concepts and techniques with C++ code, but the techniques are equally applicable to a wide range of contemporary object-oriented languages.


C Templates

Filename: c-templates.pdf
ISBN: 0672334054
Release Date: 2002-11-12
Number of pages: 552
Author: David Vandevoorde
Publisher: Addison-Wesley Professional

Download and read online C Templates in PDF and EPUB Templates are among the most powerful features of C++, but they are too often neglected, misunderstood, and misused. C++ Templates: The Complete Guide provides software architects and engineers with a clear understanding of why, when, and how to use templates to build and maintain cleaner, faster, and smarter software more efficiently. C++ Templates begins with an insightful tutorial on basic concepts and language features. The remainder of the book serves as a comprehensive reference, focusing first on language details, then on a wide range of coding techniques, and finally on advanced applications for templates. Examples used throughout the book illustrate abstract concepts and demonstrate best practices. Readers learn The exact behaviors of templates How to avoid the pitfalls associated with templates Idioms and techniques, from the basic to the previously undocumented How to reuse source code without threatening performance or safety How to increase the efficiency of C++ programs How to produce more flexible and maintainable software This practical guide shows programmers how to exploit the full power of the template features in C++. The companion Web site at http://www.josuttis.com/tmplbook/ contains sample code and additional updates.


Large scale C Software Design

Filename: large-scale-c-software-design.pdf
ISBN: 0201633620
Release Date: 1996
Number of pages: 846
Author: John Lakos
Publisher: Addison-Wesley Professional

Download and read online Large scale C Software Design in PDF and EPUB In designing large-scale C++ applications, you are entering a dimension barely skimmed by most C++ books, particularly considering experience with small programming projects does not scale up to larger projects. This book unites high-level design concepts with specific C++ programming details to reveal practical methods for planning and implementing high-quality large C++ systems. You will learn the importance of physical design in large systems, how to structure your software as an acyclic hierarchy of components, and techniques for reducing link-time and compile-time dependencies. Then the book turns to logical design issues--architecting a component, designing a function, and implementing an object--all in the context of a large-project environment.


From Mathematics to Generic Programming

Filename: from-mathematics-to-generic-programming.pdf
ISBN: 9780133491784
Release Date: 2014-11-13
Number of pages: 320
Author: Alexander A. Stepanov
Publisher: Addison-Wesley Professional

Download and read online From Mathematics to Generic Programming in PDF and EPUB In this substantive yet accessible book, pioneering software designer Alexander Stepanov and his colleague Daniel Rose illuminate the principles of generic programming and the mathematical concept of abstraction on which it is based, helping you write code that is both simpler and more powerful. If you’re a reasonably proficient programmer who can think logically, you have all the background you’ll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem. As you read this book, you’ll master the thought processes necessary for effective programming and learn how to generalize narrowly conceived algorithms to widen their usefulness without losing efficiency. You’ll also gain deep insight into the value of mathematics to programming—insight that will prove invaluable no matter what programming languages and paradigms you use. You will learn about How to generalize a four thousand-year-old algorithm, demonstrating indispensable lessons about clarity and efficiency Ancient paradoxes, beautiful theorems, and the productive tension between continuous and discrete A simple algorithm for finding greatest common divisor (GCD) and modern abstractions that build on it Powerful mathematical approaches to abstraction How abstract algebra provides the idea at the heart of generic programming Axioms, proofs, theories, and models: using mathematical techniques to organize knowledge about your algorithms and data structures Surprising subtleties of simple programming tasks and what you can learn from them How practical implementations can exploit theoretical knowledge


Effective Modern C

Filename: effective-modern-c.pdf
ISBN: 9781491908426
Release Date: 2014-11-11
Number of pages: 334
Author: Scott Meyers
Publisher: "O'Reilly Media, Inc."

Download and read online Effective Modern C in PDF and EPUB Coming to grips with C++11 and C++14 is more than a matter of familiarizing yourself with the features they introduce (e.g., auto type declarations, move semantics, lambda expressions, and concurrency support). The challenge is learning to use those features effectively—so that your software is correct, efficient, maintainable, and portable. That’s where this practical book comes in. It describes how to write truly great software using C++11 and C++14—i.e. using modern C++. Topics include: The pros and cons of braced initialization, noexcept specifications, perfect forwarding, and smart pointer make functions The relationships among std::move, std::forward, rvalue references, and universal references Techniques for writing clear, correct, effective lambda expressions How std::atomic differs from volatile, how each should be used, and how they relate to C++'s concurrency API How best practices in "old" C++ programming (i.e., C++98) require revision for software development in modern C++ Effective Modern C++ follows the proven guideline-based, example-driven format of Scott Meyers' earlier books, but covers entirely new material. "After I learned the C++ basics, I then learned how to use C++ in production code from Meyer's series of Effective C++ books. Effective Modern C++ is the most important how-to book for advice on key guidelines, styles, and idioms to use modern C++ effectively and well. Don't own it yet? Buy this one. Now". -- Herb Sutter, Chair of ISO C++ Standards Committee and C++ Software Architect at Microsoft


Applied C

Filename: applied-c.pdf
ISBN: 0321108949
Release Date: 2003
Number of pages: 330
Author: Philip Romanik
Publisher: Addison-Wesley Professional

Download and read online Applied C in PDF and EPUB * *Effective, practical tips for building fast, real, and robust C++ programs. *Solutions-based: Discusses ideal solutions versus practical solutions and the tradeoffs of various design decisions. *Concrete case study runs throughout the book and shows how to develop quality C++ software.


A Tour of C

Filename: a-tour-of-c.pdf
ISBN: 9780133549003
Release Date: 2013-09-16
Number of pages: 192
Author: Bjarne Stroustrup
Publisher: Addison-Wesley

Download and read online A Tour of C in PDF and EPUB The C++11 standard allows programmers to express ideas more clearly, simply, and directly, and to write faster, more efficient code. Bjarne Stroustrup, the designer and original implementer of C++, thoroughly covers the details of this language and its use in his definitive reference, The C++ Programming Language, Fourth Edition. In A Tour of C++ , Stroustrup excerpts the overview chapters from that complete reference, expanding and enhancing them to give an experienced programmer–in just a few hours–a clear idea of what constitutes modern C++. In this concise, self-contained guide, Stroustrup covers most major language features and the major standard-library components–not, of course, in great depth, but to a level that gives programmers a meaningful overview of the language, some key examples, and practical help in getting started. Stroustrup presents the C++ features in the context of the programming styles they support, such as object-oriented and generic programming. His tour is remarkably comprehensive. Coverage begins with the basics, then ranges widely through more advanced topics, including many that are new in C++11, such as move semantics, uniform initialization, lambda expressions, improved containers, random numbers, and concurrency. The tour ends with a discussion of the design and evolution of C++ and the extensions added for C++11. This guide does not aim to teach you how to program (see Stroustrup’s Programming: Principles and Practice Using C++ for that); nor will it be the only resource you’ll need for C++ mastery (see Stroustrup’s The C++ Programming Language, Fourth Edition, for that). If, however, you are a C or C++ programmer wanting greater familiarity with the current C++ language, or a programmer versed in another language wishing to gain an accurate picture of the nature and benefits of modern C++, you can’t find a shorter or simpler introduction than this tour provides.


Effective STL

Filename: effective-stl.pdf
ISBN: 013270207X
Release Date: 2001-06-06
Number of pages: 279
Author: Scott Meyers
Publisher: Pearson Education

Download and read online Effective STL in PDF and EPUB “This is Effective C++ volume three – it’s really that good.” – Herb Sutter, independent consultant and secretary of the ISO/ANSI C++ standards committee “There are very few books which all C++ programmers must have. Add Effective STL to that list.” – Thomas Becker, Senior Software Engineer, Zephyr Associates, Inc., and columnist, C/C++ Users Journal C++’s Standard Template Library is revolutionary, but learning to use it well has always been a challenge. Until now. In this book, best-selling author Scott Meyers ( Effective C++ , and More Effective C++ ) reveals the critical rules of thumb employed by the experts – the things they almost always do or almost always avoid doing – to get the most out of the library. Other books describe what’s in the STL. Effective STL shows you how to use it. Each of the book’s 50 guidelines is backed by Meyers’ legendary analysis and incisive examples, so you’ll learn not only what to do, but also when to do it – and why. Highlights of Effective STL include: Advice on choosing among standard STL containers (like vector and list), nonstandard STL containers (like hash_set and hash_map), and non-STL containers (like bitset). Techniques to maximize the efficiency of the STL and the programs that use it. Insights into the behavior of iterators, function objects, and allocators, including things you should not do. Guidance for the proper use of algorithms and member functions whose names are the same (e.g., find), but whose actions differ in subtle (but important) ways. Discussions of potential portability problems, including straightforward ways to avoid them. Like Meyers’ previous books, Effective STL is filled with proven wisdom that comes only from experience. Its clear, concise, penetrating style makes it an essential resource for every STL programmer.


Introduction to Design Patterns in C with Qt

Filename: introduction-to-design-patterns-in-c-with-qt.pdf
ISBN: 9780132851633
Release Date: 2011-08-29
Number of pages: 768
Author: Alan Ezust
Publisher: Prentice Hall

Download and read online Introduction to Design Patterns in C with Qt in PDF and EPUB Master C++ “The Qt Way” with Modern Design Patterns and Efficient Reuse This fully updated, classroom-tested book teaches C++ “The Qt Way,” emphasizing design patterns and efficient reuse. Readers will master both the C++ language and Qt libraries, as they learn to develop maintainable software with well-defined code layers and simple, reusable classes and functions. Every chapter of this edition has been improved with new content, better organization, or both. Readers will find extensively revised coverage of QObjects, Reflection, Widgets, Main Windows, Models and Views, Databases, Multi-Threaded Programming, and Reflection. This edition introduces the powerful new Qt Creator IDE; presents new multimedia APIs; and offers extended coverage of Qt Designer and C++ Integration. It has been restructured to help readers start writing software immediately and write robust, effective software sooner. The authors introduce several new design patterns, add many quiz questions and labs, and present more efficient solutions relying on new Qt features and best practices. They also provide an up-to-date C++ reference section and a complete application case study. Master C++ keywords, literals, identifiers, declarations, types, and type conversions. Understand classes and objects, organize them, and describe their interrelationships. Learn consistent programming style and naming rules. Use lists, functions, and other essential techniques. Define inheritance relationships to share code and promote reuse. Learn how code libraries are designed, built, and reused. Work with QObject, the base class underlying much of Qt. Build graphical user interfaces with Qt widgets. Use templates to write generic functions and classes. Master advanced reflective programming techniques. Use the Model-View framework to cleanly separate data and GUI classes. Validate input using regular expressions and other techniques. Parse XML data with SAX, DOM, and QXmlStreamReader. Master today’s most valuable creational and structural design patterns. Create, use, monitor, and debug processes and threads. Access databases with Qt’s SQL classes. Manage memory reliably and efficiently. Understand how to effectively manage QThreads and use QtConcurrent algorithms. Click here to obtain supplementary materials for this book.