Loading...

A CAPA DO JAVA

Original

Abril de 2001

Este ensaio surgiu de conversas que tive com vários outros programadores sobre por que Java parecia suspeito. Não é uma crítica ao Java! É um estudo de caso do radar de hackers.

Com o tempo, os hackers desenvolvem um olfato para a boa (e má) tecnologia. Achei que seria interessante tentar escrever o que fez Java parecer suspeito para mim.

Algumas pessoas que leram isso acham que é uma tentativa interessante de escrever sobre algo que não foi escrito antes. Outros dizem que vou ter problemas por parecer estar escrevendo sobre coisas que não entendo. Então, só para constar, deixe-me esclarecer que não estou escrevendo aqui sobre Java (que nunca usei), mas sobre o radar de hackers (sobre o qual pensei muito).

O aforismo "você não pode julgar um livro pela capa" teve origem nos tempos em que os livros eram vendidos em capas de papelão simples, para serem encadernados por cada comprador de acordo com seu próprio gosto. Naqueles dias, você não podia julgar um livro pela capa. Mas a publicação avançou desde então: os editores atuais trabalham duro para tornar a capa algo pelo qual você possa julgar um livro.

Passo muito tempo em livrarias e sinto que agora aprendi a entender tudo o que os editores querem me dizer sobre um livro, e talvez um pouco mais. O tempo que não passei em livrarias, passei principalmente na frente de computadores, e sinto que aprendi, em certa medida, a julgar a tecnologia pela capa também. Pode ser apenas sorte, mas me livrei de algumas tecnologias que se mostraram verdadeiras bombas.

