this post was submitted on 13 Apr 2024
730 points (96.0% liked)
linuxmemes
20464 readers
226 users here now
I use Arch btw
Sister communities:
- LemmyMemes: Memes
- LemmyShitpost: Anything and everything goes.
- RISA: Star Trek memes and shitposts
Community rules
- Follow the site-wide rules and code of conduct
- Be civil
- Post Linux-related content
- No recent reposts
Please report posts and comments that break these rules!
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
He is is OK with OOP. The Linux kernel is full of OPP C, but he doesn't like C++
He writes Qt C++ for his diving app though.
I think Linus did it in C with GTK but who took it moved it C++ and Qt. Lazy searching didn't dig up the story.
It was originally Gtk and they rewrote it with Qt: https://www.youtube.com/watch?v=gGZyVSOnqm0
But Linus does write C++/Qt code: https://github.com/subsurface/subsurface/commit/1b16d570a1b6700295153bd6597b148b65000458
I write C++, but I don't like it. I don't think any one should be claiming Linus doesn't like it because he doesn't know it. If he wants to contribute to this project, it must be C++.
I didn't think anyone was making that claim? Either way I'm certainly not trying to.
Yes, this is true, it's just that he was also included in the decision making process to switch to it in the first place, and I feel like his continued use of it makes me think it doesn't have to be as awful as everyone makes it out to be, or he wouldn't use it at all.
Ask him. It's not like he has publically changed his mind. I think he just went with other developers he had handed the project to.
Here is an alternative Piped link(s):
https://www.piped.video/watch?v=gGZyVSOnqm0
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I'm open-source; check me out at GitHub.
He’s not though, you should look into it
Look at the kernel code. It's full of OOP C. There absolutely are objects in the kernel.
Yea but all that function pointer indirection can actually hurt performance (especially caching), some things in C++ actually can be faster just because the compiler is better at optimizing for that.
There is nothing you can do in C++ or C, that can't be done in the other. It's the kind of the point of those languages.
Technically you're right, but I don't think that changes what I said about optimization. There are still cases where equivalent C++ code can be faster than the C version merely due to different optimizations used.
Meh, I'm unconvinced. If it's any kind of hot spot, in either, you can optimize the hell out of it. C++ is often more bloated is it's just a harder language pretending to be an easier one.
That's fine, you don't have to agree. Personally I do like to use just a few features of C++ without going too crazy, like simple classes and maybe one level of inheritance, but I don't really get into templates or exceptions or other really complex/controversial stuff. I prefer having the stronger typing and better readability of this kind of C++, and I think it helps me make less mistakes, but I realize not everyone agrees, and that's ok.
I think that's the thing, C++ is so broad. It's like many languages together. It's complex with lots of implicitness yet unsafe. There is loads of support in compilers and tools to mitigate that, but that's treatment not cure.
I think the same could be said about C now too, it is continuing to evolve itself with newer standards too just like C++. People choose to only use C features that they want, same goes for C++.
And that is true of any language, but C++ is without doubt one of the broadest. There are very different ways of working with it that compile very differently.
Is that really such a bad thing though?
Yes. Too much for people to learn, so they make mistakes. I've seen compilers get confused with C++. Though it was MS's....
If a language isn't tight, it should at least be safe. C++ is neither. You can do anything with it, but I don't think it's ever really a good tool for a particular job.