DEV Community

Discussion on: When you want to learn C in 2019

Collapse
 
codemouse92 profile image
Jason C. McDonald

"Learn C the Hard Way" by Zed Shaw

It is the best modern book on C I've ever read! It introduces the concepts, pitfalls, features, and gotchas in such a way that not only helps you write good C code, but helps you understand low-level programming as a whole.

Collapse
 
weirdmayo profile image
Daniel Mayovsky

I peeked into the book. I like to have a book independent, and I just want to ask if you know any other C book that doesn't make you watch lecture videos? Just the book and reading and practicing? I know JavaScript by heart, and script with Bash. I know what programming is, so beginner Python-level book is something I want to avoid, just for reference :)

Collapse
 
codemouse92 profile image
Jason C. McDonald

You can absolutely skip the lectures on Learn C the Hard Way. I don't know of a better resource. This one is pretty well oriented towards individuals who know other languages.

Collapse
 
benjcal profile image
Benjamin Calderon

cool! I was afraid that LCTHW was going to be sort of high level-ish. I'll take a look!

I'm going through Build Your Own Lisp because I find myself in sorely need of learn more tooling (autotools) and stdlib.

Thanks for the comment :)

Collapse
 
jabawaka profile image
Jabawaka

"Learn C the hard way" is definitely a great book for modern C. Other than that, I find that like with almost any other programming learning challenge, the best thing to do is find something you want to build and do so in C!

Thread Thread
 
codemouse92 profile image
Jason C. McDonald • Edited

I absolutely agree. However, as a self-trained developer in several languages, I have learned there is significant value to following books and courses. When you learn via a project, you only absorb those parts of the language you needed.

Case in point, although I first started using Python in 2011, it wasn't until 2018 that I learned several tools in Python, including decorators and list comprehensions. Why? I'd never needed them, or else, never realized I could use them in place of some approaches I was more used to. Despite nearly seven years of regular Python development, I knew I had some massive gaps in my knowledge, so I started going through a comprehensive Udemy course for the language, and I'm so glad I did!

This isn't to say that projects aren't important -- you won't ever truly master a language until you build something meaningful in it -- rather, one should pair project-based learning with a good quality book or self-paced course.

Or, if all else fails, go read the documentation cover to cover. (Some of us are demented enough that we can do that.)

Collapse
 
k2t0f12d profile image
Bryan Baldwin • Edited

John Calcote, Autotools: A Practitioner's Guide

Collapse
 
jmlgh profile image
Javi ML

Another excellent book is "Crafting Interpreters" by Bob Nystrom. The second part of the book (still in progress) is how to create an interpreter in C
craftinginterpreters.com/contents....