« Amanhã é o último dia para votar nos Favoritos de 2004 | Main | Comunidade PowerPC »

terça-feira, 14 de dezembro de 2004

Universidade de Stanford conclui que Linux tem menos bugs que seus concorrentes proprietários

Esta matéria da Wired adianta os resultados de um estudo realizado desde 2000 no Centro de Pesquisas em Ciência da Computação da Universidade de Stanford ... (Ler na íntegra)

Publicado por brain às 12:55

Comentários dos leitores

(Termos de Uso)

» Comentário de zé do caixão () em 14/12 16:14

Pronto, a piralhada vai ter orgasmos de novo :-)

BTW, foi comparado o _kernel_ do linux(~5 milhões de linhas) com o código fonte estimado de todo o windows XP (~40 milhões de linhas)? Qual é lógica disso?

» Comentário de Augusto Campos () em 14/12 16:18

zé do caixão, na matéria da wired eles mencionam mesmo as linhas de código do Windows XP, e eu achei mesmo sem sentido. Mas o estudo, aparentemente, limitou-se a estudar o kernel do Linux isoladamente (sem compará-lo ao XP), e o termo de comparação foi um estudo da universidade Carnegia Mellon, que aparentemente não usou o XP também. Aliás, eu também evitei de mencionar o Windows na minha notícia, justamente porque ele não tem nada a ver com o assunto. Mas aparentemente você não se conteve e precisou trazê-lo para a discussão mesmo assim...

» Comentário de Paulo Junqueira da Costa () em 14/12 16:24

O que vale é que o Linux têm um nível alto de qualidade, e uma manutenção eficiente que faz com que os bugs críticos sejam resolvidos logo. Isso é o que importa.

Um dos grandes adventos do linux foi trazer competição. Se os proprietários, em sua média, têm mais bugs que o linux, que corram atrás. Ótimo para todo mundo.

» Comentário de zé do caixão () em 14/12 16:33

Augusto, eu fiz o comentário com base no link disponibilizado na notícia. Se o windows foi intruduzido não foi por mim, e sim pelo artigo citado da wired.

» Comentário de Augusto Campos () em 14/12 16:46

Bom, você pode falar mal da wired aqui se quiser, mas seria mais eficaz fazer suas críticas pelo endereço de contato deles. Tem uma lista em http://www.wired.com/news/feedback/

Agora, querer questionar a lógica do estudo da Universidade de Stanford porque a Wired fez uma cobertura em que mencionava um termo de comparação não pesquisado é dose. Não é culpa dos pesquisadores a cobertura que eles recebem.

» Comentário de zé do caixão () em 14/12 16:59

Augusto, estou questionando a "cobertura" da wired, e não o estudo original (até por ele aínda não foi divulgado, como você mesmo adiantou). Portanto, não existem condições para criticar ou defender tal pesquisa.

» Comentário de Daniel Domingues () em 14/12 17:13

Seria interessante um estudo comparativo entre sistemas operacionais de código fonte aberto... Linux, FreeBSD, OpenBSD...

Isso se já não existe um e, se existe, alguém poderia me passar um link.

» Comentário de Augusto Campos () em 14/12 17:15

ah bom!

» Comentário de Leidson Campos (PopolonY2k) () em 14/12 20:48

Zé do Caixão,

O que adianta o Windiws ter 40 milhões de linhas e o Linux 5 milhões ???????

O Linux com 35 milhões de linhas a menos consegue fazer tudo e muito mais do que o Windows com seus 40 milhões. A quantidade de linhas codificadas não reflete qualidade e muito menos recursos implementados muitas vezes. O que pode refletir é que os desenvolvedores do Linux sescrevem código muito mais otimizado.


Leidson Campos
PlanetaMessenger.org

» Comentário de Henrique Vicente () em 14/12 23:08

Leidson Campos,
uma correćão,
Linux é apenas o Kernel, o núcleo do sistema, e foi isso que foi analisado.
Todavia, porém, contudo, contanto, mas o ruwindow$ tem todas essas linhas e daí?
O GNU/Linux, e boa parte das outras plataformas livres estão bem mais maduras.. que o ruwindow$.

