How do i git gud at C?

I already now a decent amount of brainlet Python and pajeet Java and have started doing Zed Shaw's C book but I don't really like the style.

He puts a lot of emphasis on rote memorization of the syntax and using C features before explaining at all what they do. For example, he starts using pointers for strings without explaining at all what pointers are or why you should.

That fucking space nigger also has a habit of presenting his autistic opinions as facts even when most other sources totally contradict what he says. I also don't like how it's a lot of just copying code verbatim from the book rather than actually applying the concepts to solve problems.

What are some non-shit alternatives for teaching myself C?
>inb4 don't bother; I'm doing this out of necessity

Attached: 41gHB8KelXL._SX377_BO1,204,203,200_.jpg (379x499, 33K)

You don't, learn another lang

>python
>java
kill you're self

Like what?
C is still a powerful and dominant language

Only if you live in ur mom's basement

K&R is still the definitive way to learn C. You just have to read ALL of it (yes, past the points where you've probably stopped before). Once you do that, you research libraries and debuggers, and then you're basically finished learning C.

What fucking language then?
>Inb4 that faggot who watched a YouTube video about making a keylogger in Python and thinks he is hot shit

Attached: 1527172624976.jpg (728x380, 35K)

Powerful as long as you'll sink your time into systems programming with minimal debugging power
Dominant as in ...? Maybe kernels, but good luck doing that.

They're what we're forced to use at my uni.

The Java class was extra lame because the professor wouldn't let us use any of the higher-level convenience features and didn't do much with the OOP parts of Java so I had to teach myself all of that.

Did you miss the part where I said I was learning C because I have to?

From what I've seen they basically treated Java like C on steroids rather than the high-level OO language it is.

What about c# instead?

>tfw I know CS degrees are a meme but I'm not paying a dime for it because I joined the (((military))) right after high school

Write a generic qsort and use it with some made up struct as its data. You will need to understand pointers (void ones) casting, function pointers (how will the qsort know how to compare a type it doesn't know? You give it a function pointer) and some memory management (run it in valgrind). This is a good start.

>that 30 year old boomer who still wants to learn C

Attached: 1526878642058s.jpg (250x229, 8K)

>Dominant as in ...? Maybe kernels
As in every piece of actual good software and worthwhile code, be it from Linux to some crypto library.

>systems programming
Exactly. What language is pretty much every modern device driver written in?

Worthwhile code? C is the reason many projects have severe security flaws, design is one thing but a language that you have to check every parameter otherwise it'll segfault is half the reason too.

Nobody's arguing that C doesn't have a shit ton of major flaws.

Once something comes along that's as fast and universal as C and isn't managed by SJW fucktards who can't agree on official language standards to save their lives C will probably become obsolete quickly.

This.

You see, if you learn C by something like K&R you could have the false impression that you "know" C.

Now go ahead and open some file from the Linux Kernel or config files for TCP. You won't understand a thing. It's a shitfest full of #ifdef 's with cryptic abreviations all over the place. You have to learn the entirety of the underlying hardware down to the bits to get what's going on, it's really just a fancy way of pushing bits arround in Assembly. Also C has no structure, most C files are just "piled up" in order to speed things up.


You don't believe me?
Then build something like websockets with it's own package protocol. After that experience you might get it.

Don't learn C unless you really really have to.

pointers are just variables that point to other variables, you make the pointer and then point to other shit through your program for better performance

someone correct me if im wrong, please. I found pointers confusing too

>for better performance
delet this

I know what OP's referring to.

In Zed's book, the first time you see pointers it's in the context of something like
char *name_string = "user" as a shortcut to create a string variable rather than the way they're more commonly used which makes it confusing as fuck when you see that same syntax used for wildly different things in other examples.

tripfags everyone

ITT: people too stupid for C saying shit about C

but thats exactly WHAT IT WAS DESIGNED FOR - its a system programming language

not mainly for better performance but simply because you want a pointer to shit, not the shit itself

C in a nutshell
modern c
21st century c

make sure to use valgrind and a modern build system right from the beginning, avoid GNU gettext later on, use stuff like Apache Portable Runtime for memory pools when implementing more sophisticated data structures out of nodes.

>python is brainlet
>java is pajeet
You're never gonna make it. Please stay away from C, it's far too pure for such a faggot like you.

tfw maybe one day zig and rust won't be broken pieces of shit

>you're self
kys

Watch Carl Herold's C course. It'll really touch you in a certain way.

kek

I remember back when Rust actually had potential right after it first came out and everybody thought it would replace C within a couple years.

shiet, 22 but thats me. Have to find an internship, wanted to learn C but will have to jump straight into pajeet langs kk