Loading...

A CAPA DO JAVA

Original

Abril de 2001

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

Com o tempo, os hackers desenvolvem um faro para tecnologias boas (e ruins). Achei que poderia ser interessante tentar escrever o que fez o 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 eu vou ter problemas por parecer estar escrevendo sobre coisas que não entendo. Então, apenas para caso isso ajude de alguma forma, deixe-me esclarecer que não estou escrevendo aqui sobre o Java (que nunca usei) mas sobre o radar do hacker (sobre o qual pensei muito).

O aforismo "você não pode julgar um livro pela capa" se originou 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 de hoje trabalham duro para fazer a capa algo pelo qual você possa julgar um livro.

Passo muito tempo em livrarias e sinto que 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 sua capa também. Pode ser apenas sorte, mas me salvei de algumas tecnologias que se revelaram realmente ruins.

Até agora, o Java parece ser uma dessas tecnologias ruins para mim. Nunca escrevi um programa em Java, nunca mais do que olhei por cima de livros de referência sobre ele, mas tenho a sensação de que não será uma linguagem muito bem-sucedida. Posso acabar me enganando; fazer previsões sobre tecnologia é um negócio perigoso. Mas pelo que vale a pena, como uma espécie de cápsula do tempo, aqui está por que não gosto do visual do Java:

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

  2. Ele mira baixo. No artigo original sobre o Java, Gosling diz explicitamente que o Java foi projetado para não ser muito difícil para programadores acostumados com o C. Foi projetado para ser outro C++: C mais algumas ideias retiradas de linguagens mais avançadas. Como os criadores de sitcoms ou comida rápida ou pacotes turísticos, os designers do Java conscientemente projetaram 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 têm sido aquelas que foram projetadas para seus próprios criadores: C, Perl, Smalltalk, Lisp.

  3. Ele tem motivos ocultos. Alguém uma vez disse 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 tanto sobre o Java não é porque ele tem algo a dizer sobre linguagens de programação. Ouvimos sobre o Java como parte de um plano da Sun para minar a Microsoft.

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

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

  6. Tem muitos cozinheiros. As melhores linguagens de programação foram desenvolvidas por pequenos grupos. O Java parece ser gerenciado 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. Do pouco que sei sobre Java, parece haver muitos protocolos para fazer as coisas. Realmente boas linguagens não são assim. Elas deixam você fazer o que você quer e saem do seu caminho.

  8. É pseudo-moderno. A Sun agora finge que o Java é um esforço de linguagem de código aberto e de base popular como o Perl ou o Python. Essa apenas acontece de ser controlada por uma grande empresa. Então a linguagem provavelmente terá a mesma mesmice desajeitada de qualquer outra coisa que saia de uma grande empresa.

  9. É projetada para grandes organizações. Grandes organizações têm objetivos diferentes dos hackers. Eles querem linguagens que sejam (acreditadas como) adequadas para uso por grandes equipes de programadores medianos - linguagens com recursos que, como os limitadores de velocidade em caminhões U-Haul, impedem que os tolos causem muito dano. Hackers não gostam de uma linguagem que os trata com condescendência. Hackers só querem poder. Historicamente, as linguagens projetadas para grandes organizações (PL/I, Ada) perderam, enquanto as linguagens de hackers (C, Perl) venceram. A razão: o hacker adolescente de hoje é o CTO de amanhã.

  10. As pessoas erradas gostam disso. Os programadores que mais admiro não são, no geral, cativados pelo Java. Quem gosta do Java? Executivos, que não sabem uma linguagem da outra, mas sabem que eles continuam ouvindo falar do Java na imprensa; programadores em grandes empresas, que ficam impressionados em descobrir que há algo ainda melhor que o C++; e estudantes de graduação plug-and-chug, que estão prontos para gostar de qualquer coisa que possa conseguir-lhes um emprego (isso vai estar no teste?). A opinião dessas pessoas muda 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 usados em computadores de mesa, agora são mais do que rápidos o suficiente para servidores. E o FreeBSD parece ser pelo menos tão bom um sistema operacional para servidores quanto o Solaris. A publicidade da Sun implica que você precisa de servidores Sun para aplicativos de força industrial. Se isso fosse verdade, o Yahoo estaria na primeira fila para comprar Suns; mas quando eu trabalhei lá, os servidores eram todos caixas Intel rodando FreeBSD. Isso não é um bom presságio para o futuro da Sun. Se a Sun enfrentar problemas, eles podem arrastar o Java junto com eles.

  12. O DoD gosta disso. O Departamento de Defesa está encorajando os desenvolvedores a usar o Java. Isso me parece o sinal mais condenatório de todos. O Departamento de Defesa faz um ótimo (embora caro) trabalho de defender o país, mas eles amam planos e 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 o Ada.

Tenha em mente que isso não é uma crítica ao Java, mas uma crítica à sua capa. Eu não conheço o Java bem o suficiente para gostar ou não gostar dele. Isso é apenas uma explicação de por que eu não me sinto ansioso para aprendê-lo.

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

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", supervalorizada até o céu e amada pelo DoD, seja, no entanto, uma linguagem limpa, bonita e poderosa na qual eu adoraria programar. Pode ser, mas parece muito improvável.