» Comentário de Kid X () em 15/12 00:13

O Linux é um KERNEL! Apenas um KERNEL...
Acontece que a mídia diz que "Linux" é sinônimo de Software Livre ao todo, o Linux é um soft livre, mas não é todo o GNU/Software Livre. Ou falam que o Linux é um sistema operacional, para ficar mais fácil de se entender do que Software Livre, open source ou freeware.

:-P

» Comentário de Kid X () em 15/12 00:14

O Linux é um KERNEL! Apenas um KERNEL...
Acontece que a mídia diz que "Linux" é sinônimo de Software Livre ao todo, o Linux é um soft livre, mas não é todo o GNU/Software Livre. Ou falam que o Linux é um sistema operacional, para ficar mais fácil de se entender do que Software Livre, open source ou freeware.

Sistema Operacional é o Kernel Linux com o GCC, Bash, X.Org, KDE, OpenOffice, etc.

:-P

» Comentário de eje del mal () em 15/12 02:00

O que me preocupa mais é o outro lado. Com uma taxa tão elevada de defeitos nos softwares isto só tente a desvalorizar mais a profissão. É melhor pensar em escolher melhores ferramentas e também em fazer pressão em universidades -- convenhamos, algumas certificações não dão sangue...

» Comentário de bebeto_maya () em 15/12 02:46

Zé do caixão. . .

"Augusto, estou questionando a "cobertura" da wired, e não o estudo original (até por ele aínda não foi divulgado, como você mesmo adiantou). Portanto, não existem condições para criticar ou defender tal pesquisa."

__Condições existem. E discordo do Augusto quando isola o fenômeno da Variável Windows, já que é um sistema onipresente,sintoma da síndrome burra do capitalismo alienista.

__O fato é que não se pode quantificar qualidade do sistema em número de linhas e sim em eficiência, você está seguindo a vertente de massificação do Baboo...Eu posso escrever um código com 100.000.000 de ''go to'' que notadamente não vai servir pra porra nenhuma.O código do Firefox, a citar, é uma fração do código do Internet Explorer!E é bem lógico dizer que quanto menos linhas um S.O tiver em seu código, mantendo a mesma funcionalidade melhor.Então ponto pro Linux, menos linhas e consequentemente menos BUGs.

» Comentário de Pierre () em 15/12 08:31

Aproveitando o gancho, gostaria de tirar uma dúvida com os colegas.
Quando se fala em 5 milhoes de linhas de códigos no kernel do Linux, isto inclui os modulos que sao agregados a ele? Falei besteira né, mas ´uma duvida mesmo!!
Não tem nada haver, os drivers de placa de rede, o suporte a sistemas de arquivo, etc.
Para esclarecer a minha dúvida, eu tenho na minha maquina o Ext3, mas nao compilei o suporte a ReiserFs, a minha pergunta é, este suporte a ReiserFS conta ou nao?
Um detalhe, quando falam em 40 milhoes no XP, a parte de programaçao e a Interface Gráfica estao incluidas nestas linhas?
Ou o kernel em si, são os controles de acesso a dispositivos, etc.
Bem pessoal, é uma dúvida.
Um abraço a todos.

» Comentário de Ark () em 15/12 08:59

Pierre: foi comparado o código inteiro do Windows, e aí reside a crítica a matéria (com razão) do Zé do Caixão. Mas atualmente não se pode nem criticar uma matéria, que já vem nego descendo o sarrafo. Mesmo que isso não tenha nada a ver com a qualidade do Linux.

» Comentário de rivo () em 15/12 09:12

bebeto:

"menos linhas e consequentemente menos BUGs"

nada a ver, não é pq tem menas linhas que terão menos bugs, posso ter bem mais linhas de código e ter um ambiente de teste super especialista, uma equipe de desenvolvimento muito bem preparada enfim condições ambientais que favorecam qualidade no produto. E a m$ tem muita grana para investir num ambiente destes.

"vertente de massificação do Baboo"

