C is a large language widely used in industrial software development. Its own complexity and the ability to solve real problems make it greatly academic research value and industrial value. Like the C language, C has been successful in many important fields.
However, an undeniable reality is in the field of low-order programming, C squeezed C and also suffering from the strong rebound of C, while in the field of high-order procedures, Java and C # are constantly eating C sites. Perhaps C and C are always a dream, perhaps Java and C # frenzy will eventually force C to return to the border - returning to it has a fundamental advantage development field: low-level system program design, high-level high-performance application design, Embedded programming and numerical scientific calculations. As such, I think this is not a good thing.
C attracts such intellectual investment, so that excellent works in this field, including heavyweight software products, libraries, and books, etc. The article "C programming four books" is a less stringent meaning is: the four books of C program design X five. Yes, in this article (and its next article), I recommend more than 20 C good books in a division, you can read it according to your needs.
TCPL and D & E
TCPL and D & E are referred to as "The C Programming Language" and "The Design and Evolution Of C " from Bjarne Stroustrup hands. I will listen out from them, first because Bjarne is the c language creator, then because than "first" is more important reason: these two books are unquestionable masterpieces in the C field. Said that they are C language Bible, not too.
Bjarne Stroustrup, The C Programming Language (Special 3rd Edition)
"C programming language (special edition)", Machinery Industry Press
"C programming language (special edition) (English copy version)", higher education publishing house
To date, TCPL is the most authoritative C reference manual except for C standard literature. Like most people's opinions, I think Bjarne's text language is not inferior to the language he created, at least I like this college's breath. This book has clear contours of C language, straightforward. It observes C from the perspective of C language creators, which is not made of any other authors and books - no people know how to use C than Bjarne.
This is a serious work, in the middle, advanced C developers are target readers. If you are an experienced C programmer, you need to know more essential C knowledge, this book is written for you. It's not that kind of book that makes you constantly stealing, you need to experience your heart, chew it repeatedly. In the reading process, please pay attention to Mr. Bjarne emphasized what, and therefore. I personally prefer the fourth part of this book "Use C to do design", which is difficult to see in a similar programming language book - I even think Bjarne should write this part independently write a book.
Bjarne Stroustrup, The Design and Evolution of C
"C language design and evolution", machinery industry publishing house
"C language design and evolution (English version)", Machinery Industry Press
D & E is a monograph on C language design principles, design decision-making and design philosophy. It clearly answers why C will become today and have not become another language. As a c language, Bjarne showed his unique and profound insight. In addition to widely praised language features, Bjarne did not avoid evading C characteristics that arouse controversial or even rejected, and he gave a logic strict and convincing explanation. Content covers the prehistoric era of C , with C, C design rules, standardization, library, memory management, multiple inheritance, template, etc., including important new features including unusions, runtime information, and namespace. In-depth discussion, respectively. Each C programmer should be able to deepen the understanding of this language in the interpretation of Bjarne.
What needs to be reminded again that these two books have concentrated, the amount of information is extremely large, please don't miss the Bjarne's seemingly idol.
Entry tutorial
Learning any language requires a process from getting started from the entrance to master, from the novice to the master. However, for a so-called newcomer, it is a finished newcomer, or a "new hand" familiar with some kind of language, even in a language program design area, it is difficult to build a man. Introduction? Different C novices need different entry books.
Andrew Koenig, Barbara E. MOO, Accelerated C : Practical Programming by Example
"Accelerated C Chinese", China Electric Press
Different C tutorials on the market, this book is not explained from "C C", but begins with authentic C characteristics. From the beginning, you will use the standard library to write programs. As the story is gradually, it will explain the foundation concept of these standard library components. In addition, the other C textbooks are different, this book is to pull the language and standard library in instances, the explanation of the latter is to provide support to the example program, not like the vast majority of C textbooks, example only use Auxiliary tools for demonstration language features and standard library usage.
The author is a world-class level in programming practices, education and training, and technical writing in the C field. I like this large number of fresh writing styles that use standard libraries and C language native features. In front of this textbook, all C textbooks that have almost so far are eclipsed or out of time. Although this textbook may have some avant-garde for domestic college education, I still have to recommend it to my peers. In the way, in Bjarne and my nearest communication, he evaluated this book: For experienced programmers to learn C , this book may be the best one in the world.
Stanley B.Lippman, Josee Lajoie, C Primer (3rd Edition)
"C Primer (3RD) Chinese version, China Electric Press
The name of this book is a bit misunderstood. Although the author claims that this book is written for C newcomers, whether it is its thickness or the depth of explanation, it doesn't seem. Perhaps it is a C tutorial that is "introduced from getting started" will be more suitable. I personally think it is not suitable for beginners who don't understand C - before reading this book, you should at least have a background knowledge of C or C , or at least have some other languages programming experience. Although this book omits some of the discussion of some advanced C features, it can still be called the most comprehensive C learning tutorial so far. In fact, if a C beginner is able to finish the book and complete the entire exercise of the "C Primer Answer Book", his level must enter the ranks of professional C programmers. I personally think that even if you already have TCPL, this book still has the value, because in many ways, it is more detailed than TCPL.
Stanley B. Lippman, Essential C
"Essential C Chinese version", Huazhong University of Science and Technology Press
"Essential C (Copy Edition)", China Power Press
This book can be considered to be a streamlined version of "C Primer". This book tells the most representative topics in C , including process programming, generic programming, object programming, object-oriented programming, template programming, and exception handling. Stanley reduces the threshold to the most basic level of C newcomers that have other language programming experiences, so that they can quickly start using C programming and exempt from the most of the "C Primer". It is guided by examples, trying to enable the reader to grasp the essence of C in the shortest time.
Maybe someone else to outline the C programming model (paradigm) requires hundreds of pages to be clear, but this book is incredible to do this. I personally like this full of technology, concise, and "there is something to say". This book also has a distinctive style: all program examples use standard library components to make people look new.
The above three books are not written in order to complete the whole programming. Fully C programming novice can read the new book of Francis Glassborow (not yet published): "a beginners Introduction to Computer Programming: You Can do it!". This is also the recommendation of Bjarne. Francis GlassBorow is the Chairman of Accu. His over the years, for many years, and his own C classic name is full, and his own natural will naturally cause great interest in the C community.
Efficient, robust programming
Two years ago I was responsible for a gateway program when I was responsible for a provincial power dispatch system project, which acquired power real-time information from the SCADA system. The communication interface uses an uncommonized database straight (this gateway program is connected to SQL Server 6.5, and the other end is connected to Oralce 8.1.6). Due to nearly 10,000 real-time measurements, all sampling updates or insertions will be obviously inefficient once. I built a memory library in the gateway program. The data obtained is first compared, and then determines whether to update the physical database (while also doing other more complex things ...), thus occupying two aspects of efficiency and resource Decreated the expected results.
This program has been running very well, but in a day after leaving the scene, the system administrator calls to call, saying that it is about the cause of network failure, sometimes this gateway program will crash - it has collapsed itself, the problem is It will also make Windows 2000 Advanced Server "Blue Screen"! In confession, I have never seen which non-donated program has this "energy resistance". Since I was busy with another big project, I couldn't go to the scene to debug. I finally only be carefully packaged with an abnormally handled code with an exception (I also made some other modifications ...). In this way, although there is no complete solving problem, the program is no longer so ugly. What does it mean to say such a footage here (I don't think this is a "tidi" when I think about the terrible bug. What I want to say is that for any software, it will leave strong and efficiency. For C programmers, it is not difficult to write an efficient program, but to write a service software that requires 7 X 24 hours, it is not so easy. You need to consider many factors, sometimes these factors are far away. Beyond the C language and development tool itself. As a programmer developing the actual project software, it is not to have a nail to accumulate experience. As long as we are enough, others' experience is often our good reference. In view of this, I recommend the following books for you to read, you can benefit you from strong and efficient (of course, what they cover is far unlimited to abnormal processing J).
Scott Meyers, Effective C : 50 Specific Ways to Improve Your Programs and Design (2nd Edition)
Scott Meyers, More Effective C : 35 New Ways to Improve Your Programs and Designs
"Effective C Chinese version", Huazhong University of Science and Technology Press
"More Effective C Chinese", China Power Press
"Effective C (Application)", China Electric Press
If "Effective C " mainly discusses some relative foundations and techniques in C , "More Effective C " focuses on a series of advanced technologies including exception handling. Compared with the former, the latter has two main differences: First, it contains a lot of new standard C content; second, the theme it discusses tends to "strategy" rather than "tacticalization", and discuss More deeper, more thorough. In particular, the degree of in-depth degree of techniques and patterns such as false argument functions, intelligent pointers, reference counts, and proxy classes, making it difficult to imagine among such a small book.
There is more technical, superb writing skills, Scott is undoubtedly one of the best C technical writers in the world. In terms of simple, clear, easy-to-read, etc., these two books are unlimited. In summary, SCOTT provides a method of improving programming techniques and design thinking, and is a necessary skills necessary for advanced C programmers. I strongly recommend these two books (there is still one thing, I will see later).
Herb Sutter, Exceptional C : 47 Engineering Puzzles, Programming Problems, And SULUTIONSHERB SUTTER, More Exceptional C : 40 New Engineering Puzzles, Programming Problems, And Solutions
"Exceptional C Chinese", China Electric Press
"More Exceptional C Chinese", Huazhong University of Science and Technology Press
Do you think is a C language expert? Read the two books of the ISO C Standard Committee Secretary-General to answer. In these two books, HERB uses "Q & A" to guide you to learn C language features. For each topic, Herb first reasonably envigizes your question and confusion, and then guessing that you have eight nine-nine is a wrong answer, then give you the best solution, and finally summarize similar problems. General Principles.
These two books are typical writings in the C language details, very thin, but the content is dense, far more than SCOTT's two books, read it. I personally think that they are more difficult than Scott. To study the knowledge included in this thin book, at least a month! (In the recommendation of Scott, he is more than once in the Gotw problem, you should know what is the benefit of the language details? Although in most cases, we don't have to care about the behind-the-scenes of the C code, but when we have to care, these two books can provide us with a good clue, because they reveal the subtle and vital to the C language. s things.
Stephen C. Dewhurst, C Gotchaas: Avoiding Common Problems In Coding and Design
"C programming trap", China Youth Publishing House
Stephen 's theoretical literacy and practical experience is destined to this is a good book worthy of reading. Stephen used to be the first batch of C users in the Bell Lab. He has successfully solved problems in the fields including compilers, securities trading, e-commerce, and embedded systems. This book brings together 99 programming instructions from the development of the first line, and insights them, you can avoid almost all common C design and programming issues.
I even think that for C programming rookies, reading this book will be more easily improved than reading Scott and Herb books. I personally like this book's writing style - many of Stephen's views seem to be extreme but irreparable. Of course, this self-confidence (and cold) comes from the author's profound technical literacy, not a big paranoid.
In addition to the books recommended above, Dov Bulka and David Mayhew completed "Efficient C : Performance Programming Techniques" ("Programming Technology for C Performance", Tsinghua University Press) is also worth seeing. This ultra-thin book focuses on high performance C applications. The two authors are IBM software experts, all working on system building, which is extremely demanding, this book is their experience. Some people don't like this book, because it spent a lot of space telling and c nothing to do, I just gave this book because of this book, it is these things that make me open my eyes. Templates and generic programming
Templates and template-based generic programming are undoubtedly the most active C programming technology today. The first revolutionary application of the template is STL, which exhibits template technology to show the use of generic containers and algorithms, while modern libraries such as Boost, Loki will continue to play the potential of template technology. In the template and generic programming field, I recommend the following two heavyweight works:
David Vandevoorde, Nicolai M. Josuttis, C Templates: The Complete Guide
"C Templates Full View (Traditional Edition)", Taiwan Action Information Co., Ltd.
"C Templates full view (Simplified)", People's Posts and Telecommunications
There is an old suit with the skill of the praise, roughly "I haven't seen this book, how about you are", this is often exaggerated in the exaggeration. However, if you say "I haven't seen" C Templates: The Complete Guide ", you can't easily be proficient in C template," Then this argument is established for most C programmers in the world.
This book fills the gap in the C template books. Previously, "Modern C Design" focused on template advanced programming techniques and generic models, with the use of "The C Standard Library" for specific template frameworks and components. However, if the template mechanism lacks in-depth understanding, you will be difficult to "up and down". In view of this, I recommend this book to each friend who is eager to understand C template technology.
This book has a translation in the Mainland, Taiwan has a translator's hand. When you see this article, two translations should have been listed. Of course, there is still a choice for readers. Mr. Houjie has opened a lot of traditional chapters on a personal website, and may wish to sneak peek.
Andrei Alexandrescu, Modern C Design: Generic Programming and Design Patterns Applied
"C design new thinking: the application of generic programming and design mode", Huazhong University of Science and Technology Press
"C design new thinking (copy version)", China Electric Press
Do you think it is a C template programming master? I have answered this book to answer J This is an awesome masterpiece from the genius. Pan model, unlimited extension, enough to challenge any C programmer's thinking limit.
This book is divided into two parts, the first part discusses the basic technology used by the Loki library, and some advanced language features, including strategy-based class design, template localization, compilation assertion, Typelist, and small object allocation technology, etc. . The second part focuses on important components and generic model technologies in LOKI, including genericization functor, single piece, smart pointer, object factory (Object Factory), Abstract factory (Abstract Factory) , Visitors (Visitor) and MultiMethods, etc. Every technology makes people an eye and amazing. In terms of C , it is often unreasonable to become an excuse for understanding it. However, object-oriented is not C all, template and generic programming also account for half-watery. For "serious" C programmers, keep up with this early exemplary success technology, which is not sensational.
Conclusion
These books are so famous, maybe I don't miss me at all. However, although the development of C programmers team is not as fast as other than other fashionable languages, newcomers are always more than old people. In addition to enthusiasm, I personally think that "inventory" for C books, and hopes that such "inventory" is good for interested readers. Keep patience and generosity. In the following, I will continue to introduce standard libraries, network programming, and other C good books. Have a good book, this winter will not be cold.