Read learn c the hard way by Zed Shaw Online

Title : learn c the hard way
Author :
Rating :
ISBN : 13136685
Format Type : ebook
Number of Pages : 380 Pages
Status : Available For Download
Last checked : 21 Minutes ago!

learn c the hard way Reviews

  • Marshall
    2019-06-26 15:13

    This is a very different approach to learning a programming languages. It turns the traditional approach on its head. Rather than first explaining a new concept and then showing some example code, this book does it in the reverse order. It starts with code that demonstrates everything you'll learn. The idea is, you type it in, play with it, and try to break it. Then you read about what each line does. Rather than going through each new keyword separately, it just dumps a dozen or two on you at once and asks you to memorize them. Later, you understand what they do.I have mixed feelings about this book.The GoodI think this new approach is a better way to learn a new programming language. So often, in other books, I read all this explanation that I have trouble grasping because I need to see it to understand it. So I power through the explanation first, and then once I see it in action it all starts to become clear.With the "hard way" approach, you see a bunch of code you don't understand at first, but that's fine. You just need to type it in and play with it. Some of it you can probably figure out on your own as you experiment. Then the explanations answer any questions you have. It seems so much easier this way. That's ironic, since it's called "the hard way."This approach has another huge advantage: it doesn't require quite so much explanation. You've already played with the code, maybe looked some stuff up on your own. By the time the explanation comes, there's not much left to do. This seems especially appropriate for such a minimalist language like C. You're already doing pointers by page 62 and heap and stack memory allocation by page 74. The language proper, advanced topics and all, is done by 135 pages, only 1/3rd of the book.That leaves 200 some pages for all the important stuff most language tutorials overlook: defensive programming, build systems, linking, libraries, automated testing, data structures and algorithms. So, by the time you're done with this book, you're pretty much done. You'll understand not just the language but how to do full projects, and how to use it for real work. You'll have practiced with tons of actual code, not just coding it but changing it and trying to break it.That brings me to something else I liked about the book. So many books talk about programming languages as if everything will work great the first time. Most beginner programmers get humbled very quickly. They get one compiler error after another, and they don't know why. They think they're stupid or just not cut out for programming. The truth is, it's very easy to break code, especially when you're still learning. Books should not just acknowledge this but tackle it proactively like this book does. Each chapter includes exercises where you purposely try to break it.I also like that he emphasizes a simple coding style. For example, rather than teaching you some fancy unit testing framework, he uses "minunit," which is only 30 lines of code, after his tweaks. (The original is literally three lines of code!)Speaking of which, I like that he includes unit tests for everything. Writing unit tests is so important and always ignored in programming books, which portrays them as trivial and unimportant. Including unit tests for the code, you will understand the code better because you will see how it's used. You'll also get used to seeing how to write unit tests in the language.The BadHe seems to use his new style of teaching programming as an excuse to be lazy about explanations. Often it feels very "arm wavey." He depends on the reader to be proactive and do some research and experimentation on his own, and as a result he seems to assume that it's fine to skimp on explaining things.He uses a library called bstring, and completely skips explaining how strings work in C. He justifies this by dismissing C's strings as "broken." They're only broken if you expect C not to be a low-level, minimalist language. It is, and its approach to strings reflects that perfectly. C is an excellent C, but it's a lousy Java. Most criticism of it would go away if people accepted C on its own terms. Blowing off explaining C strings is a bad idea if for no other reason than beginners will be reading other code, almost all of which does not use the bstring library.The writing style bugs me. The description of the book says he's "an entertaining and lively writer." To me, he just sounds like an arrogant hipster programmer. He thinks he is one seriously bad ass programmer, and he isn't, although he's pretty good.Here's a good example of his obnoxious writing style: "You can thank me later when you realize how insanely awesome these macros are. Right now, you don't know how awesome they are, so you'll just have to use them, and then you can walk up to me one day and say, 'Zed, those debug macros were the bomb. I owe you my firstborn child because you saved me a decade of hardache and prevented me from killing myself more than once. Thank you, good sir, here's a million dollars and the original Snakehead Telecaster prototype signed by Leo Fender.' Yes, they are that awesome."What follows is a handful of macros that just print errors and jumps to the end of the function. That's it. I've written these kinds of macros a few times in my own code. Usually I don't need them because I don't abuse the heap, so I can usually do an if-statement and a return statement on one line. This is clearer than some obscure macro defined elsewhere. It's good that this book presents these macros, because they can save some lines of code in some situations, but mostly because it demonstrates the preprocessor and the importance of creating abstractions rather than duplicating code all over the place. But they are not that "awesome."The UglyIn several chapters toward the beginning of the book, code and the output do not match. In exercise 7, several print statements from the code don't show up in the output. The output session for exercise 9 is actually the output session for exercise 10. Exercise 10 is about switch statements, but the example code doesn't actually have a switch statement. The book doesn't have any switch statements until exercise 13, which is actually about for-loops and string arrays. Exercise 13's output session is actually the output session from exercise 10.These are enormous errors. I'm astonished they made it past the editing phase. And they happen at the worst possible place, when new programmers are still grappling with the basics of the language. They would get completely lost. This is practically a deal breaker for this book, and the reason I'm only giving it 2-stars. The good news is that it's only at the beginning. The problem doesn't show up later.

  • Brian
    2019-06-03 13:26

    Great supplement to K&R, especially when it comes to introducing the basics of using C for OOP. Some of the "Extra Credit" is a bit overambitious, though--most of the time it's fine, but sometimes it's something like "Figure out how to do XYZ", when really figuring out all that stuff is why I'm reading a book in the first place.Still, a good read.

  • Noud
    2019-06-25 07:31

    This is a good beginners book to learning the c programming language. I read the free online version of this book which did, however, contained a couple of small mistakes. I don't know if the paid version also contains these mistakes. Be prepared the get your hands dirty since this book contains many hard exercises which are perfect to learn the language. In my opinion you can only learn programming by doing and this book fits perfectly into this philosophy. This is a good book to get the correct basics for the c programming language. Along with the book "the c programming language" by Kernighan and Ritchie this should be a way to get started with c.The book starts with the very basics of c; how to compile c programs, how to debug, variables, statements, loops, arrays, pointers. But around exercise 20 you get to program your first real programs. The goal at the end of the book is to have a set of tools programmed which are used in programming languages very often. You will have to program dynamic lists, sorting and searching algorithms, hash maps, stacks, binary trees and many more. All of these are important data structures and I think it is a good choice to get them right immediately at the beginning of learning a new language. Most of the exercises are typing over the code which is presented in the book. Afterwards you often have to improve the code you just wrote.I think that this is a good book to get the basis of the c programming language.

  • Jack-Benny
    2019-06-20 13:32

    It could have been a really good book on modern C but it isn't because of many many things...- The author has a really negative tone towards pretty much everything.- I like to read in bed, but thats a bit difficult when the author asks you to look up things on the Internet or go watch his DVD...- The book is full of mistakes (wrong output for the code, wrong chapters etc).- The author doesn't follow the standards and make up his own stuff.- The author complains how C strings are broken. They aren't broken, it's just the way they are in low level language like C compared to the higher ones like Python.- Sometimes the author jumps ahead and skips explaining things with the explanation that it's available on Wikipedia.

  • Chris
    2019-05-30 12:14

    Disclaimer: This review is about the online version as of April 2014.The 4 and 5 star ratings given to this book are clearly from beginners unqualified to rate the quality of a C book.The book is riddled with errors (technical, not just typos) and the entire book basically discusses C in terms of what happens on the particular compilers and machines the author uses. This leads beginners learning C with entirely incorrect assumptions. The author rarely, if ever, points out when implementation defined behavior or undefined behavior occurs.

  • Burak Dede
    2019-06-13 11:25

    Interesting perspective on teaching programming language, this book is for people who don't have much experience with programming languages so if you are already have couple of languages under your belt this may not be for you.

  • Nasser Salah
    2019-05-28 09:06

    it was interesting book and same time challenging, maybe most of us wont bother to finish this book. but trust me it worth it. but if you're a a person that new to programming don't make this book, first one to pick, maybe lot of people would recommended you to read it, but trust me, this book don't explain much and even force you to Linux terminal, if you never used Linux before or even asking yourself what's Linux, there's lot of Linux related books, dont read this book if you are new to programming. if you dont know what book to pick, as my opinion read "Let Us C' it explain everything you need to know, not just the boring staff even explain GUI. even it comes with video tutorials.

  • Carlo
    2019-06-25 09:07

    Personally, I prefer this book and 21st Century C together over K&R, which is a bit crusty at this point in my opinion. I purchased this along with the videos and both are needed to get the maximum benefit. Not for copy/paste coders, this book is for you if you like a very hands-on approach and accruing the theory as you go rather than the other way around.

  • Radhika
    2019-06-04 11:31

    One of the best books I've ever come across on C - Simple enough to digest with good examples and explanations. I found the content easier to comprehend than K&K. I enjoyed playing with the examples in each chapters.

  • Robert Clarke
    2019-05-29 09:14

    Pretty solid book and video course, best used as a complement to the traditional K&R "The C Programming Language", especially if you enjoyed "Learn Python The Hard Way" as your introduction to programming in general. You won't be able to follow along that well without a rudimentary understanding, or at least a few chapters of K&R. This book gives modern context on current best practices and idioms, whereas K&R is rather dry and a bit dated. If you like more opinionated/subjective programming books written more coloquially, go for this one, but don't diss the classics either - K&R is gospel.

  • Katherine
    2019-06-04 14:20

    This book introduced me to the idea of defensive programming. Most examples are interesting. The last few are focused too much on algorithms. It is slightly outdated in the sense that for Mac OS X Mavericks, lldb replaced gdb. The Apple documentation is as usual not that great. It is possible to install gdb through homebrew. This is definitely the "hard way" of learning C without much background on other languages or computer science.

  • Vasil Kolev
    2019-05-30 14:10

    This seems great for beginners, as it goes nicely through the language and gives some very good exercises for people to do. It won't be that useful without the exercises, but still makes a nice read and collects some of the well-known problems of C for people to see. There seems to be some of the author's opinion in the book, but that doesn't spoil it.

  • Dragunov
    2019-06-22 08:04

    Final notes. Ex 27 to 31. Good chapters and a break from the exercises. The rest of the book is sample code on data structures and there's the final page about how the language is dead and I should get a move on. Yeah.PS: I read the incomplete online edition.

  • Adam Chomicki
    2019-06-24 07:20

    As far as I remember, this book has pretty nice explanation for pointers.

  • Delhi Irc
    2019-06-10 15:16

    DL027837 ND5

  • Allyn
    2019-05-31 13:27

    If you want to learn the basics of C in 48 hours, do this. Zed also introduces coding styles and debugging skills that are modern and sadly lacking in most books.