|
Notícia
Reflexões de um Cachorro LoucoCerveja em troca de código Publicado em 11/07/2011 às 11:55As pessoas me perguntam porque os programadores escrevem códigos e os dão “de graça”. Há muitas razões, mas eu geralmente dou uma: o programador pode acabar em uma conferência e um usuário agradecido pode pagar a ele uma cerveja, ou até mesmo um jantar. Era fevereiro ou março de 1995 a transposição do Linux para o processador Alpha estava bem encaminhada. Conversando com alguns desenvolvedores pela Internet, comecei a ouvir rumores de que a versão para o Alpha não teria “bibliotecas compartilhadas”, mas, em vez disso, binários estaticamente vinculados. Para aqueles que não entendem as ramificações de binários estaticamente vinculados, significa que cada programa tem todas as bibliotecas das quais necessita para ser executado como uma partícula no disco e até mesmo na memória principal do computador, juntamente com o resto do código que o programador escreveu. Nos primórdios da programação, isso não era algo tão horrível como soa hoje, por que poucas bibliotecas poderiam ser compartilhadas, mas a medida em que os sistemas operacionais tornaram-se mais sofisticados e incluíram bibliotecas matemáticas, de gráficos, de segurança, e uma variedade de outros recursos poderiam ser compartilhados entre programas, a duplicação desse código milhares de vezes em um sistema individual, ao vinculá-lo em cada programa, tomou grandes quantidades de espaço em disco, que se tornou intolerável. Além disso, sem bibliotecas compartilhadas, cada vez que se lançava uma correção para a biblioteca, você teria que vinculá-la novamente e redistribuir todas os aplicativos que a utilizavam. Imagine ter que redistribuir um sistema operacional inteiro só porque você consertou um bug em uma biblioteca básica. Isso é impensável hoje. Bibliotecas estaticamente vinculadas eram tão horríveis que técnicas estranhas eram usadas para reduzir o impacto delas. Diversos programas eram vinculados estaticamente juntos para “compartilhar” a biblioteca de códigos (com diferentes pontos de entrada), ainda que os programas não compartilhassem muitos outros recursos. Bibliotecas estaticamente vinculadas para propósitos gerais tornaram-se um demônio a ser combatido. O Ultrix, sistema operacional criado pela Digital Equipment Croporation (DEC), com código originalmente tirado do BSD 4.1c, nunca compartilhou bibliotecas. Nós contratamos um grupo de 15 engenheiros para desenvolver bibliotecas compartilhadas para Ultrix, mas eles acabavam sendo puxados para outros projetos, então, durante cerca de sete anos, a Sun Microsystems derrotava a DEC consistentemente pelo fato de o Ultrix não ter bibliotecas compartilhadas. Isso tornou-se um grande argumento para o grupo de marketing deles e eu, naturalmente, era bem sensível a esse problema. Claro, eu não ficava feliz em ouvir que meu pequeno bebê, Alpha Linux, não teria bibliotecas compartilhadas apesar de o Intel Linux ter. E quando eu não estou feliz, eu conto às pessoas. Um dia eu estava na minha mesa e recebi um e-mail que dizia algo assim: “Querido Sr. Hall, Bem, eu nunca tinha ouvido falar dessa pessoa e duvidei que ela seria capaz de fazer isso. Mas mandar a documentação para ele foi fácil, já que tudo era eletrônico. Então eu mandei. Duas semanas depois, eu recebi a seguinte mensagem: “Querido Mr. Hall, Sem poder acreditar no que eu lia e ainda questionando se isso seria possível, eu fui ao líder da equipe do compilador na DEC e perguntei a ele se ele poderia conversar com essa pessoa sem voz por e-mail. Alguns dias depois, o líder do grupo de compilador veio a minha mesa e disse: “Quem é esse cara? Ele é simplesmente um dos maiores conhecedores de compiladores com o qual eu já conversei!” Alguns dias depois, outro e-mail apareceu: “Querido Mr. Hall, Não pude acreditar nos meus olhos.... quinze engenheiros... sete anos e nada de bibliotecas compartilhadas para Ultrix. Um cara, cinco semanas, bibliotecas compartilhadas para o Alpha Linux.... o que estava errado nessa situação? Bem, como eu disse, houve algumas circunstâncias que retraíram o desenvolvimento do Ultrix, e eu não culpo os engenheiros que estavam na DEC, mas eu ainda estava segurando a respiração até o lançamento do Alpha Linux, em novembro de 1995. Mais tarde naquele ano, ou talvez no começo de 1996, eu estava na conferência USENIX mostrando o Alpha Linux. Como um membro ativo na organização do USENIX e na coordenação do DEC para aquela conferência, eu ficava rodando o hotel, tentando deixar tudo organizado para aquela noite. Um jovem rapaz (pelo menos parecia há 15 anos) com cabelos longos e loiros, usando uma camiseta tie-dye, bermuda e sandálias, acenou para mim e eu contribuí com o aceno, mas sem parar para conversar com ele. Mais tarde, no meu retorno, o mesmo rapaz (agora junto de alguém com mais idade, mas com os mesmos trajes informais) acenou de novo. Novamente eu retribui o aceno, mas continuei com minha correria. Na terceira vez que vi o jovem, ele parou na minha frente e disse: “Senhor Hall, eu só queria agradecê-lo por me fazer um favor”. “Que favor?”, eu perguntei. “Você me mandou uma documentação uma vez”. “Documentação...” eu tentei lembrar “Eu não me lembro.... MEU DEUS! VOCÊ É O CARA DAS BIBLIOTECAS COMPARTILHADAS! Eu tenho notícias para você. Você NUNCA mais vai pagar por qualquer cerveja ou comida na minha presença!” Como ele já tinha passado da idade legal para beber álcool (embora ele parecesse ter quinze anos), toda vez que ele tentava pagar por comida ou bebida, pelo resto da conferência, eu estava lá para interceptar e pagar a conta dele. E não era a Digital Equipment Corporation que estava arcando com isso, era eu mesmo. Eu continuei vendo o rapaz em vários eventos de Linux e toda vez que eu o via tentando comprar comida ou bebida, lá estava eu para intervir e comprar tudo para ele. Quem era essa pessoa? Seu nome é Richard Henderson. Naquele tempo, ele era estudante pela Universidade do Texas. Ele teve uma passagem pela Cygnus e hoje trabalha na Red Hat. Já faz alguns anos que eu não vejo Richard, mas se ele aparecer na minha frente de novo, eu ainda vou pagar comida e bebida para ele. Carpe Diem! Compartilhe
|
|
|||||||
|
||||||||
caramba
legal