

Full description not available
U**N
Wow, C11 with examples, insight and a roadmap.
This is the first book I am aware of that actually teaches you how to use the C Language. Five Stars.Audience: intermediate to advanced C programmers. The book does have a beginner C Tutorial in the Appendix.[GRIPE] Personally I did not care for the overly informal tone and punk rock quotes. Explanations tend to be long and colourful. This book is the inverse of formal and terse[/GRIPE] Whatever dude, Right? lol. I would also say that the coding style varies, wildly and the Kindle version is nasty; Also: Ben should know better than to make sport of anyone's religion or deity.Other than that, this book is quite possibly the most important book every written about C since K&R(ANSI), with the interesting twist that they are in fact quite different in scope and goal. K&R is really an English version of the ANSI standard with tutorial and example material for learning the structure of the language. K&R assumes you know the CS already and teaches the language grammar with classic CS examples.21st Century C assumes you know the C Grammar and CS already and teaches how to build solutions with the C language using the improvements of TWO! updates to the C Language standard since K&R(ANSI(C89)).This is C11 - GNU gcc supports everything that anyone is taking seriously - Right Now! Things like functions with default parameters and variadic macros for variable length functions replacing the infamous va_args system.Chapters 1 through 5 walk you through setting up a development environment on a UNIX/BSD/Linux type system using standard tools and libraries that provide you with more functionality than the much touted "high level" languages and all of their functionality. He does this step by step in a very practical manner from beginning to end so that you are set-up to work through the rest of the book.Of course, he could have used combinations of several different libraries and built many completely different development environments specialized for all kinds of different problem domains (C as an ad-hoc DSL)With C you could choose a different set of tools with better performance, domain optimization, or other advantages -- and still be using the same language OR you could mix and match. Remember, the language is tiny, when you change libraries they make all the difference... C is powerful for the very reason that is small and simple. Ben really drives this point home and gives examples of C vs. R (a statistics DSL) with the C code being both easy to understand and much faster. Faster matters MORE now than ever because the fundamental principles of Turing machines are fixed in cold hard reality but our data sets continue to increase in size and complexity. Faster Code Matters.Chapter 6 goes into depth about pointers for those that struggle with fundamental operations on Z and indirection. It also mentions other storage types and how to avoid using dynamic memory at all in many cases.Chapter 7 & 8 cover the mechanical issues of language syntax both good and bad.Chapter 9 covers string handling, it starts with asprintf() and meanders through string stuff. In all fairness, what Ben is trying to do would fill an entire book on its own. My advice: use the sds library by Salvatore Sanfilippo (antirez(redis)) on githubChapter 10 is about structs, this is the best part of the book for me, goes in depth on many improvements and extensions. Includes an example of a foreach function on a compound literal. Worth the price of the book...Chapter 11 Goes into depth about using OOP methodology in C. Though C is not an OOP language the ancient K&R C was good enough to create cfront, so OOP in C has always been a reality, what C lacks is the "syntactic-sugar" of C++. Again, the neat thing about C (and C++) is that you can pick and choose features without being forced into a pradigm by someone else.Chapter 12 is parallel programming and covers both threading (pthreads) and processing (OpenMP) and adds in C11 atoms covering the stdatomic.h and threads.h in the standard libraryChapter 13 Libraries for programming with the C language. This section gives examples with Glib, GSL (GNU Scientific (math) Library), SQLite (The single file include SQL DB), libxml and cURL.goto github /b-k/21st-Century-Examples for a forkable repo of all of this book's numerous examples.You should also check out: /dale48/levawc for a large library of ADTs in C,and /antirez/sds for the Simple Dynamic Strings library.
T**Y
Excellent and Practical
This is the best reference I've read on using C in the modern day and taking advantage of C's latest features. It's also one of the best books on C that I've read.Highlights: It does a great job demonstrating implementing OOP concepts in C. A solid chapter on concurrency. Tips for needing to malloc/free memory less, and a better approach when needed. The Better Structures and Object-Oriented Programming in C were the stand-out chapters in the book.When the book was written, MSVC wasn't supporting C11. That has changed recently, which means the concepts in this book work whether you're using a POSIX toolchain or Microsoft Visual Studio.If you don't already know C, I don't think this is the first book you read. Get The C Programming Language from K&R, spend a couple weeks learning the most basic concepts, then move on to this book to learn how to actually use and build software with C which K&R won't teach you.
J**F
Good read for intermediate/experienced C programmers
This is an excellent book for an intermediate or experienced C programmer who is looking to modernize his/her skillset. It assumes too much prior language of C and of programming in general to be useful for beginners. Section 1 (The Environment) has useful information about the debugger, profiling, and GNU Make (Chapters 1-3) that are useful and provide practical advice, even for experienced developers. Chapters 4-5 (Version Control, Playing Nice with Others) are not overly useful for experienced developers who already have experience with these topics. The remaining chapters all have useful information. The parts about the features of third-party libraries and associated examples are especially helpful to those who are experienced with C but not necessarily experienced with using third-party libraries. Two caveats with respect to getting the example code in the book to compile and run: 1) some of the examples rely on the newest versions of glib, which is not easily available on some versions of Linux (especially the server distributions like CentOS/RedHat). 2) Many of the third-party libraries are difficult to install on new versions of MacOS (especially those that have System Integrity Protection that prevents installation to "/usr"). Thus, I would suggest doing the examples on a more quickly-updated version of Linux, such as Fedora or Ubuntu, and not on MacOS, server distributions of Linux, or Windows. One final caveat related to the examples is that some of them, especially the multi-threading examples, do have memory leaks that are hard to spot if you are not experienced with multi-threaded coding, so I would not recommend porting the examples into production code without checking for subtle bugs. Also, the pthread example in Chapter 12 spawns thousands of threads and could have been written in a more efficient manner that is comparable in performance to the OpenMP example in that chapter. Overall though, it is a good teaching tool and a good read.
J**X
This IS 21st Century C
I love this book.The examples using punk rock are just fine, they are perfect for illustrating a point . . . disruption of the accepted.This book brings C into the 21st Century. There really is no better language than C for efficient programs and the techniques shown in this book shows just how appropriate C is STILL.The writing is entertaining as well. This is one of the few books that stays on my desktop.
S**A
Good Book. Terrible shape, Not new.
The book itself I really like.The low rating is due to recieving the book in a very poor state. It came with the cover dirty, damaged and a lot of bent pages.I would return it, but I don't want to waste a good book.
P**S
Great book to be productive quickly
I think this book delivers on all of the promises on the back cover. Even as someone who primarily uses C++ every day, this book helped me sharpen my C skills and rediscover a simpler world where more time and attention can go to the problem at hand than lost to idiosyncrasies of C++. If you want to step into the world of high performance programming and don't want to dedicate years of your life (and significant real estate in your brain) to mastering C++, then this book is for you.
J**Y
Learn to code in up-to-date C and be treated like a professional
This is a preliminary review to ameliorate the existing, totally undeserved, rating on amazon.co.uk for the kindle version.I wanted a book to support learning modern C, as most of the other books are either dated or lightweight (I am no dummy; I am an IT - non coding - professional). One of the early pains for me is knowing the most effective way to set up the environment. This book certainly helps with that.My motivation for learning C is primary to code embedded systems. A side-benefit is that C can be used almost anywhere to underpin other high level languages. C provides the necessary middleware between the operating system/hardware and these high level languages. For instance, I use F#. When I want to accesses the hardware on a Raspberry Pi, say using Wiring Pi, I have to interface with C bindings.
R**H
Item for collecting
Nice book to upgrade your c skills
M**R
Good if you already know C - it helps you write cleaner and more maintainable code. Recommended.
Good if you already know C - it helps you write cleaner and more maintainable code. Recommended.
Trustpilot
3 weeks ago
2 weeks ago