o m$ Baboo pode ser considerado outro microsunita lunático ou mais um produto bugado da m$?(brincadeirinha)

e mais uma coisa qq que use linux sabe que ele possui muitos bugs, além da falta de qualidade dos seus programas, falta de drivers e alto consumo de memória por parte das principais interfaces gráficas. Sem falar que particularmente acho a arquitetura dele um tanto frágil, que negócio é este de deixar o kernel exposto?

valeu

» Comentário de hamacker () em 15/12 11:51

Pelo que sei mesmo a universidade mencionada nao teve acesso ao codigo fonte do windows, eles fizeram um teste usando dois programas.
Mas gostaria de fazer um comentário dos comentários mencionados acima.
Os engenheiros e programadores da MS são tão capazes quandos os engenheiros e programadores que trabalham com software livre com Linux, Apache, Mozilla,... o fato deles trabalharem na MS, não quer dizer que fazem um trabalho porco.
A capacidade do Windows de criar + bugs advem não das falhas de programas, afinal voce nao vê o notepad, wordpad, calculadora dando problemas, vê ?
Mas os bugs do windows geralmente tem a ver com falhas de segurança e a retro-compatibilidade, isso vem duma politica de tentar agradar o usuário ao máximo (ergonomia) e preocupar-se menos com erros gerados por ele. Vê aquele autorun dos CDs ? E o VBScripts nos emails, editor de textos, planilhas ? Aquele browser peneira ? Eles criaram o método de instalacao burra (mas fácil) de next->next->finish.

Um kernel monolitico como o linux, quando há falhas elas são muito mais visiveis em contra partida essas linkagens dinamicas de drivers externos são altamente sensiveis a modificações no kernel (winmodem, nvidia, ...) e produzem bugs bem + irados do que no windows, na maior parte das vezes até deixando de funcionar. Até hoje eu não sei porque certos drivers tem de estar dentro do kernel ? (alguem explica ?)

Entao quando se compara Linux com Windows, tem de se notar que apesarem de serem SOs, eles tem diferenças gritantes nos modelos de concepção desde o inicio (um se preocupa + com segurança e outro + com facilidade).

» Comentário de Patola () em 15/12 11:59

Pra mim o fato de o Linux ser apenas um kernel e o Windows ser um sistema operacional inteiro ainda dá mais mérito ao Linux. Acho muito mais difícil escrever código de baixo nível sem bugs do que código de alto nível. No Linux você tem zilhões de linhas escrevendo valores na memória, lendo valores, dando goto pra tudo quanto é lado: muito, muito mais difíceis de sabe o que estão fazendo, quiçá então depurar. Já em uma aplicação de alto nível - digamos, a interface gráfica do Windows - você pode utilizar programação orientada a objetos e metodologias de robustez com mais facilidade. E normalmente o código é muito, muito mais legível do que em um kernel.

Então dizer que o kernel Linux tem MENOS, MUITO MENOS bugs por linhas do que o Windows inteiro, incluindo interface gráfica, é um grande mérito.

» Comentário de Penetro () em 15/12 12:06

Discordo que os programas para linux tenham qualidade ruim. Isso é generalizar. Mesmo porque a qualidade dos programas não tem nada a ver com o sistema.

Quanto aos drivers, há alguns que funcionam muito melhor no linux do que no windows, como por exemplo o da minha placa de captura de vídeo. (Na realidade o driver oficial nem unciona no windows)

Quanto à quantidade de linhas de código x bugs, isso é uma certeze estatística: Quanto mais complexo o sistema, mas propenso a falhas ele está.

Mas como essa "certeza" é qualitativa, para se avaliar a qualidade do código como um todo, uma boa aproximação é comparar a quantidade de bugs conhecidos com a quantidade de linhas de código.
( Acho que é mais ou menos óbvio que uma equipe de desenvolvimento experiente vai produzir menos bugs por linha de código do que uma de iniciantes).

O objetivo do estudo da Stanford é mensurar o nível de qualidade de um software desenvolvido no modelo livre (no caso o Kernel do Linux) em relação ao um padrão médio de software comercial.

