|
C AND C++ BOOKS
Posted in C and C++ (Saturday, October 11, 2008)
Written by Robert C. Seacord. By Addison-Wesley Professional.
The regular list price is $44.99.
Sells new for $31.57.
There are some available for $22.00.
Read more...
Purchase Information
5 comments about Secure Coding in C and C++ (SEI Series in Software Engineering).
- Seacord gives an unsettling walkthrough of vulnerabilities present in much of C and C++ coding. Buffer overflows take up a significant portion of the discussion. Which leads into considering how these can be introduced into unwary code. Consider C. The common string functions of strcpy, strcat, gets, streadd() and others are shown to be very exposed to error or attack. C++ also has similar drawbacks.
The text explains that much of these trace back to some bad usages. Strings are defined to be null terminated. And bounds checking is often not done. While this is often true of code that the programmer writes, it is also true of various common C library functions, like those mentioned above. In fact, Seacord goes so far as to emphatically assert that gets() should never be used in your code. Instead, he suggests fgets() or gets_s().
Seacord also covers other topics, like dynamic memory management, which might have vulnerable heaps. Various 3rd party analysis tools are suggested, to find these errors.
Overall, the book can be quite disturbing, if you are maintaining a large body of C or C++ code. Might make you want to delve in and replace those gets(), at the very least.
While the text doesn't mention this, it turns out that recent languages like Java and C# have far more robust string handling abilities. They were written after the above flaws in C and C++ become apparent.
- There seem to be three categories of computer security books. The first category is books written for system administrators or computer owners, and explains how to protect the computers under their control. The second category is the "true crime" genre that recounts the exploits of black hat hackers or explains the hacker culture (sometimes as "how-to" books for non-programmers). The third, and rarest, category is books for professional programmers that explain the coding idioms that make programs more secure or more insecure.
This book is an excellent contribution to the third category. It explains how certain ways of programming in C and C++ make programs vulnerable to security attacks. There are many code examples throughout the book illustrating the issues.
Although everything is explained in great detail, the treatment is not superficial. (No background in computer security is required, but the reader should be at least a journeyman C or C++ programmer.) Some of the security holes will surprise readers familiar with the basics of computer security. My favorite example: Many programmers know that the gets() function once was involved with compromising 10% of the computers on the Internet in a single day, but did you know that printf can also be a security flaw in some cases? The statement:
printf(s);
can allow an attacker to run any code of his choosing if s is a string provided by the attacker. Even more surprising is the printf attack has been used successfully on popular programs.
This book should be read by any programmer who does I/O across a network, or who writes applications that provide a captive environment for their users (data entry stations, information kiosks), or who writes programs to manipulate sensitive data. Even programmers merely curious about security issues will find this book a readable treatment. I guess the Black Hats can read the book to get more ideas for future attacks.
I can personally vouch for Seacord's expertise. He is a security analyst as the Computer Emergency Response Team/Coordination Center, and I've worked with him on the ANSI/ISO C Programming Language Standards Committee. I've found his information on computer security both educational and valuable.
[...]
- I had the honor of taking a short course at a software security summit from Robert Seacord. I would have to say it was one of the most informative security related courses that I have taken. This book encompasses the course that I took and does a great job of explaining what to watch out for when writing code.
I highly recommend this book for any serious developer.
- This book slipped under my radar, but I recently picked it up and was quite impressed.
This book is fairly unique in that it is accessible and well-written, yet, at the same time, unabashedly technical. It's quite simply a very good book, and it should prove valuable to readers new to software security, as well as experienced security consultants and vulnerability researchers.
I know the problem domain intimately, and was quite impressed at the level of thoroughness and the technical depth of the coverage. This book isn't merely a well-written exploration of known insecure programming idioms and attack techniques; there's actually a considerable amount of original research and material that you won't find elsewhere. Specifically, the coverage of integer issues goes above and beyond what has been previously written, and it's incredibly topical given the current trends in vulnerability research. Seacord's mastery of the C language and his ability to distill the practical rules of thumb out of the somewhat fragmented C standards really results in an excellent resource.
- This is an important book for people that write computer programs and their managers.
It is also very well organized and well written. Seacord reveals how the bad guys take
advantage of bugs in programs to break into a system or damage it. It is the most
complete list of exploitable bug types that I am aware of.
Many examples are given, naming software that have been exploited by bad guys. Some
may protest that this provides the bad guys with a list of easy targets. All of the
vulnerable software has been updated to fix the bug, and the improved version has been
available for a long time.
Everyone that writes software intended to be used by someone else should read this book.
Every organization that writes software should have a copy.
Most of the security flaws are buffer overflows. Secord shows how, from the simple use of
gets() through mistakes triggered by subtle differences in the rules for signed and unsigned
integers of various sizes. There are other ways, and some are quite subtle, but still
preventable. The bad guys are not Jay Leno's "Dumb crooks."
The primary way to frustrate the bad guys is to not have any of the bugs they exploit.
Seacord admits zero bugs is an elusive goal and recommends defense in depth by the use of
various freeware or commercial packages intended to trap or prevent certain errors.
He lists and describes many, with their strengths and weaknesses.
Read this book and make your code better. Read it again, next year.
The following are my opinions, based on over 40 years writing software, but I doubt
Seacord would disagree. Every security bug is also a bug that can cause a crash or a
wrong output from a program. The major cause of fewer bugs is the attitude of the
programmer. Managers can affect the attitude of the programmers by their choice of
questions. Do not ask "Is it done yet?" Instead try approaches like: "Tell me about how
you validated the inputs and how you identified all the inputs." "Who reviewed your test
cases?" "How did you decide you had tested enough?" The fewer bugs of any kind in your
product, the less likely the bad guys are going to target it, other things being equal.
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Pete Becker. By Addison-Wesley Professional.
The regular list price is $59.99.
Sells new for $44.55.
There are some available for $41.73.
Read more...
Purchase Information
3 comments about The C++ Standard Library Extensions: A Tutorial and Reference.
- There are many, perhaps too many, books on C++. But Becker breaks new ground. He presents what is coming down the road towards the current C++ programmer. The existing C++ standard library is good but limited. The widespread use of C++ led to recognition of useful classes that should be in this library but are not. After some years of dilly dallying, Technical Report 1 was produced. Work started in 2001. Six years!
This book explains the classes in TR1. While it is not guaranteed that all of TR1 will make it into the next official standard library, most certainly will. The only real question is when that revision will be released. Given the way C++ changes so slowly, don't hold your breath.
In the interim, you can make good professional use of your time by studying TR1 via this book. It's not a simple rendition of the classes. Becker devotes considerable space to explaining the usages of the new classes. Giving you the gist of what they are about. Just as importantly, each chapter has a set of exercises involving its classes. Tackling these is probably the best way to gain experience.
Of the new classes, what interests you most will vary with the reader. Personally, I was most impressed with the Numerics. Huge improvements in dealing with floats and overflows (NaNs). And for physicists or engineers, there are specialised functions that will save some coding. Laguerre polynomials, Legendre functions, gamma functions, Bessel functions and Hermite polynomials, amongst others. A far richer set than what you currently get in the standard library.
- This will become a "must have" book for C++ programmers. It is both easy to understand and authoritative at the same time. It will be useful for a long, long time, first as a learning tool and then as a reference.
Implementations of TR1 are now available from Boost (free) and Dinkumware (reasonably priced), so these library components are something that a C++ programmer can start using right away. Most or all of them will also be part of the next standard, so they are sure to become ever more widely used.
I like the fact the book is hard-cover, since it is likely to get a lot of use. Maybe I'm old fashioned, but I still think a book like this is the easiest way to study something new, and really learn about it.
I already posted one review, but Amazon seems to have lost it. I'm surprised there haven't been more reviews posted - the book deserves more.
- The subtitle of this book is "A Tutorial and Reference". As a tutorial, I found this book to be lacking. The explanations are fast and terse, quite unlike the more user-friendly tutorial style of Nicolai Josuttis in "C++ Standard Library".
Second, as a reference, this book is also lacking on two counts. The index is incomplete! In the first month of use, I discovered several major omissions in the index. Also, the formatting of the function listings makes it difficult to find a particular function by browsing through the section. Maybe I'm just blind but sometimes it takes me minutes to locate the information I'm looking for in the section where it is.
The author obviously knows his material, and I have complete confidence that the information is accurate. I have not encountered any errors in the text, and it seems to be complete. But this book does not live up to its subtitle, and it does not live up to the quality of its predecessor text, mentioned above. I would not particularly recommend it.
No doubt this review will be voted down by people trying to sell the book, but I have to be honest.
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Adam Drozdek. By Course Technology.
The regular list price is $133.95.
Sells new for $61.01.
There are some available for $68.50.
Read more...
Purchase Information
5 comments about Data Structures and Algorithms in C++.
- Although I have bought this book for its C++ emphasis for DSA, I have found it very good at teaching DSA itself. It has very clear explanations, well chosen examples, and depth enough coverage with along clear and easy to understand code illustrations in C++. The book teaches the topics in an incremental manner by making connections among different related DS and algorithms, which are helpful in understanding the theory.
Its layout for teaching a topic consists of three parts: 1) Introducing the data structure or algorithms with an informal language. It relates it with other similar ones, and explains the differences. 2) It shows C++ implementation (it does not have C++ codes for all DS and A's; however, I think what it has is enough for such a book) and explanations, even some alternative implementations. 3) It has complexity analysis for the algorithm, and any drawbacks. Drozdek has concluded the each chapter with an case study and provides full implementation in C++.
I have extensively studied Cormen's book of "Introduction to Algorithms", which I really like, however, this book is much better at teaching the fundamentals of the DSA topics and has better figures although Cormen's book is more in-depth and has more topics covered, and more academic. If you are looking at more implementation of the DSA with some in-depth theory, Drozdek's book is more useful. If you need more academic study on DSA, Cormen's book would be more helpful (in fact, I suggest both of them).
Another thing I like in this book is its chapter for Memory Management. Although this is an OS topic, it covers it since many DSA requires dynamic memory allocations, and I think it is good at teaching the basics of data structures and algorithms used in memory management.
In short, I strongly suggest this book to programmers who wants to understand DSA and CS students, and also the ones want to have a reference book. I think C++ codes are extra for those who are programming in C++.
- On my bookshelf right now I have 13 books on DS&A using C++. Every time I am in need of a new type of data structure or algorithm, and quickly scan through each of them to determine which seem to have the most relevant information, and also which have useable source-code. Drozdek's book is almost always the book I end up selecting to learn a new topic.
Without a doubt, Drozdek's DS&A book is the most complete and well-written of its kind. It includes a chapter of graphs, which many books surprisingly omit. Also, as of the 3rd edition, it includes a chapter on string matching. As far as I know, this is the *only* C++ DS&A book to dive into this subject.
Surprisingly (because of such a broad-scoped book), the material presented in the string matching chapter is modern and incredibly useful. I found the coverage of suffix tries to be excellent. According to Professor Drozdek (via email correspondence), this chapter is actually a compressed version of what was to be an entire C++ book on string matching. Apparently no publisher would touch such a 'specialized' book. How short-sighted of them!
I work in a research-intensive company focused on developing cutting-edge algorithms to solve difficult modern problems. We do the majority of our coding in C++, which is what originally attracted me to Drozdek's book. Since then, I have referred several colleagues to this book, all of which now use it regularly and are loving it.
My only complaint about this book is that it doesn't discuss primality or random-number generation at all. So many algorithms rely heavily on one or both of these, so I find it strange that this book (and most others) completely ignore them.
As for the reviewer who negatively commented "worst written educational book I have ever read", this person obviously bought Drozdek's book expecting to learn C++ and not DS&A. If you're looking to learn C++, I recommend "C++ Primer Plus (5th Edition)" by Stephen Prata (ISBN: 0672326973). Despite its awkward title and oft-maligned publisher, it really is an excellent book for learning C++ (and also as a reference for an experienced programmer).
Depending on your needs, you might look into supplementing Drozdek's book with Robert Sedgewick's books 'Algorithms in C++'. His books do not go as deep as Drozdek does, but he provides an enormous number of fully implemented algorithms that don't exist in any other C++ DS&A book. Be sure to get the 3rd edition; it is much improved over the 2nd.
Here's a complete TOC of Drozdek's book (3rd edition):
Table of Contents
1. Object-Oriented Programming Using C++
2. Complexity Analysis
3. Linked Lists
4. Stacks and Queues
5. Recursion
6. Binary Trees
7. Multiway Trees
8. Graphs
9. Sorting
10. Hashing
11. Data Compression
12. Memory Management
13. String Matching
Appendices
A: Computing BIG-O
B: Algorithms in the Standard Template Library
C: NP-Completeness
- I bought this book due to the other reviews and targeting the string matching chapter. But when it arrived, I was able to directly apply tree other topics in my current work (skip list, recursion parser and expression tree). It saved me a lot of research, so I'm very happy with it.
- I saw a different picture when i order it but got a totally different book from what I expected, but it was only $6.95 so i just kept it.
- Mr. Drozdek must be creating false accounts and giving himself good reviews; that is the only way to explain this book's high rating. This is without a single doubt the worst text I've ever had to use. If you are a professor or someone looking for self-study, pass this one by! If you are a student taking a class with this as a required text, have a good secondary text handy. D.S. Malik has a decent C++ DS text that I used as my real 'study' text for my DS course. Again, STAY AWAY from this book at all costs!!!!!!!
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Ivor Horton. By Wrox.
The regular list price is $49.99.
Sells new for $27.49.
There are some available for $3.97.
Read more...
Purchase Information
5 comments about Beginning Visual C++ 6.
- I began programming with Ivor Horton's Beginning Java 2, JDK 1.3 Edition. It was excellent, full of pertinent information, well organized, informative... everything I could want. When I wanted to learn C++, I bought a book by the same guy. It was a big mistake.
This book spends too much time on really simple concepts and does not sufficiently explain others. For example, enumeration types are lavishly explained in such a way that somebody could easily read the pages (that's more than one page about a special int... YIKES!) about them seven times without understanding that each is just an int with a named set of values. I also particularly dislike some bad formatting, unnecessary time spent on how to use an IDE, and the complete ignorance of the printf() function in favor of the less efficient cout stream.
- Above all else, book about software development should have loads of exmaples, and when describing the use of a specific compiler, leave very little to the imagination (compilers are too loaded with power that only their developers and heavy duty users understand. Horton's book does exactly this!
I have been writing software since 1969 in all forms, but mostly engineering applications rather than Windows or web code.
Even though I've had the VC++6 compiler since 1998, I'd not used it for anything more than fast prototype code or code that had specific value only to me. Well, with the exception of writing a 'fast fingers' piee to train myself to be really really fast at the "Who Wants to be a Millionaire" game (a GREAT little app.)
my last Windows work had been in 1996/7 and was related to testing cable systems (worse, it was only modifying existing Borland C++ developed under SDK! so I learned little and rememebered less) and some VC++5 code that I worked out in 1997 for a few months.
Now I'd bought Ivor Horton's book on VC++5 in about 1997 and had read it occasionally, in very rare moments, so I knew it had quality to it, had the features I value most in a software book: examples and comprehensive detail made explicit.
When I recently discovered a new idea for software, I realized that I had to learn VC++6 for true Windows - and I have plenty of reference books on this topic dating from 1992 - it took about two weeks of floundering around with a dozen of them to finally realize that Horton's book on VC++5 was the best of the lot... so I bought his book on VC++6.
If you are a beginner, Horton will NOT fail you. The book is immense, over a thousand pages, but it is also easy to understand no matter how rusted you are - and I was well rusted by lack of recent C++ experience.
Buy this Book!
- This book is very...very...very good book for those who want to learn about C++ and Visual C++. Before I read this book I have read a book with a title"Learning Visual C++ in 21 days". I learn that book in 25 days. When I want to start my programming I'm stuck.After I read this Ivor Horton's book about a week, I can continue my programming without a stuck.My previous problem have been solved.The code in this book is free of error not like the other books. If there have an error that only a typos error that come from you not from Ivor Horton's code.I can learn much with this book.You can catch an error in another book after you have read this Ivor's book.Don't believe me?It's all depend on you.
- Ivor Horton has written a very clear introduction to Visual C++ 6.0. What I like most about this book: When a new feature is introduced he explains the meaning of the feature on a conceptual level instead of just showing how to use it. Therefore when learning it is easy to prioritize and organize all this new material since he has essentially already organized it for the reader. I have found that many other books leave the burden on the reader to absorb a bunch of seemingly unrelated bits of knowledge, and then make sense of them before learning is truly complete. This is of course tedious and time-consuming.
His work is also very careful--he always anticipates and addresses those little nagging details that often can throw the reader off, so that as you read it you aren't dragging along a bunch of unanswered questions.
The book teaches:
a. How to use the Microsoft Visual C++ 6.0 Integrated Development Environment (IDE)
b. The C++ language itself
c. Windows Programming, including usage of the Microsoft Foundation Classes (MFC), the AppWizard, ActiveX etc.
I was already familiar with the C++ language, so I did not read that section of his book (and therefore this review does not cover that). I used it to learn the IDE and Windows Programming.
I really enjoyed this work, and will continue to use it as reference.
- This is quite an extrordinary text, not only because of the knowledge it covers but also because of Ivor's presentation and writing style. Not once in this book did I ever had a question of "What the hell does this mean ?" Some key important things you need to know if you are thinking to pick up this book:
1. Mr. Horton does a fine job explaining everything before he jumps into using it. The writing style is based around writing a program to cover a topic and then explaining it .... as the programs get more complex this has its advantages and disadvantages. In the later chapters Ivor uses examples to explain several topics like drawing, serialization, printing, views in the Windows API. Previous knowledge of the Windows API (for e.g. charles Petzold's book) can help you get past this book like a breeze but its not required
2. The book is a little long keeping in mind the vast extensive areas it tries to cover and is meant for a beginner or someone who wants to review the foundation for VC++.
3. The first half of the book covers the basics of C++ and Ivor jumps into the Windows API only in the second half.
4. Gives you a starting foundation to advanced topics like ActiveX, ATL, COM, OLE or ODBC.
5. Heed Ivor's advice as he does tell you to stay calm while going through this text.... at times I did feel like tearing my hair apart because of the vastness of this subject but I kept my calm took a small break and got to the same topic again
Well done Ivor !!! If only other books were written like this ....
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Microsoft Corporation. By Microsoft Press.
The regular list price is $59.99.
Sells new for $20.00.
There are some available for $7.35.
Read more...
Purchase Information
5 comments about MCSA/MCSE/MCDBA Self-Paced Training Kit: Microsoft SQL Server(TM) 2000 System Administration, Exam 70-228, Second Edition (Pro-Certification).
- I used this book and went through all the 16 chapters.
This book could use some more review and additions from Microsoft. Accompanying CD barely did the job. Examples did help but limited.
You will have to use SQL BOL (Books On Line) to get the deep understanding of the subject.
Passed the test with 864 (86%). So i guess the book worked.
- I did not use this book to prep for an exam. Instead I used it for reference and it has been a good source of accurate information.
- In just few words, you exceeded my expectations, in terms of quality of purchase, time for delivery, and follow-up you did excellent job.
Thank you
- The selling point of this book is that it is part of the Microsoft Certification process for three certifications. The other thing it seemed to have going for it was a full copy of SQL Server (120 days).
What isn't said anywhere when you read the description and look at its content is that in addition to SQL Server, you will need Microsoft Server 2000, and IIS. Those are a couple of fairly high ticket items IF you can find them.
Microsoft has moved on to 2003 versions of all of the above and consequently it would be better to certify in that version.
If you're looking for a database certification, look to mySQL and PHP, or Postgres SQL. Yes it is linux and unix mostly (Windows versions also available). Certification in any of these is just as valuable and the Microsoft certifications. After spending thirty years in IT, it is certain that Linux and Unix are eventually going to capture the server market.
Back to this particular book. It is a waste of money unless you have one mean machine loaded with Microsoft server, IIS and probably more. If you have such, great. If you don't, take another route.
- This book was essential for me as a reference for an MCSE boot camp. It is now part of my reference library. Will answer many questions that pop up during the study process.
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Michi Henning and Steve Vinoski. By Addison-Wesley Professional.
The regular list price is $74.99.
Sells new for $34.90.
There are some available for $7.86.
Read more...
Purchase Information
5 comments about Advanced CORBA(R) Programming with C++ (Addison-Wesley Professional Computing Series).
- Don't wish to wade through book after book? This book would be the one to buy! The concepts are clearly defined and the code examples are fairly easy to follow. (The thermostat example grows too complicated at the end of the book to even comprehend all pieces - authors could use other smaller constructs to show the concepts.)
The authors are well-versed in the topic and it shows in every chapter. There is no hand-waving on topics, as I have seen in other treatments of this subject. I've been a Corba programmer for the last 3 years and this has been my bible... Can't wait to see a second edition of this book from the authors!
- Good book. Worth the money. There is a a lot of material here and it is pretty well organized. Some of the examples assume to much - they would be better if they showed complete code segements. If you needed to get one book on C++ and CORBA, this would be the one.
- As the title states this is a book for advanced programmers. Not the kind of book I would recommend to someone looking to pick up a book and the learn from it. Might serve as an excellent reference source.
- For my money, this book is worth every cent and more. The authors are knowledgable and articulate. If you know of a
better book on CORBA, please let me know.....
- This has to be one of the best CORBA books that I have read. It has helped me debug code and fix some really knotty problems. I found the exposition clear and easy to follow, and the index a useful tool. I don't think the authors intended it to be read cover-to-cover.
If I am working on a CORBA project I alway like to have this book to hand.
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Kim Pallister. By Charles River Media.
The regular list price is $69.95.
Sells new for $42.60.
There are some available for $19.99.
Read more...
Purchase Information
1 comments about Game Programming Gems 5 (Game Programming Gems Series).
- Intended for the intermediate to advanced game programmer, this is a book that will literally have something for everyone. It contains sixty-two 'gems' that is, articles on how to some particular aspect of game programming. Sophisticated game programming is probably the most complex programming there is. And this book goes into some pretty sophisticated programming details.
For instance:
4.2 Dynamic Grass Simulation - Just how does grass move when the wind is blowing
5.7 Rendering Gemstones - you can see through them, you can see highlights
5.2 Let it Snow - And how does the appearance of snow change if you are moving through it.
There is no question that the main driving force for faster computers is to make for more realistic gaming. And the faster computers allow more sophisticated programming to be done to make the grass wave realistically.
This is probably not a book you're going to sit down and read from cover to cover. You'll probably scan through and read the ones that are applicable to just what you need to do next. But then in a couple of weeks, in a couple of months....
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Herbert Schildt. By McGraw-Hill Osborne Media.
The regular list price is $41.99.
Sells new for $18.00.
There are some available for $7.00.
Read more...
Purchase Information
5 comments about C: The Complete Reference, 4th Ed..
- I got this book as one of my first for programming a few years ago. I was able to compile some programs and have a basic idea of how the language worked. But it was really hard absorbing all of the information with just this book. It was the only thing I had to learn programming at first. When I took a class in high school for C, all of the information really came together. I knew everything we did in that class and then some. But the information gets a little dry. This book does what it is supposed to, though. If you spent enough time with it, you could very well learn how to program. But for me, I couldn't read it front to back like I had wanted to as a new programmer.
I suggest buying a companion book or taking a class before buying a reference book. After you learn how to think like a programmer, thats when you buy a reference book. Learning a language without knowing how to apply it was getting me nowhere. Great book though; I'm just throwing out a warning for anyone that is considering getting into programming, and using this as your first book.
- This is an excellent reference book for C programming. I have been programming in C for a year now and this book has proved to be a valuable addition to my collection of C texts. The book is not designed for persons who wish to start programming in C for the first time. However, even if you are a beginner in C this book will be a tremendous asset to you, especially as you become more advanced in the C language. The standard libraries are covered in detail and accompany lots of examples. Most of the concepts of the C language are explained clearly and are accompanied by suitable examples. There are some areas that are a bit vague but this is more than compensated for by examples. I recommend this book for anyone who wishes to program in the C language but note this book alone will not be enough. It is a 'must have' in your collection but to get a full understanding of some of the C concepts you will need to have more C literature.
- This was my first purchase from amazon and I was totally impressed by the quality of the product and the service!
- [Helpful? Not? Please vote.] :: Mr. Hayes is undoubtedly a competent C programmer. This book isn't intended for him, nor anyone else who patently needs no introduction to the basics. For example: If you know and understand and can recognize fundamental differences between compilers (perhaps you've written a compiler or two yourself?) ... you likely don't need this book. If you know and understand different program extensions or have a nuts-n-bolts understanding of portability issues ... you likely don't need this book. If you're porting code across platforms in the first place ... I digress. I just hated to see the first review of this book rate it so poorly by being so obviously slanted or geared to the competent and experienced programmer ... Similarly, "Green Eggs and Ham" isn't really a Comparative Literature text either.
This book is for new-ish programmers. I think it's specifically for undergrads who don't want to memorize the minutia of every single string function in C. Plain, vanilla C-code is all about syntax, order of operation and algorithms of the native functions. Most students understand how to solve labs on paper, but can't translate it to the infernal foreign language that is C-code. C is no mystery, and it's about exactness and handling every single possible input. It's also about reserved words, declaring and using data types and structures, and basically completing lab assignments, for the first 3 years or so. After that, C, C++, JAVA, whatever ... you know programming, and can find out what you need to complete any program in any language once you have the basics well in hand. Having taught at the University level, I find Schildt to be very good at making Sophomores out of Freshmen, and Juniors out of Sophomores. Beyond that, it's only a once-in-a-while grab to look up some small thing or another ...
I used this book for undergrad and grad CS studies. It is THE preeminent reference for plain, vanilla C-language coding. It has data types, quirky ways compliers and loaders treat certain operations, and lots of "details" that you just can't and probably shouldn't remember unless you use them every day. This is the encyclopedia of C-language details, in a reference format; something lacking from K&R's books, which can have you searching and reading on a topic for some time, only to find an answer of limited utility. I do LOVE K&R's book(s), but it took a couple of years before I was fluent enough to really absorb their prose, which is no doubt, a more advanced treatment of what you can do with C. This "Schildt manual", as we called it in school, is more about HOW to do something, once you know WHAT you want to do ... This will not solve algorithm problems for you, per se, but if you're looking for the string operation that will make what your algorithm calls for easiest, they're all in here, explained with syntax and order of operations in plain English. I would hate to think what my undergrad years would have been like without this book. Worth the $$ at twice the price. (of course, people have found intermittent instances where this book was no help, or even outright wrong ... welcome to computer science and math ... ain't it grand?!?!? ... "Hilbert, meet Godel" :-)
After an MS in CS, multiple applications and system level programming projects, several years in industry, and having taught introductory C-programming for 7 semesters, if I could have ONE and only ONE reference book on the C-language, this would be it. The "class time" instruction is available on any online C-coding tutorial ... the unforgiving nature of code/logic makes "correctness" imperative. Correctness is in the details. The details are in Schildt's C Reference, and they're easy to find ... thus, you can finish your lab, take a shower and make it to the party with all your friends, instead of sitting in the lab, sweating whether to use strtok() or strstr(), while your youth and "fun years in college" are ever more fleeting. Believe me, you have better things to do than try to solve a second year lab assignment using Kernighan & Ritchie ... ( K&R = "the authors", so reverently mentioned in several prior reviews, JIC that isn't common knowledge). Their books, and afrementioned reviews of this book, though correct in probably every way, are sort of like Microsoft Help Topic answers (Seebach's page contains rants from other would-be authors who seem to wish that they'd not only had the idea to write this book before Schildt, but also employed their many computer-geek buddies to help them edit it better as well. Neither happened.). To put K&R's work, as relates to the beginner, into the MS Help Page perspective:
[ A helicopter was lost in the fog near SeaTac airport, radar was down, and they were flying blind. Suddenly, from the mist, appeared a large building. As people gathered by the windows to gaze at the helicopter, the passengers scrawled a sign for the onlookers, "Help! Where are we?". A few disappeared into the cubicle farm and returned with a sign reading, "You're in a helicopter!" The pilot promptly turned the chopper around, and said that's Microsoft headquarters, SeaTac is this way. "How can you know that?" they inquired. He replied, "I know it was Microsoft b/c that was a technically correct, but totally useless answer." ] That was the feeling I got early on while reading K&R. They now occupy a place of high importance in my library, but I could've held off on that purchase for some time ... just my opinion. Use Schildt until you get your parchment, then go off and organize a maverick and superior disposition of your own, like Schildt's detractors. The problems with the book are piddling compared to what it has to offer, and are unlikely to be an issue for it's intended audience.
- First of all, it shoud be said that the C language is so widely used it's a shame that good and updated books no longer appears on the market. This book is an exception. To my knowledge, it's the only book that covers the latest additions from the last ISO/IEC 9899:1999 standard.
This book covers (in addition to the traditional C89 standard):
1) restrict pointers.
2) the inline reserved word.
3) The new _Bool and bool types.
4) The new _Complex and _Imaginary reserved words.
5) The new "long long" integers for 64 bit integer arithmetic.
6) Variable lenght arrays.
7) Type qualifiers in array definitions.
8) Single line comments.
9) Mixed code / declaration style.
10) Variable arguments to macros.
11) The _Pragma operator.
12) Variable declaration inside for() cycles.
13) The new compound literals.
14) Flexible arrays inside struct members.
15) Delegate initializers.
16) Various additions and differences from the past standard.
and, most importantly, it always underline when a concept apply to C99 only, when it apply to C89 and when it is usable in both standards. It also underline when something get in contrast with the C++ programming language. The difference between the two standards will be always clear.
And, to my opinion, this is a *very good thing*.
What matters the most is: this book will teach you C. It's not an advanced book nor a beginner book. It's intermediate. So, if you're looking for an updated book about the C programming language and you have programmed something before, get this book now and leave complaints to others. If you're searching for a pedantic syntax/semantic analysis for the C language, just buy the specifications. The last section of the book is fantastic to gain confidence with the language. While not C related, it teaches you how to solve common problems by using C in practice:
a) Search and sorting.
b) Queues, stacks, linked lists and trees.
c) Sparse arrays with hash tables.
d) Syntax analysis and expression evaluation.
e) Some techniques used in artificial intelligence.
An additional section covers the implementation of a small C subset interpreter!!!
This book is not intended to be the most complete and advanced C book of the planet, but reading it surely it will contribute to your C knowledge and technical skills with it. Buy it without hesitation as a first book for this language. And don't skip more advanced books like "Expert C Programming" by Peter Van Der Linden, "C Traps and Pitfalls" by Andrew Koenig and "Memory as a Programming Concept" by Frantisek Franek.
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by Andy Harris. By Course Technology PTR.
The regular list price is $29.99.
Sells new for $23.99.
There are some available for $11.88.
Read more...
Purchase Information
5 comments about Microsoft C# Programming for the Absolute Beginner (For the Absolute Beginner (Series).).
- This book is exactly what it says, a book to teach C# to absolute beginners. I was just that. New to programming. I wanted to learn programming and after a reaserch on the internet I decided to start programming using C#. I bought myself a MS Visual C# step by step. Soon after a friend gave me C# Programming for the Absolute Beginner. I was amazed. The book is straight to the point, and everything you learn is supported by examples. So if you didn't get the idea by reading you figure it out by doing it. Great book! Great job Andy!!! Write one for c# 3.0 too!
- I hadn't done any programming since I took Fortran in college 20 years ago and before that, I had taught myself DOS when it first came out (okay, age giveaway!). I did teach myself the basics of HTML, but I had no idea of where to even start with the newest languages out there now. This book led me from total ignorance through the basics of C# in a fun way and now I'm ready to progress into more advanced coding. I'm just a hobbyist, so this book was a perfect place to start for me!
- I previously had started with Beginning C# Game Programming by Ron Penton, which was a disaster since much of his code doesn't work with DirectX 9.0c. I picked up this book and started back over from scratch.
Harris does an excellent job of introducing a concept, explaining what it is and how to use it, then implementing it. Some of the code is a little dated and has to be altered to run in C# 2.0, but I was able to do it with only a little effort. Same with a few of the form components. Additionally, I contacted the author, and though he doesn't work in C# very often any more, he was able to point me in the right direction to get my questions answered.
By the end of the book, I had successfully built a few C# applications to use at work.
My only complaint with the book is that it just ends. There is no prologue at the end, just the end of the last chapter reviewing that material. It would have been nice for a summary and maybe some direction in where to go next.
- For beginners who have not been exposed to any programming languages or their structures. He makes this subject very interesting by using games as examples. It is an easy read. I have been out of touch with programming for a long time and I needed a little basic introduction to get started into object oriented programming. It may be used as a stepping stone to understanding complicated subjects like threading, windows forms and event handling in other books.
- If anyone has a problem with this ABSOLUTELY PERFECT C# Programming book it's because they never bothered to READ the cover! If you are a BEGINNING programmer and want to make GAMES, don't look any further. This is the book you've been looking for.
Read more...
Posted in C and C++ (Saturday, October 11, 2008)
Written by James O. Coplien. By Addison-Wesley Professional.
The regular list price is $59.99.
Sells new for $47.90.
There are some available for $4.99.
Read more...
Purchase Information
5 comments about Advanced C++ Programming Styles and Idioms.
- This book is written in an accessible format.
It has some very interesting topics that help bridge the gap between intermediate and advanced features of C++.
- Coplien has won many consensus thanks to this book and his "Multi-paradigm design". You can easily verify it looking at the bibliography of EVERY book on C++ written after 1991: you'll certainly find "Advanced C++ Programming Styles and Idioms". Many books have used it to expose tecniques. The best examples are both Meyers' "Effective" and "More effective" books. You can jump directly to the Recommended Readings sections to read the right acknowledgment to Coplien's book. You can then browse the items, and discover that some of them are revisitations and expansions of Coplien's ones).
Reading this book completely changed my view of C++, and, indeed, of any programming language. It traces a clear path that lead from a "normal" use of the language to a well-conscious use of each of his potentialities (those available in 1991, at least). Just look at the functors section to understand what a gem is this book, this is one of the most mind-expanding examples of the book. And if you did not understand what ADT are before, you'll gain a fine and solid account here. This just to quote a couple of examples. Eleven years are a lot, and the language have undergone major expansions, especially since the ANSI draft on 1996-97. However, this doesn't take anything away from the value of the book, after all you can always learn namespaces from any other modern book. It's not a case that this is one of the most quoted books in the C++ literature. Many have said it, and I can only confirm that this book should have a stable place on each C++ developer's bookshelf (together with Stroustrup, Meyers, Koeing, Allison and Murray).
- I read this book about 15 years ago. It was the third book I read on the subject, and after I read it, I did not need another C++ text until template metaprogramming became 'all the rage'.
What you'll find in this book are examples which illustrate the motivation for key C++ language features, with both the historical context reaching back into K&R C programming, and the new benefits afforded by an object-oriented approach.
If you think you are a C++ programmer, and do not recognize the term "orthodox canonical form", then I suggest you pick up a used copy of this text and read it cover-to-cover.
As far as I'm concerned, if you're interested in actually writing software using C++, and are conversant with object-oriented programming, this book will provide a broad foundation upon which you can build well-engineered solutions.
I came to C++ with about 8 years of K&R C and 4 years of Smalltalk-like object-oriented programming. This book was all I needed to synthesize a practical understanding of C++.
This is not a book for beginners, but rather for those already well-versed in programming. For a beginner's book, I recommend Thinking in C++ by Bruce Eckel.
- This book still turns up in the recommended reading of nearly every important book on C++ out there, which is pretty remarkable given it was published in the early 90s. Clearly, lots of smart people think it's important, then. But has it been influential? Are the techniques outlined here being used by programmers now? In some ways, yes. In others, the C++ community has marched off in entirely the opposite direction.
The material that has endured is handle/envelope classes (more commonly called pimpls these days) and the discussion of object orientation and polymorphism that covers the different techniques for inheritance versus composition and public versus private inheritance well.
The rest of the book is an attempt to turn C++ into something between Smalltalk and CLOS. There is some extremely clever stuff going on here, but as you might expect, it's not a terribly comfortable fit for C++. Nonetheless, there's a whole bunch of interesting ideas: multiple dispatch, prototype-style object creation, dynamic reloading of classes and garbage collection.
However, I doubt that many people are using these ideas in their C++ code. Arguably, this book's spiritual successor is Andrei Alexandrescu's 'Modern C++ Design', published about a decade later. If you look in there, you'll see the new advanced C++ is a long way from Smalltalk. By the use of template metaprogramming, as much as possible is done at compile time, not run time. Conversely, at least some the ideas are an integral part, not of C++, but Java.
So it's not a book for everyday programming, but if you want to see in which interesting directions C++ can be pushed, this is a unique resource.
- I have read this book because it was recommended by Scott Meyer in his book More Effective C++: 35 New Ways to Improve Your Programs and Designs and he was saying that this book was showing what C++ looked like on LSD. This book certainly contains interesting ideas and it demonstrate that the author has an exceptional creativity as a C++ user but Mr. Coplien best quality is not teaching in my opinion. To me, the text is opaque and hard to understand when the author is using terms such as "orthodox canonical form".
Read more...
|
|
|
Secure Coding in C and C++ (SEI Series in Software Engineering)
The C++ Standard Library Extensions: A Tutorial and Reference
Data Structures and Algorithms in C++
Beginning Visual C++ 6
MCSA/MCSE/MCDBA Self-Paced Training Kit: Microsoft SQL Server(TM) 2000 System Administration, Exam 70-228, Second Edition (Pro-Certification)
Advanced CORBA(R) Programming with C++ (Addison-Wesley Professional Computing Series)
Game Programming Gems 5 (Game Programming Gems Series)
C: The Complete Reference, 4th Ed.
Microsoft C# Programming for the Absolute Beginner (For the Absolute Beginner (Series).)
Advanced C++ Programming Styles and Idioms
|