CAPA DO JAVA
OriginalAbril de 2001
Este ensaio foi desenvolvido a partir de conversas que tive com vários outros programadores sobre por que Java cheirava 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 tecnologia boa (e ruim). Pensei que seria interessante tentar escrever o que fez Java parecer suspeito para mim.
Algumas pessoas que leram isto acham que é uma tentativa interessante de escrever sobre algo que nunca foi escrito antes. Outros dizem que terei problemas por parecer estar escrevendo sobre coisas que não entendo. Então, só para o caso de fazer algum bem, deixe-me esclarecer que não estou escrevendo aqui sobre Java (que nunca usei), mas sobre radar de hacker (sobre o qual pensei muito).
O aforismo "você não pode dizer um livro pela capa" originou-se na época em que os livros eram vendidos em capas de papelão simples, para serem encadernadas por cada comprador de acordo com seu próprio gosto. Naquela época, você não podia dizer um livro pela capa. Mas a publicação avançou desde então: os editores de hoje trabalham duro para fazer da capa algo pelo qual você pode dizer um livro.
Eu passo muito tempo em livrarias e sinto como se já tivesse aprendido a entender tudo o que as editoras 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 como se tivesse aprendido, até certo ponto, a julgar a tecnologia pela capa também. Pode ser apenas sorte, mas me salvei de algumas tecnologias que acabaram sendo realmente péssimas.
Até agora, Java parece uma porcaria para mim. Nunca escrevi um programa Java, nunca mais do que dei uma olhada em livros de referência sobre ele, mas tenho um palpite 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, como uma espécie de cápsula do tempo, aqui está o motivo pelo qual não gosto da aparência do Java:
-
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 já estar estabelecido quando a maioria das pessoas ouve falar dele. Na tela do radar hacker, Perl é tão grande quanto Java, ou maior, apenas pela força de seus próprios méritos.
-
É mirado baixo. No white paper original do Java, Gosling diz explicitamente que o Java foi projetado para não ser muito difícil para programadores acostumados com C. Ele foi projetado para ser outro C++: C mais algumas ideias tiradas de linguagens mais avançadas. Como os criadores de seriados cômicos 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 foram ruins: Cobol, PL/I, Pascal, Ada, C++. As boas linguagens foram aquelas que foram projetadas para seus próprios criadores: C, Perl, Smalltalk, Lisp.
-
Ele tem segundas intenções. Alguém disse uma vez que o mundo seria um lugar melhor se as pessoas escrevessem livros apenas 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.
-
Ninguém ama isso. Programadores de C, Perl, Python, Smalltalk e Lisp amam suas linguagens. Nunca ouvi ninguém dizer que amava Java.
-
As pessoas são forçadas a usá-lo. Muitas das pessoas que conheço que usam Java o usam porque sentem que precisam. Ou é algo que sentiram que tinham que fazer para obter financiamento, ou algo que pensaram que os clientes iriam querer, ou algo que lhes foi dito para fazer pela gerência. Essas são pessoas inteligentes; se a tecnologia fosse boa, elas a teriam usado voluntariamente.
-
Tem muitos cozinheiros. As melhores linguagens de programação foram desenvolvidas por pequenos grupos. Java parece ser administrado por um comitê. Se for uma boa linguagem, será a primeira vez na história que um comitê projetou uma boa linguagem.
-
É 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 deixam você fazer o que quiser e sair do caminho.
-
É pseudo-hip. A Sun agora finge que Java é um esforço de linguagem de código aberto de base, como Perl ou Python. Esta por acaso é controlada por uma empresa gigante. Então, a linguagem provavelmente terá a mesma desajeitada e monótona de qualquer outra coisa que saia de uma grande empresa.
-
Ela foi projetada para grandes organizações. Grandes organizações têm objetivos diferentes dos hackers. Elas 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 que tolos causem muito dano. Hackers não gostam de uma linguagem que fale mal deles. Hackers só querem poder. Historicamente, linguagens projetadas para grandes organizações (PL/I, Ada) perderam, enquanto linguagens de hackers (C, Perl) venceram. O motivo: o hacker adolescente de hoje é o CTO de amanhã.
-
As pessoas erradas gostam disso. Os programadores que mais admiro não são, no geral, cativados por Java. Quem gosta de Java? Ternos, que não distinguem uma linguagem da outra, mas sabem que continuam ouvindo falar de Java na imprensa; programadores em grandes empresas, que ficam surpresos ao descobrir que há algo ainda melhor que C++; e estudantes de graduação plug-and-chug, que estão prontos para gostar de qualquer coisa que possa lhes dar um emprego (será que isso vai cair no teste?). As opiniões dessas pessoas mudam a cada vento.
-
O pai dela 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 mesa, agora são mais do que rápidos o suficiente para servidores. E o FreeBSD parece ser pelo menos um sistema operacional tão bom para servidores quanto o Solaris. A propaganda da Sun sugere que você precisa de servidores Sun para aplicações de força industrial. Se isso fosse verdade, o Yahoo seria o primeiro da fila para comprar Suns; mas quando eu trabalhava lá, os servidores eram todos caixas Intel rodando FreeBSD. Isso é um mau presságio para o futuro da Sun. Se a Sun tiver problemas, eles podem arrastar o Java para baixo com eles.
-
O DoD gosta disso. O Departamento de Defesa está encorajando desenvolvedores a usar Java. Isso me parece o sinal mais condenável de todos. O Departamento de Defesa faz um bom (embora caro) trabalho de defesa do 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.
Tenha em mente que esta não é uma crítica ao Java, mas uma crítica à sua capa. Não conheço Java o suficiente para gostar ou não. Esta é apenas uma explicação de por que não acho que estou ansioso para aprendê-lo.
Pode parecer descuidado dispensar 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 elas. Você tem que aprender a julgar por sinais externos que valerão seu tempo. Eu também descuidadosamente descartei 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", alardeada até os céus e amada pelo DoD, aconteça, no entanto, de ser uma linguagem limpa, bonita e poderosa na qual eu adoraria programar. Pode ser, mas parece muito improvável.