O padrão médio usado foi resultado de um outro estudo (este da Carnegie Mellon), ou seja, 20 a 30 bugs por 1000 linhas de software. Já o Kernel do Linux tem uma taxa de 0,17 bugs por 1000 linhas de código.

Conclusões:
a. O Kernel do Linux tem mais qualidade que os softwares comerciais médios

b. O paradigma de desenvolvimento de software livre (sem uma grande corporação para controlá-lo) funciona, ao contrário do que diz o marketing de certas companhias.

c. "A bola é redonda, o jogo dura 45 minutos. O resto é teoria" :)


» Comentário de Penetro () em 15/12 12:11

Ops.... corrigindo ... (o bug)

"A bola é redonda. O jogo dura 90 minutos. Isso é um fato. O resto é teoria".

» Comentário de hamacker () em 15/12 14:37

O fato dum driver rodar melhor no linux do que no windows não é a questão que levantei. Até mesmo porque como qualquer programação isso poderia ocorrer em ambos os lados.
A bandeira que levantei é que num kernel monolítico um bug é muito mais aparente e as vezes bem mais irado.

Uma falha no kernel pode comprometer muitos serviços, então como consequencia o estilo de programação é bem feita, e pelo que sei + burocratica agora por causa da possibilidade de colação de codigos maliciosos e/ou que infrijam patentes.

Acho que o kernel do linux nao vai poder acomodar todos os drivers para sempre, uma hora ou outra vao ter que desmembrar camadas de aplicacao, criarem uma especie de NDIS para placas de rede e outras especificacoes para acomodar separadamente os mais diversos hardwares.

» Comentário de hamacker () em 15/12 15:03

Patola, o windows tambem tem um kernel, só que um microkernel e provavelmente tem menos linhas que o kernel do linux. As caracteristicas do kernel do windows (NT) foram herdadas da Digital, lembra ? No inicio havia até uma versao para PowerPC.

É que apenas um kernel nao faz verão, entao o windows vem com a interface grafica e alguns aplicativos, um pacotao semelhante a redhat, suse, conectiva,...

Mas tem de se ter cuidado, nos comentarios acima o pessoal tá malhando o windows e tá parecendo que se houver um bug no ping.exe do windows a culpa é do windows, mas se o mesmo problema ocorrer no ping do linux, a culpa não é do linux.

Meu comentário pessoal é que 5mi de linhas para um kernel é linha para caramba, um kernel deveria prover camadas para abstrair dos softwares a comunicacao com o hardware (gerenciar cpu, memoria,...).

Se voce pensar como o windows inteiro como sendo um kernel até que ele tem poucas linhas(40 milhoes), pois com interface grafica, ie, windows media player, suporte a temas, bla, bla, bla,... o linux tem 5mi e precisa ate dum gerenciador de boot, SystemV, fstab,... para ser carregado o básico do básico.
Abraços,

» Comentário de Patola () em 15/12 15:43

hamacker, me desculpe, mas seu pensamento está tortuoso. Não comparei o ping.exe com o BSD ping - disse que o Linux, como software de baixo nível, deveria ter mais bugs por cada mil linhas do que o Windows, que sendo o kernel + aplicativos, e estando portanto muito mais na camada de alto nível, tem muito melhores condições de se livrar dos bugs.

O que você disse não desqualifica o que eu disse; ao contrário, piora a situação para o lado do Windows - um Microkernel tem uma arquitetura muito mais modular e que facilita a localização de bugs e o Linux ainda está levando vantagem. E se tem poucas linhas de código, isso ainda aumenta, no Windows, a proporção de código de alto nível, menos bugado por princípio. Quer dizer, se com isso tudo o mero kernel Linux ainda é muito mais robusto, caramba, o Windows é uma fábrica de bugs mesmo!

Na verdade eu tenho alguns anos já trabalhando com software proprietário, e por conhecer as metodologias e expedientes do mesmo, assim como as do software livre, fica um pouco mais claro por que isso acontece, mesmo com a microsoft contratando prêmios Nobel para ajudarem-na no código. Mas aí já vou ser um pouco off-topic e passar muita experiência pessoal de meu trabalho, algo que não desejo. Mas a lição do Eric Raymond, "with enough eyeballs, all bugs are shallow", é mais profunda do que parece...

