Posted on 11/12/2015 6:43:40 AM PST by ShadowAce
I’m not an expert on Linux by any means. I’m not an operating systems guy.
It does seem to me that any code that’s the product of a team tends to become quite bloated.
The object-oriented paradigm is mostly an infrastructure for managing large-group development efforts. That comes at a cost, but that cost is more than justified by the usefulness of the resulting product.
I read the linked email in which Linus tore into the developer. All I can say is I hope Linus’ code is better than his grammar. :-)
Well, Linus s a naturalized citizen, having grown up in Finland.
Right. The other guys have almost zero chance of getting laid from any female developer. So why would they have any motivation to treat them any better from how they treat a guy?
Linux development is distributed around the world. Most of these people would never see each other, except perhaps at occasional conferences. They know each other as email addresses.
The women who write crappy code are being treated with the same contempt that a guy who couldn't do his job would be. And their little princess egos can't handle that.
That's pretty much it in a nutshell.
I always wondered how people who can't leave the house without "putting their face on" could make the myth of a "fragile male ego," float.
Yeah, I knew it was the wrong thread to make that joke...but I did it anyway. ;-)
The “goto” is entirely besides the point.
The first point is the tendency of Linus to be blunt.
The second point is the use of whiz-bang compiler features that few understand and which don’t even do what they purport to do (well). The coding equivalent of don’t use a 50 cent word when a good 5 cent word will do the same job and better.
But don’t get bogged down on the “goto”.
I found it succinct and direct - But then I'm the kind of anal bastard that appreciates everything direct and 'on the table'... And in high-stress, overloaded environments of any kind (that I have ever been in), such frank communication is exactly what you get. If you don't like the heat, stay out of the kitchen.
Christ people. This is just sh*t.
The conflict I get is due to stupid new gcc header file crap. But what
makes me upset is that the crap is for completely bogus reasons.
This is the old code in net/ipv6/ip6_output.c:
mtu -= hlen + sizeof(struct frag_hdr);
and this is the new “improved” code that uses fancy stuff that wants
magical built-in compiler support and has silly wrapper functions for
when it doesn't exist:
if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||
mtu <= 7)
goto fail_toobig;
and anybody who thinks that the above is
(a) legible
(b) efficient (even with the magical compiler support)
(c) particularly safe
is just incompetent and out to lunch.
The above code is sh*t, and it generates shit code. It looks bad, and
there's no reason for it.
The code could *easily* have been done with just a single and
understandable conditional, and the compiler would actually have
generated better code, and the code would look better and more
understandable. Why is this not
if (mtu < hlen + sizeof(struct frag_hdr) + 8)
goto fail_toobig;
mtu -= hlen + sizeof(struct frag_hdr);
which is the same number of lines, doesn't use crazy helper functions
that nobody knows what they do, and is much more obvious what it
actually does.
I guarantee that the second more obvious version is easier to read and
understand. Does anybody really want to dispute this?
Really. Give me *one* reason why it was written in that idiotic way
with two different conditionals, and a shiny new nonstandard function
that wants particular compiler support to generate even half-way sane
code, and even then generates worse code? A shiny function that we
have never ever needed anywhere else, and that is just
compiler-masturbation.
And yes, you still could have overflow issues if the whole “hlen +
xyz” expression overflows, but quite frankly, the “overflow_usub()”
code had that too. So if you worry about that, then you damn well
didn't do the right thing to begin with.
So I really see no reason for this kind of complete idiotic crap.
Tell me why. Because I'm not pulling this kind of completely insane
stuff that generates conflicts at rc7 time, and that seems to have
absolutely no reason for being anm idiotic unreadable mess.
The code seems *designed* to use that new “overflow_usub()” code. It
seems to be an excuse to use that function.
And it's a f*cking bad excuse for that braindamage.
I'm sorry, but we don't add idiotic new interfaces like this for
idiotic new code like that.
Yes, yes, if this had stayed inside the network layer I would never
have noticed. But since I *did* notice, I really don't want to pull
this. In fact, I want to make it clear to *everybody* that code like
this is completely unacceptable. Anybody who thinks that code like
this is “safe” and “secure” because it uses fancy overflow detection
functions is so far out to lunch that it's not even funny. All this
kind of crap does is to make the code a unreadable mess with code that
no sane person will ever really understand what it actually does.
Get rid of it. And I don't *ever* want to see that shit again.
Linus
I read through the rest of the thread and a few of the others. Everyone else is calm and polite. I think Linus has an anger issue. I wonder how many qualified developers have been put off because they don't want to work with an immature bully?
Yes, I think it is - if one takes the repetition for emphasis.
I read through the rest of the thread and a few of the others. Everyone else is calm and polite. I think Linus has an anger issue. I wonder how many qualified developers have been put off because they don't want to work with an immature bully?
LOTS of 'qualified' people can't operate where the rubber meets the road. LOTS. Every collaborative project I have ever been a member of has comparable language behind closed doors, and also has a tyrannical project manager at the lead - and many times that tyrant has been me. Decorum be damned - it's keeping the project in trim and on time that counts. Sometimes that takes being a jerk. Sometimes that takes 'my way or the highway'. It isn't a peaceful, stress-free process. In fact, it will eat your soul, if you let it... Especially a long-term or continuous project. And generally, the lead and his direct lieutenants are the ones that carry that stress, and get it done on budget and on time...
Crybabies go home.
Exactly right - Enjoyed and do agree with your whole post. Thanks for your reply.
Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.