_Tecnologia

Você não precisa saber programação para apreciar a severa crítica que o pai do Linux fez

Linus Torvalds odeia código ruim, então sente-se, pegue a pipoca e divirta-se.

Linus Torvalds é engenheiro de software e o legendário fundador do kernel do Linux. Ele também odeia código ruim, então sente-se, pegue a pipoca e divirta-se.

>>> Criador do Linux duvida muito que inteligências artificiais causem o apocalipse

Torvalds postou esta resposta a um código novo que apareceu na versão 4.3 do Linux. É bastante técnico, mas mesmo que você não entenda as nuances, os xingamentos podem ser apreciados por todos:

Jesus Cristo, gente. Que m*rda é essa?

O conflito que eu vejo é devido a uma b*sta estúpida no novo arquivo cabeçalho gcc. Mas o que me deixa irritado é que isso tem motivos completamente ridículos.

Este é o código antigo em net/ipv6/ip6_output.c:

mtu -= hlen + sizeof(struct frag_hdr);

e este é o novo código “melhorado”, usando coisas que exigem suporte embutido e mágico no compilador, e tem funções wrapper [cujo principal propósito é chamar outra função] ridículas para quando ele não existir:

if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||
mtu <= 7)
goto fail_toobig;

qualquer pessoa que achar que o código acima é (a) legível (b) eficiente (mesmo com o suporte mágico no compilador) (c) particularmente seguro é simplesmente louco e incompetente.

O código acima é uma m*rda, e gera código que é m*rda. É ruim e não tem nenhuma razão de ser.

O código poderia *facilmente* ter sido feito com apenas um condicional único e compreensível, e o compilador na verdade teria gerado código melhor, e o código ficaria melhor e mais compreensível. Por que isso não é:

if (mtu < hlen + sizeof(struct frag_hdr) + 8)
goto fail_toobig;
mtu -= hlen + sizeof(struct frag_hdr);

que tem o mesmo número de linhas, não usa funções auxiliares malucas que ninguém sabe o que fazem, e é muito mais óbvio sobre o que realmente faz? Eu garanto que a segunda versão é mais óbvia e mais fácil de ler e entender. Alguém realmente quer discordar disso?

Sério. Deem para mim *um* motivo pelo qual isso foi escrito dessa forma idiota com dois condicionais diferentes, e uma nova função fora do padrão que quer suporte especial no compilador para gerar um código pior? Uma função brilhante da qual jamais precisamos em qualquer outro lugar, e que é apenas masturbação de compilador.

E sim, você ainda poderia ter problemas de overflow com a expressão “hlen + xyz”, mas, francamente, o código “overflow_usub()” tinha isso também. Então, se você se preocupa com isso, você não fez a coisa certa para começo de conversa.

Então eu realmente não vejo nenhuma razão para este tipo de lixo completamente imbecil.

Diga-me porquê. Afinal, eu não vou autorizar este tipo de coisa completamente insana que gera conflitos no Release Candidate 7, e que parece não ter absolutamente nenhuma razão para ser uma bagunça ilegível e idiota.

O código parece *projetado* para usar esse novo “overflow_usub()”. Parece ser uma desculpa para usar essa função.

E é uma desculpa ruim para c*****o para essa lesão cerebral.

Sinto muito, mas nós não adicionamos novas interfaces idiotas como esta para código novo e idiota assim.

Sim, sim, se isso tivesse ficado dentro da camada de rede, eu nunca teria notado. Mas dado que eu *notei*, eu realmente não quero aprovar isso. Na verdade, eu quero deixar claro para *todo mundo* que um código como este é completamente inaceitável. Qualquer um que pensa que um código como este é “seguro” e “protegido” porque usa funções de detecção de overflow está tão maluco que não é nem engraçado. Tudo o que essa b*sta faz é tornar o código uma confusão ilegível, algo que nenhuma pessoa em sã consciência vai entender o que realmente faz.

Livrem-se disso. E eu *nunca* mais quero ver essa m*rda de novo.

Linus

Fica a lição: não se intrometa no código do Linus.

[Linux via The Register]

Imagem via YouTube

Sair da versão mobile