A propósito: ser 8 vezes maiores que o Linux para implementar um sistema operacional inteiro não é pouco não. Pra você ter uma idéia, o KDE 3.2 inteiro tem mais ou menos 4 milhões; o Xfree86 (acho que o X.org também), o maior projeto de código livre existente, tem 7,5 milhões de linhas de código. Mais alguns poucos milhões de linhas dos aplicativos GNU e BSD e com metade (talvez um pouco mais, contando aplicativos adicionais como firefox - apesar de, com o konqueror, ele ser código duplicado) do Windows temos um sistema operacional inteiro com a mesma funcionalidade.

» Comentário de zé do caixão () em 15/12 16:52

Pessoal, o kernel do família NT(NT 4, 2000, XP, 2003) não pode ser qualificado como microkernel. Ele já foi mais modular nos tempos do NT 3.51 quando o gerenciamento de vídeo era em um processo separado, mas foi reunido com o resto do sistema para ser mais rápido. E, ao contrário do mito que isso tornava o windows mais estável, não influenciou na estabilidade(estou falando desse caso pontual, e não de sistemas microkernels em geral) Gerenciamento de memória, gerenciamento de IO, gerenciamento de processos, etc, todos executam em um mesmo processo.

Quando se fala em "40 milhões de linhas de código do windows XP", presumo que está se falando de kernel, drivers, e componentes que vem junto com o windows(sendo equivalente com uma distribuição linux qualquer). Agora, como pode-se considerar o que é o kernel do windows? Considera-se tudo que roda no processo onde residem o gerenciamento de memória, disco, IO, processos, etc? Mas e drivers de terceiros(que também rodam em modo kernel), que não são feitos pela microsoft? Com certeza, tem muito menos que 40 milhões de linhas de código, e imagino que menos que 5 milhões.

E quando foi a última vez que vcs ouviram falar em um bug no "kernel do windows"? Ou mais especificamente, uma falha de segurança(já que é o que mais aparece na mídia) causada por um bug no kernel do windows? Muito tempo, já que os bugs de segurança no windows são causados em sua maioria por serviços ou por aplicativos(o IE é de longe o mais problemático) que acompanham a "distribuição" (vamos fazer essa analogia) windows. Seria bem interessante e elucidativo se um desses estudos que aparecem todo dia fizesse essa comparação, de kernel x kernel.

» Comentário de bebeto_maya () em 15/12 22:07

rivo falou. . .
"bebeto:

"menos linhas e consequentemente menos BUGs"

nada a ver, não é pq tem menas linhas que terão menos bugs, posso ter bem mais linhas de código e ter um ambiente de teste super especialista, uma equipe de desenvolvimento muito bem preparada enfim condições ambientais que favorecam qualidade no produto. E a m$ tem muita grana para investir num ambiente destes.

"vertente de massificação do Baboo"

o m$ Baboo pode ser considerado outro microsunita lunático ou mais um produto bugado da m$?(brincadeirinha)

e mais uma coisa qq que use linux sabe que ele possui muitos bugs, além da falta de qualidade dos seus programas, falta de drivers e alto consumo de memória por parte das principais interfaces gráficas. Sem falar que particularmente acho a arquitetura dele um tanto frágil, que negócio é este de deixar o kernel exposto?

valeu"

__Concordo, mas eu generalizei, eu não disse em nenhum momento que um programa de código mosntruoso seja obrigatoriamente mais bugado.Contudo tem mais chance de sê-lo,devido a complexidade.Não sou programador mas fiz um curso em C uma vez, e embora não tenha aprendido nada, não me esqueço das sabias palavras do professor."Programas enxutos não pegam resfriado"!

» Comentário de Henrique Vicente () em 15/12 23:57

