Sign In | Not yet a member? | Submit your article
 
Home   Technical   Study   Novel   Nonfiction   Health   Tutorial   Entertainment   Business   Magazine   Arts & Design   Audiobooks & Video Training   Cultures & Languages   Family & Home   Law & Politics   Lyrics & Music   Software Related   eBook Torrents   Uncategorized  
Letters: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Imperfect C Plus Plus Practical Solutions for Real Life Programming
Imperfect C Plus Plus Practical Solutions for Real Life Programming
Date: 19 January 2011, 08:15

Free Download Now     Free register and download UseNet downloader, then you can FREE Download from UseNet.

    Download without Limit " Imperfect C Plus Plus Practical Solutions for Real Life Programming " from UseNet for FREE!
Imperfect C++ Preface Maybe I don t love C++ the same way I love my kids, nor even as much as climbing 10% smooth tarmac in 32 on the rivet, 1 although at times it does come close. But I do count myself blessed that I get to spend the parts of my life that are devoted to work in the practice of, to paraphrase Frederick P. Brooks, "creation by exertion of my imagination." I consider myself doubly blessed that I have at my disposal the singularly powerful, dangerous, and spellbinding language that is C++. That all sounds very hearts and flowers, but you may have picked up this book because the title suggests that it will be a beat-up of C++. Indeed, you may be an aficionado of Java, or C, or another of the popular major languages, and have seized on a copy of Imperfect C++ eager to find evidence to justify why you ve given C++ a wide berth. If that is you, you may be disappointed, because this book is rather a critical celebration of C++. But stick around anyway; you might find some reasons why you should start looking towards C++ instead. What You Will Learn I wrote this book to empower fellow developers. It takes a critical, but constructive, look at C++ and its imperfections, and presents practical measures for avoiding or ameliorating them. When you ve read it, I hope you ll have a better grasp of: How to overcome several of the deficiencies in C++ s type system The usefulness of template programming in increasing code flexibility and robustness How to survive in the realm of undefined behavior that which is not addressed by the standard including dynamic libraries, static objects, and threading The costs of implicit conversions, the troubles they bring, and the alternative of effective and manageable generalized programming via explicit conversions How to write software that is, or may more easily be made, compatible with other compilers, libraries, threading models, and the like What compilers do "behind the scenes" and how they may be influenced The tricky interoperability of arrays and pointers, and techniques by which they may be dissuaded from behaving like each other The power of C++ to support the Resource Acquisition Is Initialization mechanism and the variety of problem domains in which it can be applied How to minimize your effort by maximizing your compiler s ability to detect errors You will certainly be equipped to write code that is more efficient, more maintainable, more robust, and more flexible. It s my intention that even very experienced C++ practitioners will find new ideas and some new techniques with which to stimulate the mind and enhance their existing practice. Programmers with less experience will be able to appreciate the principles involved and to use the techniques within their own work, moving to fill any gaps in their understanding of the details of the techniques as their knowledge grows. I don t expect any of you to agree with everything that I have to say, but I do expect even the most contentious material to stimulate your understanding of your use of this formidable language. What I Assume You Know Unless one wants to write a very large book, a good degree of knowledge must be assumed. It would be churlish to stipulate that you have read a precise set of texts, but I do assume that you have knowledge and experience sufficient to be comfortable with most of the concepts contained in Scott Meyer s Effective C++ and Herb Sutter s Exceptional C++ series. I also assume that you have a copy of the language bible: Bjarne Stroustrup s The C++ Programming Language. I don t assume you ve read Stroustrup cover to cover I haven t (yet) but you should use it as the ultimate reference for the language, as there s a gem on every other page. Imperfect C++ contains a fair amount of template code which modern C++ book doesn t? but I do not assume that you re a guru 2 or have advanced knowledge of meta-programming. Nonetheless, it s probably best if you re at least familiar with using templates, such as those that form the popular parts of the C++ standard library. I have tried to keep the template use down to a reasonable level, but it has to be acknowledged that the support for templates is the very thing that allows C++ to "self-repair," and it is that, therefore, which largely accounts for the existence of this book. Since flexibility and practicality are big things with me, this is not a book whose code can only be used with a small minority of "bleeding edge" compilers; nearly everything in the book will work with just about any reasonably modern compiler (see Appendix A). Certainly there are good freely available compilers, and you can have confidence that your compiler will support the code. Wherever possible, I ve avoided reference to particular operating environments, libraries, and technologies. However, I do touch on several, so it would be useful, though by no means essential, to have some grounding in some of the following: COM and/or CORBA, dynamic libraries (UNIX and/or Win32), STL, threads (POSIX and/or Win32), UNIX, and Win32. The bibliography contains numerous references to good books on these and other subjects. It would also be useful to have familiarity with more than one machine architecture, though again this is not essential. Since C remains the lingua franca of interlanguage and operating system development, it continues to be an extremely important language. Notwithstanding that this is a book about C++, there are many areas in which the common heritage of C and C++ comes into focus, and I make no apologies for addressing both languages in those circumstances. Indeed, as we see in Part Two, we need to fall back on C to support several advanced uses of C++. There s one important assumption about you that I am making. I assume that you believe in doing quality work, and are motivated to finding new ways in which you can achieve this. This book cannot claim to be the sole source of such new ways of approaching C++. Rather it represents a practical, and in some cases heretical, look at the problems we all encounter with the language, and can at best form a part of your library of essential texts. The ultimate responsibility is yours. All the rest is just getting the best tools to back you up. Organization The main content of the book is divided into six parts. Each part is comprised of an introduction, followed by between five and seven chapters, each of which is further divided into relevant sections. Inspired by the title of the book, I try to highlight the actual imperfections, so you will find them throughout the text. In the early parts of the book, the imperfections come thick and fast, reflecting the relatively straightforward nature both of the imperfections themselves and of their solutions. Each subsection refers to a particular feature of the language and generally describes an imperfection. Wherever possible, a specific technique and/or software technology is presented which either answers the problem, or provides the developer with control over it. As the book progresses, the imperfections become less discrete and more significant, with correspondingly lengthy and detailed discussions. The book does not follow the modern "buffet" format, nor does it have a single contiguous thread requiring it to be read from front to back. Having said that, most of the later chapters are described in terms of, and will occasionally be built on, the content of earlier ones so, unless you re feeling perverse, you ll be better off reading it in order. However, once you ve read it once, you should be able to come back to any point for reference without needing to read the whole thing again. Within the chapters, sections generally follow a sequential format, so I would recommend that you read each chapter in that vein. In terms of difficulty, it s certainly the case that Parts One through Four follow a progression from reasonably straightforward to seriously demanding. 3 Although Parts Five and Six rely on some of the material from Parts Three and Four, they are considerably less challenging, and you should feel yourself cruising along to the appendixes. Following the main content of the book are four short appendixes. Appendix A details the compilers and libraries used in the research for Imperfect C++. Appendix B regales you with some of the slack-jawed blunders of a young C++ engineer, taking his first steps in the land of the double crosses. Appendix C describes the Arturius project, a free, open-source compiler-multiplexer, which is also included on the CD. Appendix D describes the contents of the CD-ROM. I have a very consistent, perhaps strict, coding style; you may well call it pedantic. Former colleagues and users of my libraries have certainly done so. But I do it the way I do because there are no unanswered questions as to where everything goes, which means I can come back to it years later and dive straight in. The downside is that I need a twenty-one-inch monitor and an industrial-strength laser printer. In order to minimize the effects of my coding style on the readability of Imperfect C++, I ve taken a few liberties in the code examples presented throughout the book. You ll see a lot of ellipses ( ... ) in the examples, and this generally means something that s either been covered in a previous related example, or reflects boilerplate code that we all use (e.g., the proscription of methods from client code access see section 2.2). Only the aspects of style that have manifest effects on reliability are discussed, in Chapter 17. 4 References One of the things that irritates me when reading C++ books is when the author stipulates a fact but does not make reference to the relevant section of the standard. So in addition to including references to relevant articles and books, wherever I make a statement as to the behavior of the language I have attempted to provide references in the C (C99) or C++ (C++98) standards. Supplementary Material CD-ROM The accompanying CD-ROM contains libraries, compilers (including many of the code techniques described in the book), test programs, tools, and other ...

DISCLAIMER:

This site does not store Imperfect C Plus Plus Practical Solutions for Real Life Programming on its server. We only index and link to Imperfect C Plus Plus Practical Solutions for Real Life Programming provided by other sites. Please contact the content providers to delete Imperfect C Plus Plus Practical Solutions for Real Life Programming if any and email us, we'll remove relevant links or contents immediately.



Comments

Comments (0) All

Verify: Verify

    Sign In   Not yet a member?


Popular searches