Até agora, Java parece uma bomba para mim. Nunca escrevi um programa Java, nunca olhei mais do que os livros de referência sobre ele, mas tenho a sensação de que não será uma linguagem muito bem-sucedida. Posso estar enganado; fazer previsões sobre tecnologia é um negócio perigoso. Mas, por mais que valha a pena, como uma espécie de cápsula do tempo, aqui está o porquê de não gostar da aparência do Java:

  1. Foi tão energicamente promovido. Padrões reais não precisam ser promovidos. Ninguém teve que promover C, ou Unix, ou HTML. Um padrão real tende a estar já estabelecido quando a maioria das pessoas ouve falar dele. Na tela do radar de hackers, Perl é tão grande quanto Java, ou maior, apenas pela força de seus próprios méritos.

  2. É direcionado para baixo. No white paper original do Java, Gosling diz explicitamente que Java foi projetado para não ser muito difícil para programadores acostumados com C. Foi projetado para ser outro C++: C mais algumas ideias tiradas de linguagens mais avançadas. Como os criadores de sitcoms ou junk food ou pacotes turísticos, os designers do Java estavam conscientemente projetando um produto para pessoas não tão inteligentes quanto eles. Historicamente, as linguagens projetadas para outras pessoas usarem têm sido ruins: Cobol, PL/I, Pascal, Ada, C++. As boas linguagens foram aquelas que foram projetadas para seus próprios criadores: C, Perl, Smalltalk, Lisp.

  3. Tem motivos ocultos. Alguém disse uma vez que o mundo seria um lugar melhor se as pessoas só escrevessem livros porque tinham algo a dizer, em vez de porque queriam escrever um livro. Da mesma forma, a razão pela qual ouvimos falar de Java o tempo todo não é porque ele tem algo a dizer sobre linguagens de programação. Ouvimos falar de Java como parte de um plano da Sun para minar a Microsoft.

  4. Ninguém o ama. Programadores C, Perl, Python, Smalltalk e Lisp amam suas linguagens. Nunca ouvi ninguém dizer que amava Java.

  5. As pessoas são forçadas a usá-lo. Muitas das pessoas que conheço usando Java estão usando porque se sentem obrigadas. Ou é algo que eles sentiram que tinham que fazer para obter financiamento, ou algo que eles pensaram que os clientes desejariam, ou algo que foram instruídos a fazer pela gerência. Essas são pessoas inteligentes; se a tecnologia fosse boa, eles a teriam usado voluntariamente.

  6. Tem muitos cozinheiros. As melhores linguagens de programação foram desenvolvidas por pequenos grupos. Java parece ser administrado por um comitê. Se acabar sendo uma boa linguagem, será a primeira vez na história que um comitê projetou uma boa linguagem.

  7. É burocrático. Pelo pouco que sei sobre Java, parece haver muitos protocolos para fazer as coisas. Linguagens realmente boas não são assim. Elas permitem que você faça o que quiser e saiam do caminho.

  8. É pseudo-moderno. A Sun agora finge que Java é um esforço de linguagem de código aberto de base, como Perl ou Python. Este acontece de ser controlado por uma empresa gigante. Portanto, a linguagem provavelmente terá a mesma aspereza monótona de qualquer outra coisa que sai de uma grande empresa.

  9. É projetado para grandes organizações. Grandes organizações têm objetivos diferentes dos hackers. Eles querem linguagens que sejam (acredita-se que sejam) adequadas para uso por grandes equipes de programadores medíocres - linguagens com recursos que, como os limitadores de velocidade em caminhões U-Haul, impedem os tolos de fazer muito dano. Hackers não gostam de uma linguagem que fala com eles. Hackers só querem poder. Historicamente, as linguagens projetadas para grandes organizações (PL/I, Ada) perderam, enquanto as linguagens de hackers (C, Perl) ganharam. O motivo: o hacker adolescente de hoje é o CTO de amanhã.

  10. As pessoas erradas gostam dele. Os programadores que mais admiro não são, no geral, cativados pelo Java. Quem gosta de Java? Ternos, que não sabem uma linguagem da outra, mas sabem que continuam ouvindo falar de Java na imprensa; programadores de grandes empresas, que ficam surpresos ao descobrir que existe algo ainda melhor que C++; e calouros plug-and-chug, que estão prontos para gostar de qualquer coisa que possa conseguir um emprego (isso vai estar no teste?). As opiniões dessas pessoas mudam com cada vento.

  11. Seu pai está em apuros. O modelo de negócios da Sun está sendo minado em duas frentes. Processadores Intel baratos, do mesmo tipo usado em máquinas de desktop, agora são mais do que rápidos o suficiente para servidores. E o FreeBSD parece ser pelo menos tão bom quanto o Solaris para servidores. A publicidade da Sun implica que você precisa de servidores Sun para aplicações de alta resistência. Se isso fosse verdade, o Yahoo seria o primeiro na fila para comprar Suns; mas quando trabalhei lá, os servidores eram todos caixas Intel rodando FreeBSD. Isso é um mau presságio para o futuro da Sun. Se a Sun tiver problemas, ela pode arrastar o Java com ela.

  12. O DoD gosta dele. O Departamento de Defesa está incentivando os desenvolvedores a usar Java. Isso me parece o sinal mais condenatório de todos. O Departamento de Defesa faz um bom (embora caro) trabalho de defender o país, mas eles amam planos, procedimentos e protocolos. Sua cultura é o oposto da cultura hacker; em questões de software, eles tenderão a apostar errado. A última vez que o DoD realmente gostou de uma linguagem de programação, foi Ada.

Lembre-se, esta não é uma crítica ao Java, mas uma crítica à sua capa. Não conheço Java bem o suficiente para gostar ou não gostar. Esta é apenas uma explicação de por que não acho que estou ansioso para aprender.

Pode parecer arrogante descartar uma linguagem antes mesmo de tentar escrever programas nela. Mas isso é algo que todos os programadores têm que fazer. Existem muitas tecnologias por aí para aprender todas. Você tem que aprender a julgar pelos sinais externos quais valerão seu tempo. Da mesma forma, descartei de forma arrogante Cobol, Ada, Visual Basic, IBM AS400, VRML, ISO 9000, o protocolo SET, VMS, Novell Netware e CORBA, entre outros. Eles simplesmente cheiravam mal.

Pode ser que, no caso do Java, eu esteja enganado. Pode ser que uma linguagem promovida por uma grande empresa para minar outra, projetada por um comitê para um público "mainstream", promovida aos céus e amada pelo DoD, seja, no entanto, uma linguagem limpa, bela e poderosa que eu adoraria programar. Pode ser, mas parece muito improvável.