Vamos a uma comparaćão idiota,
vamos fazer um software para somar de 0 a 100, com a següinte rotina: adiciona o número, passa para o número següinte, adiciona novamente.. passa novamente e assim continua num processo repetitivo...
ai chega alguém mais inteligente e olha.. existe uma fórmula para cálcular esse somatório bem mais simples... ai faz, o código fica menor? Fica.
Probabilidades de erros diminuem? Sim.
As probabilidades de erro diminuiram porque diminuiu o tamanho? Também, afinal você pode notar algum "erro bestinha" mas fácil, porém não diminuiram por causa disso principalmente, mas sim, porque souberam usar algo mais simples.
Não devemos ser medíocres achando que tamanho não influencia, influencia sim... pode não influenciar tanto, mas influencia, e o tamanho do código é influenciado pela inteligente em deixar as coisas mais simples do programador... para que um somatório gigante quando posso deduzir a fórmula na mão e colocar lá algo de uma linha apenas ao invés de uma rotina com usando for, if.. e tudo mais? :)
E o meio como o kernel Linux e softwares livres são produzidos ajuda a várias pessoas colaborarem mesmo com coisas assim, pequenas... mas que fazem a diferenća...

» Comentário de Gafanhootoo () em 16/12 04:47

Interessante Linux 0.17 = 1000; 1 bug em cada 5.8823529 linhas de código, nos outros a média seria 20~30, assumiremos 25 por 1000, então teremos em 5.8823529 linhas 147.05882 vezes mais bugs nos O.S. proprietários.
Se fosse o dobro, o triplo, ainda vai lá, mas 147~ vezes mais bugs? Isto é triste! Chega a ser deprimente.

» Comentário de hamacker () em 16/12 10:41

Pessoal desencana com esse negocio de número de linhas, o numero de linhas é algo relativo. Quando comecei a programar eu fazia programas bem enxutos, escovava bits e tudo mais. Mas com o tempo passei a observar mais o comportamento dos usuarios e a realidade fez eu ter que colocar mais rotinas de verificacao e espalhar ainda mais funcoes para facilitar a manutencao, mais critérios para minimizar falhas de segurança, encher o programa de caixa de dialogos, etc... e isso fez o programa maior porém com o mesmo objetivo e funcionalidade de antes.

É como voce preencher um cadastro, se eu fizer a ficha apenas os campos de preenchimento e o botao de post, isso terá uma quantidade de linhas. Agora se eu fizer o mesmo cadastro, mas que confira o digito verificador do CPF, preencha uma Lista de Estados da Federacao para ele escolher, etc... ainda vai ser o mesmo cadastro porém com + linhas de programacao.

Entao + linhas num programa vai ter mais bugs ? É relativo, o BUG seria ainda maior entrar no cadastro CPFs inexistentes, siglas de estados que nao existem, etc...

Os bugs estão mais ligados a eficiencia de programação e comportamento do que a quantidade de linhas.

No passado quando os programas eram todos semi-texto e as linguagens todas procedurais, os bugs quase nao apareciam e quando apareciam eram relacionados a "veja, aqui hamacker esse campo ficou cortado" e nao eram exatamente bugs, porém com o advento dos botoes, cursores, tabs,... o comportamento do usuario final mudou e ele quer clicar num botao e sair tudo pronto, porém o programador nao consegue imaginar todas as situacoes previsiveis dentro do seu programa e isso poderá refletir um bugs. E os bugs de hoje são bem mais horrendos do que aqueles que eram feitos com linguagens procedurais.

Criar um relatório no passado era dificil, mas tinhamos que se preocupar apenas com a rotina dos calculos e a diagramacao resumia-se apenas uma meia-duzia de codigos (negrito, italico,...) para decorar, atualmente um relatório simples tem toda uma diagramação sofisticada e cheia de quebras, senti calafrios quando descobri como escrever relatorios em PDF usando classes em PHP, essas facilidades que usuario quer com certeza requererão + linhas de programação, + bugs ? Na minha opniao requer + conhecimento e tempo do programador, mas nao gera + bugs.

O formulário de comentários está desativado devido à mudança de sistema de gerenciamento de conteúdo.