C Programming Language, 2nd Edition
Below are the top discussions from Reddit that mention this Amazon book.
Books Computers & Technology Programming Languages
The authors present the complete guide to ANSI standard C language programming. Written by the developers of C, this new version helps readers keep up with the finalized ANSI standard for C while showing how to take advantage of C's rich set of operators, economy of expression, improved control flow, and data structures. The 2/E has been completely rewritten with additional examples and problem sets to clarify the implementation of difficult language constructs. For years, C programmers have let K&R guide them to building well-structured and efficient programs. Now this same help is available to those working with ANSI compilers. Includes detailed coverage of the C language plus the official C language reference manual for at-a-glance help with syntax notation, declarations, ANSI changes, scope rules, and the list goes on and on.
Reddazon may receive an affiliate commission if you make purchases on Amazon.com through this site. Thank you for using these links to support Reddazon.
Brian W. Kernighan
Reddit Posts and Comments
0 posts • 44 mentions • top 42 shown below
3 points • clockworkgrin
I did a search in this sub and found some resources. Honestly you may want to delete this post or you’ll start getting flamed like I did when I asked a similar question a few days ago. Check this book out. It seems to be the big go to for learning C and has great test yourself type questions C Programming Language, 2nd Edition https://www.amazon.com/dp/0131103628/ref=cm_sw_r_cp_api_fabt1_b5cXFbBESG7PM It’s intended for people that already have baseline knowledge of programming though.
3 points • Drach88
The C Programming Language (aka K&R)
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
3 points • ananbd
This is the definitive guide. That’s how I learned:
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=nodl_
3 points • narrow_assignment
Read this, then practice C, then learn the Xlib library, then you can understand something like dwm(1)
.
2 points • rosenlord
The first two semesters are Java and C, and a majority of classes after that where projects are in a “standardized” language use Java, C, and C++. You will do only Java in the first semester and only C in the second.
If you’re looking to get a head start, I always recommend tutorialspoint, just going through the topics and following along. For C, there’s also this book, though you do not need to have any experience beforehand to succeed.
2 points • 1011_1011
I enjoyed working through K&R’s The C Programming Language . It’s an extremely well-written manual from the creators of the language. There are exercises throughout as well, so you can practice what you are learning.
Edit: I reread your title and realized you are looking for project ideas, not just learning the language. Regardless, the book will help with learning but not so much on currently relevant projects.
2 points • TrySimplifying
The classic book on the subject, The C Programming Language by Kernighan and Ritchie (aka the K&R book), is still one of the best resources available to learn the language from the ground up. You would not go wrong to start with studying that book; every C programmer should have a copy in my opinion.
2 points • haussmeister
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_4?dchild=1&keywords=learn+c&qid=1608355592&sr=8-4
That is all you need.
2 points • onelycyclist
Tosta noin https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
2 points • slowsuby
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=nodl_
1 points • algostrat133
this has nothing to do with UE4.
read this book.
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
1 points • k__e__n
Well, K&R is like the book on C.
1 points • earthboundkid
Wait, no, here is the one you should read: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
1 points • pyxed
Read the original C Programming Language. It will take a while, but it will pay off in the end. If you don't understand something, read it again until you do.
1 points • orange_poof
- Buy this book https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
- Go through the first few chapters, up to pointers, and do some of the exercises.
- Low level will be incredibly easy after that.
It’s not a hard class. The only hard class in the CS major is operating systems, which you will avoid by only getting a minor.
1 points • CAM1998
The so-called K&R book (also easy to find as a PDF) is an absolute classic and the authoritative text for C. Written for programmers, filled with examples, and goes through each part of the language.
1 points • poriyaMH
I suggest reading the infamous K&R. It is old, but it's still the bible of C programmers. It contains exercises and it's beginner friendly.
C doesn't really have a ton of features, so I'd say you should learn almost everything covered in that book. You might want to put extra focus on pointers, pointer arithmetic, structures and code safety though as they can be the most complicated ones you use frequently.
The time it takes is usually dependent on the quality of the time you spend learning. I can't say anything about that. But being a pro requires practice. You should write programs, a lot of them. C consists of simple building blocks that are used to build complicated things, so many things can go wrong when trying to write a program. Your errors can be discovered, only through practice and research.
1 points • NZShooter2019
Others have already provided some great answers. However, if you want to do it the hard way, grab a copy of the bible.
1 points • QAOP_Space
Just get yourself K&R and be done.
1 points • Mojo_Ryzen
Head over to /r/c_programming
The classic K&R book is still the one that's most recommended - https://www.amazon.com/gp/product/0131103628
1 points • EducatedEvil
>Read this, it's how I got started. If you have questions I will be happy to answer them for you.
Then silence.
1 points • acroporaguardian
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=nodl_
100% serious.
1 points • hbdgas
You could always start fresh this way.
1 points • RecentWorth
https://www.amazon.com/dp/0131103628/ref=cm_sw_r_apa_i_d4RCEbAEVWFZJ That's the one I used but I didn't get much out of learning C as I was depressed I didn't find the book interesting
1 points • Shockingly_corrupt
Did your class have you read k&r?
1 points • noilddude
You have about a month in between summer and fall quarter. I recommend you make use of it by reading The C Programming Language. It is probably the most influential book in Computer Science history (as short as it's been). It's short, concise, and well-written. One of the authors created the C language. Both contributed to the development of Unix.
One month is probably not enough to finish CS50. Unless you work on it full time that entire month.
1 points • StockDC2
I would highly recommend K&R. Hands down the best book for C.
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
2 points • AnishHP13
you mean you guys used
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
for your reading material?
2 points • klevihart
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
It’s an older book, and uses an older standard than the course, but you can complete this book in a week and you would have the C capabilities you need.
https://beej.us/guide/bgnet/ This guide will give you the basics you need for Project 1.
Between those two resources you should be ok.
No class is really going to prepare you for GIOS, however GIOS will prepare you for many other classes.
1 points • zeromnil
If you want a good exposition on technical writing (with corny little nerd jokes) and also a primer on C then https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628 is your book.
imdumb64 makes a good point. If it's general programming they require a background in, c/c++ is a hell of way to start. primers on data structures and algorithms will be your best bet.
1 points • Poddster
The /r/cprogramming sidebar recommends:
- https://en.wikibooks.org/wiki/C_Programming
- K&R C, aka The C Programming language. You can easily find pdfs of this online
I recommend both :)
0 points • RazorxV2
Give this book a try. You can find it cheaper I believe but it’s written in a way that teaches you good programming practices. Plus it’s written by the guy that made the language.
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=asc_df_0131103628/?tag=hyprod-20&linkCode=df0&hvadid=266029226349&hvpos=&hvnetw=g&hvrand=7311684101121013504&hvpone=&hvptwo=&hvqmt=&hvdev=m&hvdvcmdl=&hvlocint=&hvlocphy=9011070&hvtargid=pla-422923046090&psc=1
1 points • Updatebjarni
I have no trouble accessing the FAQ. Anyway, the number one resource for learning C is K&R. The FAQ also links to this book list. Using a book as a guide and writing your own code is a much more effective way to learn than watching videos.
1 points • aRoomForEpsilon
I'm refreshing my knowledge of C right now because I'm working through the book Computer Systems: A Programmer's Perspective. I recommend that you consider learning systems programming at some point, it doesn't have to be right away, because it reveals some important concepts that help us reason about computers that help us solve problems with them. So if you learn C then you'd be in a position to learn systems programming. If you decide to learn C then I'd suggest you use Kernighan and Ritchie's book The C Programming Language because it was written in a way that helps people learn more effectively, so you'll (a) learn more by using it and (b) have a standard to compare other books/videos/learning resources to.
One thing to keep in mind with both C and C++ is that there aren't much (any) language features that prevents a programmer from making serious mistakes in their code, like python does (or Java, C#, etc). For example, in python if you have an array with 3 elements, arr[0], arr[1], arr[2], you can't access arr[3]. However, you can access arr[3] in C and C++. So you'll have to not only learn the language, but the proper style of using the language to prevent you from making those mistakes. It's really not that hard, but it takes time and practice.
After you learn C, you can jump into DSA books that use C++ because they often give you a C++ primer in the first couple of chapters. Just make sure to do a thorough job because C++ has some features like classes that C doesn't and so you'll just have to learn them. I'd recommend the book Data Structures and Other Objects Using C++ by Michael Main and Walter Savitch, because it teaches DSA in the context of being a software engineer. Another one I'd recommend is Algorithms in C++ by Robert Sedgewick. Keep in mind that it is an older book and a newer version was released that uses Java. There are others that might be better suggestions, I bought the one written by Goodrich and Tamassia but I haven't read it yet, and I'm not familiar with the others.
Sorry this was a long message. Keep in mind that when it comes to learning any subject, while there might be an optimal choice that helps you achieve your goals faster, there is no wrong choice. You'll always gain some benefit, even though you might not be reaching your goal as fast. Also remember that the most important thing when it comes to learning, by far, is by generating the information you are learning. In the case of programming, that means writing programs. If a book or a video doesn't explain a concept well enough, write a program to try to figure it out. You will learn more effectively that way. If you think that you understand a concept well enough but the author asks you to write a program similar to one you've already written, write it! You'll often learn something interesting that you weren't expecting. Do this reasonably, though, you don't want to take 2 years to learn something that could have been learned in 3 months. Be like cookie monster but be that way with writing programs.
1 points • ShenmeNamaeSollich
The Linux Programming Interface by Michael Kerrisk is the main suggested, but optional, textbook. It’s decent so far, but I’m barely past the intro ...
Even though the course was just revamped, it seems only the last assignment is in Rust, and the initial Bash assignment is gone - the others are about the same.
If you’re new to C, “Kernihan & Ritchie” (K&R C) is the standard book.
The Rust Programming Language book is available online for free.
1 points • RetiredMandalorian
I suggest this course: https://www.udemy.com/course/c-programming-for-beginners-/
If you can't buy it, then there are a handful of free tutorial courses on YouTube, but you get what you pay for. The course link above will teach you a ton of content and it's one of the courses I used to learn C.
If you like reading, then I suggest: https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
1 points • wizards_tower
I learned C from the cs50 course and then went deeper with The C Programming Language ('K&R') book. The book is awesome because there are a bunch of exercises to work through. The book is also free online from multiple places. It's a great book for reference even after working through it.
I see people recommend C Programming: A Modern Approach often so I'm sure it's also a great source for learning. I've never used it though. I blindly prefer K&R though because it covers the entirety of the language in about 180 pages where A Modern Approach is up around 800 pages I believe.
If you're looking for an absolute beginner source, I'd suggest the first 6 lectures of cs50. It's probably the easiest to digest of sources that I've come across.
1 points • mantrap2
Kernighan and many others have said: one language is never enough. But a dozen languages represent 95% of all programming.
So a more accurate question is "which programming language should I learn first?"
IMO C++ is probably the best answer all-around for practical coverage and probability of use but you'll likely run into needing Python, Java and others soon enough.
https://www.youtube.com/watch?v=O9upVbGSBFo&t=4096s
The C Programming Language.pdf
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628
1 points • titus_42
I expected a more elaborated answer, but ok.
Books:
- C Programming Language, 2nd Edition -- https://www.amazon.com/dp/0131103628 ; Kernighan and Ritchie did a really great book, and quite well-known to be "the bible" of the C language for years now. It's quite hard to digest, but good-to-have and read into it when you feel like you don't get a concept.
- C: A Reference Manual, 5th Edition -- https://www.amazon.com/dp/013089592X ; this one is really well-known to be a good reference for almost everything you would need in C.
​
Website:
I would suggest doing some kata, or for example, trying:
- exercism.io ; the track with mentors whatever the language is really interesting and you can get really valuable feedback.
- https://www.learn-c.org/ ; interactive, and quite nice to go through concepts quickly.
​
Overall:
I think to learn a language you really need to have the additional motivation punch, and IMO the best way to get it is to have a specific project in mind.
For example, if you are idea is to create a website, I would defo not recommend starting by C that can be ... repealing at first and you will defo not see any good learning C for web development before a really long time.
So please, re-think twice why you want to learn programming or learn C. Your main idea of what you wanna accomplish later will also lead your programming journey.
For example, if you want to in 1 year be able to create your own "CS:GO Cheat" you will defo have a specific programming journey: memory reading, memory writing, opengl, etc, etc.
​
​
Enjoy!
3 points • theavengedCguy
Disclaimer: I'm a skeptic about how serious your will power is. I see tons of these posts all the time. Most say they're interested until they see the work load and realize it's going to be way more difficult than they had imagined. Read this comment in it's entirety and prove me wrong. There is a list of resources to help you achieve this goal if you're serious.
Source: am professional software developer with a B.S. in CS.
You're trying to jump right into an Olympic swimming pool with Michael Phelps in his prime without ever training or learning how to swim first.
Computer science is a very deep hole with a steep learning curve. What you're looking to do is something very complex and NOT at all basic or easy. There is a LOT of overhead to this project and you likely won't even be able to get close to it within a year or two of dedicated programming/practicing. I'm just being blunt with you. Lots of people have this idea that they're going to be able to do anything (such as writing a GBA emulator from scratch using a tool [Python] that's not really suited for the job).
Ambition is great, but you need to temper expectations - big time.
I'd suggest learning basics first. Crawl -> Walk -> Jog -> Run -> Race. Write a few small scripts to do simple things. Tax calculators and shopping lists are always good ideas and starting points. Learn a bit about Python's syntax and some of its features. Learn to read the docs and use them effectively. Learn to be able to push passed problems you face instead of stopping when challenged because there will be a LOT of them if you continue on this path. Then write some bigger problems. Learn about OOP and how to design projects. Learn about data structures and the standard algorithms. Learn about Big O Notation and why optimizing your code is important. Learn about software architecture. Now you've learned about 1/100 of what you'll need to tackle this project. You'll need to learn some discrete math, logic, computer design and architecture, Operating Systems, knowledge of electrical engineering isn't required, but it can help understand how things work in the physical world, etc. My point is that this is going to be very challenging, but if that's you're thing, more power to you. Ngl, posts like this make me cringe and annoy me. "I just learned about this, let me send someone to the moon using JavaScript or Python!" But if you're serious, there's a lot of fun to be had and a lot of really interesting things to learn.
For some resources, check this out. Some of it may be a bit advanced, but they're worth it if you can stick with it.
- https://automatetheboringstuff.com/ - to learn the basics and learn how to crawl
- https://pragprog.com/titles/jbmaze/mazes-for-programmers/ - some great reading to expand your horizons and learn more about algorithms
- https://www.khanacademy.org/ - for math refreshers if needed, great resource all-around
- https://teachyourselfcs.com/ - your basis for serious programming and learning. Super dense and difficult, but will be astronomically better than any Udemy course you'll find
- https://www.nand2tetris.org/ - what will be your holy grail book. Learning hardware design all the way up to writing software for it. Starts with transistors and HDL and goes up to you building tetris for your very own computer. If you can get to this point and finish, making the GB emulator will be a cake walk.
- http://bgb.bircd.org/pandocs.htm - resource for GB emulation - contains technical info about the system
- https://gbdev.io/pandocs/ - more technical info for the GB
- https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628 - a book that'll be super helpful for learning C (don't start here, not beginner friendly)
1 points • randomperson83
You don't want to dilute yourself with too many high level languages. You don't need classes when you have structs. Java is for losers and so is supporting oracle. C is the only language that matters. They both force you to over abstract your code and rely on unknown functions. They are only good in enterprise environments where there is so much abstraction you can't see anything. You don't need to know any language except C. If someone tells you otherwise, they are wrong. Everything can be done in C with enough time. You will want to get good at math, especially discrete math. You will be writing a lot of proofs. https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628, https://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504, http://amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X(this is a hacking book I like), https://www.amazon.com/Practical-Binary-Analysis-Instrumentation-Disassembly/dp/1593279124(this one is good for beginners in hacking). The more languages you learn is irrelevant as they want you to know how to program well in one language and assume you will be able to learn others if needed, unless you are in the embedded space, in which you will do C and some flavor of ASM.