The cool kids are forcing people to read this at gunpoint nowadays
Right? It’s in the kernel and everything now. Linus likes it. Linus hates everything. HOW MUCH ARE THEY PAYING HIM?
Did he actually say that he likes it? My impression was that it’s not his comfort zone, but he recognizes that for the vast majority of young programmers, C is not their comfort zone. And so, if they don’t hop on this Rust train, the Linux kernel is going to look like a COBOL project in a not too distant future. It does not happen very often that a programming language capable of implementing kernels gains wide-spread adoption.
I’ll never touch Rust.
I hate the syntax and cargo too much for that. If that means that I’ll never write mission critical, low level code, so be it.
What don’t you like about Cargo? Is there another package manager you like more?
Well - of course I prefer a centralized package manager like pacman, which I also use for python packages etc., but I mainly dislike the building process of rust, which is usually done with cargo. No libraries, not even a global cache for already compiled dependencies, no distcc. This makes it infinitely slower than most C/C++ projects. Compiling the kernel is literally faster than compiling a “simple” project like spotify_cli (500+ dependencies, depending on configuration).
So it’s ass from a user perspective, waiting for stuff to compile (just for it to fail, and start from scratch, as some stuff needs a clean build/src dir), and imo very weird from a dev perspective.
I know you’re joking, but uh, both of those are (largely) implemented in Rust…
C is definitely still king, but I wonder if crABI will eventually be able to dethrone it:
https://github.com/rust-lang/rust/issues/111423
If they can define a useful ABI that manages to include lifetimes, that might just be enough of an improvement to get people to switch over from assuming the C ABI everywhere.
Still remains to be seen if a potential rust ABI can avoid becoming a chain to the wall the way the C++ ABI seems to have become. When a lot of C++ers apparently agree with “I’m tired of paying for an ABI stability I’m not using” it’s not so clear it would really be a boon to Rust.
That said no_std
appears to be what people go to for the lean Rust.
And a lot of us are happy not having to juggle shared dependencies, but instead having somewhat fat but self-contained binaries. It’s part of the draw of Go too; fat binaries come up as a way to avoid managing e.g. Python dependencies across OS-es. With Rust and Go you can build just one binary per architecture/libc and be done with it.
The problem is that both Rust and Go are huge. The compiled binaries are bigger and the compilers themselves and slower and more resource intensive. The current benefit to C is that is lean and compiles quickly.
Linux is C only, ever read the rant by Linus last century about C++ ? I was there, in usenet
it was mostly flame wars, alt.bin.pictures.erotica, warez, discussion about The Simpson, and of course The Oracle, and Kibo.
EDIT for young people, the usenet oracle and kibology
Put the gun away and throw that cpp book in the bin, fool. I brought The Linux Kernel Programming Guide, which is in C, and my own socks, which are wool. Now let’s gets crackin.
I already use linux. My feet have been getting cold lately. it never occurred to me to get wool socks. Is this how it starts? Are skirts next?
Unless you use goat wool socks. Then you can go for a old school hippie build. Sandals, long hair, tie dye shirt and go from there.
Never touched rust, so I don’t understand the hype. I’m not arguing against it, mind you, but I’m gathering, more and more, that it’s worth a look. Maybe I’ll look into it after work.
even all of that hype about memory safety and borrow checker you keep hearing aside, the actual coolest thing about Rust is how it does Traits instead of classes and that you can bind arbitrary data to enums
C++? Shoot me
Wat? Don’t you dare talk that way about my favorite multiple personality disorder clusterfuck of a language.
C is the only language, all the rest are mental disorders (/j 😉)
Edit: maybe rust, but it’s on thin ice XD
the author of C++ said that C gives you many opportunities to shoot yourself in the leg. You have a much less chance for this to happen with C++, but when it does, you will blow your whole lower body off
Yeah C++ is a bazooka, C is like the death of 1000 paper cuts.
The paper cuts are all poisonous and kills you anyway.
I haven’t used either, but compiled a lot of C source code and they compiled or could be adjusted easier even for someone who barely knows what printf, fopen, or #include are
Girl, I will wear whatever socks you want, but… pulls out my own gun. We’re reading this damn book instead.
Honestly, I prefer King’s book to any other for intro to C programming. K&R is a classic, and is really quite good for diving into some cool tricks (i.e. postfix operation wizardry).
But as a beginner, I can just say that King’s book is much more digestible. The author holds your hand a lot more and assumes you only have a basic knowledge of programming and the UNIX command line.
That said, the exercises and simple projects do push you to demonstrate what you learned in each chapter as well as enforcing other Computer Science fundamentals like basic data structures (stacks, queues, linked lists) through demonstrations in the C language.
My plan is to revisit K&R after a few other books in C like Advanced Programming In The Unix Environment, Unix Network Programming, and The Linux Programming Interface. All while referencing Beej’s Resources.
I feel like by then I’ll hopefully have a more solid grasp on C and can then more aptly appreciate The K&R Book.