09 — The Anti-Recommendation List¶
An anti-rec list is more useful than a rec list. Everyone will tell you what to read; almost no one will tell you what to not read. Below are the resources popular enough that a beginner will trip over them — and defective enough that you should route around them. Each has a specific reason, not a vague vibe.
Named. Explained. Avoided.¶
1. Learn C the Hard Way — Zed A. Shaw¶
Verdict: Do not use.
Reddit’s r/C_Programming has a standing consensus that LCTHW is riddled with technical errors. Notable critiques:
Tim Hentenaar — “Learn C the Wrong Way” — chapter-by-chapter takedown; search that title for the current mirror. It documents dozens of factual errors, non-idiomatic code, and outright bad advice.
Author has been publicly hostile to correction, unlike (say) Beej who accepts errata continuously.
Use instead: Beej’s Guide to C Programming, or K.N. King ch. 1-10.
2. GeeksForGeeks — C section¶
Verdict: Last-resort reference only. Cross-check everything.
Content is written by rotating student authors, uneven quality control.
Common bugs: incorrect malloc/free patterns, off-by-one loops in “reference” solutions, subtly wrong printf format specifiers.
SEO dominant, so it will appear top of every Google search — resist the reflex.
Use instead: cppreference.com for language/library semantics; man7.org for POSIX; K.N. King for pedagogy.
3. tutorialspoint.com — C tutorial¶
Verdict: Skip.
2000s-era prose, K&R-style examples but with
void main()(undefined behavior) and pre-ANSI idioms in places.No community moderation.
Use instead: Beej’s Guide.
4. w3schools — C¶
Verdict: Skip.
w3schools has quietly added a C track. It is exactly what you would expect from w3schools: shallow, imprecise, missing the semantics that make C hard. Historically w3schools’ HTML/CSS content was community-flagged for years (see w3fools.com — old but the critique holds); the C content inherits the same quality bar.
Use instead: Anything else in this folder.
5. “Learn C in 10 Hours” / “Master C in 24 Hours” YouTube playlists¶
Verdict: Skip.
Almost always a transcription of K.N. King (or worse) without the exercises. You cannot learn C by watching — you learn by segfaulting your own code and reading the resulting gdb trace. If a video is longer than 30 minutes and doesn’t include real debugging, it is entertainment.
Signal check: if the thumbnail has ALL CAPS + red arrows + “🔥”, close the tab.
Use instead: Jacob Sorber’s short focused videos (see 04_youtube_channels.md).
6. Udemy “Complete C Bootcamp” (any instance)¶
Verdict: Skip unless your employer pays and it’s part of a mandatory training track.
Instructors are typically not shipping C in production.
Content is padded to justify the price. 30-hour courses that could be 3 hours.
No feedback loop; you can complete assignments incorrectly and still get “certified.”
Use instead: Duke Coursera specialization — actual grader, actual grading.
7. C Programming in Easy Steps / Head First C / “For Dummies”¶
Verdict: Skip if you can already program in any language.
These are for people who have never seen a for-loop. You are past that. Reading these will waste 30 hours you could spend on K.N. King.
Use instead: K.N. King, ch. 1-10. Or Beej.
8. Stack Overflow’s C questions circa 2015-2020, uncritically¶
Verdict: Verify every answer against cppreference before pasting.
Many highly-upvoted answers are correct for the questioner’s platform but not portable.
Post-2023 answers are increasingly LLM-generated and look authoritative but include subtle UB.
Comments beneath answers often contain the correction — read them.
Use instead: cppreference.com first, then SO for “how is this typically done” flavor.
9. AI-generated C without verification (Copilot, ChatGPT default, Cursor autocomplete)¶
Verdict: Explain-mode only. Never paste generated C without reading it line by line.
LLMs hallucinate
size_tvsssize_t, missfree()s, pick wrong printf specifiers, insert nonexistent function names that look like real libc.The failure mode is the code compiles and mostly-runs, then segfaults on your production input.
See 11_tools_setup/08_ai_assist_for_c.md for the full policy. TL;DR: use AI to explain other people’s C; do not use AI to write your C while you are still learning.
10. “Modern C++ patterns applied to C”¶
Verdict: Reject the framing.
Blogs that try to bring RAII, smart-pointer semantics, or class-like structs into C are usually people who wish they were writing C++. C is a different language with different discipline. Learn C from C sources (Gustedt, K&R, Wellons).
Use instead: Chris Wellons’ arena-allocator posts on nullprogram.com.
The meta-rule¶
If a resource is optimizing for your click, it is not optimizing for your competence. The high-signal C resources — cppreference, man7, Beej, Gustedt’s HAL PDF, Wellons’ blog — do not have ads, do not have upsells, and do not have a “10 things you didn’t know about C!” homepage. Follow the money; follow the citations; follow the working engineers.
Return to README.md · Next: ../10_communities/README.md