Veja essa coisa incrível que Ian Baker criou. Vejam só!
O que o senhor está vendo não foi fotografado. Esta é uma foto real de um mundo real, honesto com Deus martelo com duas garras. Esse tipo de coisa existe. Não é incrível? E também, talvez, um pouco perturbador?
Esse maravilhoso martelo é um delicioso reconhecimento no mundo real do épico post do blog PHP: Um Fractal de Mau Design.
Não consigo nem dizer o que há de errado com o PHP, porque – ok. Imagine que o senhor tem uma caixa de ferramentas. Um conjunto de ferramentas. Parece bom, o senhor tem o material padrão.
O senhor pega uma chave de fenda e vê que é uma daquelas coisas estranhas com três cabeças. Ok, bem, isso não é muito útil para o senhor, mas acho que às vezes é útil.
O senhor puxa o martelo, mas, para seu desânimo, ele tem a parte da garra em ambos os lados. Mas ainda é útil, ou seja, o senhor pode bater em pregos com o meio da cabeça segurando-o de lado.
O senhor puxa o alicate, mas ele não tem aquelas superfícies serrilhadas; é plano e liso. Isso é menos útil, mas ainda assim ele gira os parafusos muito bem, então tanto faz.
E assim por diante. Tudo na caixa é um pouco estranho e peculiar, mas talvez não o suficiente para torná-la completamente inútil. E não há nenhum problema claro com o conjunto como um todo; ele ainda tem todas as ferramentas.
Agora imagine que o senhor conheça milhões de carpinteiros que usam essa caixa de ferramentas e que lhe digam “bem, qual é o problema com essas ferramentas? Elas são tudo o que eu já usei e funcionam muito bem!” E os carpinteiros mostram ao senhor as casas que construíram, onde cada cômodo é um pentágono e o telhado está de cabeça para baixo. E o senhor bate na porta da frente e ela simplesmente desaba para dentro e todos gritam com o senhor por ter quebrado a porta.
É isso que está errado com o PHP.
Lembra-se da reação visceral imediata que o senhor teve ao ver o martelo de duas garras? Essa é exatamente a reação que a maioria dos programadores sãos tem em seu primeiro encontro com a linguagem de programação da Web PHP.
Isso vem ocorrendo há anos. Publiquei minha contribuição para o gênero em 2008 com O PHP é péssimo, mas isso não importa.
Não sou um elitista da linguagem, mas o senhor o design de idiomas é difícil. Há um motivo pelo qual alguns dos cientistas da computação mais famosos do mundo também são designers de linguagem. E é uma pena que nenhum deles tenha tido a oportunidade de trabalhar com PHP. Pelo que vi dele, PHP não é tanto um linguagem como uma coleção aleatória de coisas arbitrárias, uma explosão virtual na fábrica de palavras-chave e funções. Lembre-se de que isso vem de um cara que foi foi criado em BASIC, uma linguagem que é tão respeitada quanto o Rodney Dangerfield. Portanto, não estou familiarizado com o gênero.
Só que agora estamos em 2012, e os colegas programadores estão ainda escrevendo longos textos lamentando o horror do PHP!
O que é deprimente não é o fato de o PHP ser horrivelmente projetado. Alguém ainda questiona o fato de o PHP ser a “linguagem” convencional mais mal projetada das últimas décadas? O que é realmente deprimente é que o tão pouco mudou. Há apenas um ano, o lendário hacker Jamie Zawinski tinha disse o seguinte sobre o PHP:
Eu costumava pensar que o PHP era o maior e mais malcheiroso lixão que o setor de informática havia feito na minha vida em uma década. Depois, comecei a precisar fazer coisas que só poderiam ser feitas em AppleScript.
O PHP está tão quebrado a ponto de ser inviável? Não. É claro que não. O grande crime do PHP é sua total banalidade. Sua contínua popularidade é a prova viva de que a qualidade é irrelevante; barato e popular e em toda parte sempre vence. O PHP é o Nickelback das linguagens de programação. E, sim, por frustração com o status quo, talvez eu tenha recentemente referido a Rasmus Lerdorf, o pai do PHP, como o maior monstro da história. Eu mesmo já disse uma milhões de vezes para parar de exagerar.
A metáfora do martelo é adequada, pois, em sua essência, trata-se de ferramentas adequadas. Como prescientemente observado por Alex Papadimoulis:
Um cliente me pediu para construir e instalar um sistema de prateleiras personalizado. Estou no ponto em que preciso pregar, mas não tenho certeza do que usar para pregar os pregos. Devo usar um sapato velho ou uma garrafa de vidro?
Como o senhor responderia a essa pergunta?
- Depende. Se o senhor quiser cravar um prego pequeno (20 lb) em algo como drywall, será muito mais fácil usar a garrafa, especialmente se o sapato estiver sujo. No entanto, se estiver tentando cravar um prego pesado em alguma madeira, use o sapato: a garrafa se quebrará na sua mão.
- Há algo fundamentalmente errado com a forma como o senhor está construindo; é preciso usar ferramentas de verdade. Sim, isso pode envolver uma ida à caixa de ferramentas (ou até mesmo à loja de ferragens), mas fazer isso da maneira correta economizará muito tempo, dinheiro e aborrecimentos durante o ciclo de vida do produto. O senhor precisa parar de construir coisas para ganhar dinheiro até entender os fundamentos da construção.
O que deveríamos estar falando não é sobre como o PHP é terrível – embora seu continua A terribilidade é uma acusação particularmente condenatória, mas como nós, programadores, podemos culturalmente substituir uma ferramenta profundamente falha por uma melhor. Como incentivamos os novos programadores a evitar pegar o martelo de garras duplas em favor de, bem, um martelo comum?
Essa não é uma preocupação abstrata e acadêmica para mim. Estou iniciando um novo projeto de código aberto na Web com o objetivo de tornar o código tão livre e facilmente executável para o mundo quanto possível. Apesar dos sérios problemas com o PHP, fui forçado a considerá-lo. Se o senhor quiser produzir livre-como-em-qualquer-coisa que é executado em praticamente todos os servidores do mundo sem nenhum atrito ou problemas de configuração, o PHP é praticamente sua única opção. Se isso não o assusta, então verifique seu pulso, pois o senhor pode estar morto.
Portanto, gostaria de fazer uma humilde sugestão aos meus colegas programadores. Da próxima vez que o senhor sentir vontade de escrever Yet Another Epic Critique of PHP, pense nisso:
- Já entendemos. O PHP é horrível, mas é usado em todos os lugares. O senhor adivinha? Ele era igualmente horrível em 2008. E em 2005. E em 2002. Há um padrão aqui, mas ele é sutil. O senhor tem que olhar bem de perto para ver. Pensando bem, não importa. O senhor provavelmente não é inteligente o suficiente para descobrir.
- A melhor maneira de combater algo tão difundido e institucionalmente horrível como o PHP não é apontar todos os seus (muitos, muitos, muitos) falhas, mas para criar alternativas convincentes e garantir que essas alternativas sejam igualmente difundidas e tão fáceis de configurar e usar quanto possível.
Temos um longo caminho a percorrer. Um dos explícito O objetivo do meu próximo projeto é fazer tudo o que pudermos para fortalecer um ecossistema de linguagem de código aberto que possa realmente competir com o PHP em termos de facilidade de instalação e implementação.
Do meu ponto de vista, o objetivo de todos esses discursos do tipo “o PHP está quebrado” não é apenas reclamar, mas ajudar a educar e, potencialmente, alertar o senhor novo codificadores iniciando novo bases de código. É inquestionável que alguns bons trabalhos, até mesmo históricos, foram feitos no PHP, apesar da loucura. Mas agora precisamos trabalhar juntos para corrigir o que está quebrado. A melhor maneira de corrigir o problema do PHP neste momento é tornar as alternativas tão excelentes que a escolha do melhor martelo se torne óbvia.
Essa é a Singularidade do PHP que eu espero. Estou me esforçando ao máximo para fazer minha parte para que isso aconteça. E o senhor?
[advertisement] Como o(a) senhor(a) está exibindo o seu incrível? Crie um Perfil do Stack Overflow Careers e mostre todo o seu trabalho árduo no Stack Overflow, no Github e em praticamente todos os outros sites de codificação. Quem sabe, o senhor pode até ser recrutado para uma grande novo cargo! |