Back-End

30 jun, 2011

Por que o PHP era um gueto?

Publicidade

Texto original disponível em http://codefury.net/2011/04/why-php-was-a-ghetto/ 

?

Eu estava conversando com o
fundador de uma start-up bem legal em DUMBO outro dia sobre o porquê de o mundo do
desenvolvimento “não-PHP” ter tanto desdém pelo PHP e pela comunidade em volta
dele. Ele trouxe um ponto interessante que ficou na minha cabeça,
principalmente porque nunca o tinha ouvido antes.

Se você não está a par da
antipatia que a maioria dos desenvolvedores tem pelo PHP, ela geralmente gira
em torno de:

  1. Sintaxe feia
  2. Falta de alguns
    recursos necessários que outras linguagens têm (antes da 5.3, namespacing,
    closures)
  3. Nomeação de
    funções, usos e outras peculiaridades inconsistentes
  4. Mistura de código procedural e orientado a objetos
  5. O fato de 80-90%
    dos projetos PHP serem grandes porcarias

Mas o problema dele com o PHP
era um pouco diferente. Ele não disse que a linguagem em si era pobre – ele
disse que era a cultura geral em volta da linguagem, que é geralmente
reverenciada pelo criador da linguagem, que parece ter encorajado praticas
ruins. Isto é, as bases de código do PHP tendem a ser insustentáveis.

O conceito de que a
comunidade de certa linguagem ou framework carrega a filosofia do autor parece
ser verdade. Ele mencionou Ruby e Matz.
Matz queria que a linguagem fosse simples para ler e escrever, e aumentasse a
produtividade do programador. Os programadores de Ruby não parecem desenvolver um
aplicativo rapidamente e com elegância?

Então o DHH e o Rails surgiram. E depois o Guido e o Python. Aí eu pensei: e o Rasmus?

Rasmus Lerdorf é uma figura
interessante. Ele criou a versão original do PHP, continua a contribuir com
ela, é vastamente considerado um semideus na comunidade e a autoridade em tudo
o que diz respeito a PHP. Ele rouba a atenção de um grande número de
pessoas nas conferências, é contratado por grandes lugares da internet
e ganha o respeito de todos, apesar de uma
propriedade ofuscante: Rasmus representa tudo que a maioria dos
desenvolvedores “não-PHP” odeiam no PHP.

Ele geralmente promove a
abstenção de uso de frameworks, e o uso do PHP como uma linguagem de template. Para ele, isso se traduz em velocidade pura e escalabilidade (no
que diz respeito ao carregamento). Para todos os outros, isso se traduz em pilhas de código procedural macarrônico e projetos de manutenção impossível. Durante os
10 anos difíceis que se seguiram ao nascimento do PHP, em 1995, era dessa
maneira que os projetos eram escritos.

Mas outro problema surgiu:
durante seus anos adolescentes (antes do 5.0), o PHP ganhou sérios adeptos
entre os novatos. A linguagem tem uma barreira de entrada muito baixa, então
qualquer pessoa poderia começar em 2 minutos ao fazer o download de uma pilha AMP para Windows. Adicionalmente, a aceitação do paradigma MVC
não tinha ainda acontecido no desenvolvimento web. O que você tem quando
mistura n00bs com uma grande falta de práticas boas? Lixo insustentável. E foi
isso que proliferou.

Não me entenda mal – existiam
alguns desenvolvedores PHP muito bons por aí, mesmo naquele tempo. Mas como eu
disse, n00bs não refinados estavam por aí. Quando desenvolvedores PHP sem
escrúpulos se reuniam para construir um projeto, ele saía parecendo com PHPbb,
PHPNuke ou alguma outra massa deformada de arquivos .php3. Mas podemos culpar
unicamente os desenvolvedores PHP? Não! As outras grandes linguagens web, ASP e
Perl, também eram nojentas e promoviam as mesmas práticas de código macarrônico.

Então por que o PHP ficou com
a má reputação? Por causa do seu legado. A maioria dos desenvolvedores antigos
de PHP que migrou para Python, Ruby, e Java não olhou para trás para ver
que tipo de desenvolvimento aconteceu na linguagem desde a introdução do MVC na
web. Além disso, existiam criticas extremamente sinceras como “o cara Ruby” Zed
Shaw, reclamando de desenvolvedores com “o cérebro infectado com PHP”, e a
distribuição de coisas como essa no RubyInside.

PHP era um gueto.

Mas o desenvolvimento de
frameworks como Zend e CodeIgniter empurrou o desenvolvimento da linguagem
para a direção certa. Na verdade, ela foi empurrada na direção oposta que o
Rasmus gostaria. Dê uma olhada nos frameworks Zend e CodeIgniter e me diga se
não são alguns dos códigos mais bem documentados e bem escritos que você já viu.

Quando a maioria dos
desenvolvedores aprendeu o Ruby, eles estavam aprendendo Rails e MVC ao mesmo
tempo. O PHP estava em uso por longos 10 anos antes disso. Então na verdade não
existiu um período de tempo quando o hediondo Ruby estava sendo escrito por
novatos. Existia um padrão já estabelecido para o Rails, e sua barreira de
entrada era muito maior, mantendo, assim, desenvolvedores menos experientes do
lado de fora.

O fato é que aplicações PHP
podem ser tão bem escritas como aplicações em qualquer outra linguagem, e elas provavelmente
têm a vantagem adicional da velocidade. O vasto uso do desenvolvimento no
estilo MVC no mundo PHP é um fenômeno relativamente recente, e admito que
podemos agradecer o Rails por isso.

Então o que o PHP tem a seu
favor agora?

  1. Padrões (não universais,
    mas geralmente com uma pitada de MVC para a maioria dos projetos, e pouca
    porcaria procedural)
  2. Uma barreira de
    entrada muito baixa
  3. Velocidade &
    Escalabilidade (talvez os melhores entre linguagens baseadas em script)
  4. Um ótimo framework
    para unidades de teste
  5. Tem a melhor
    documentação que qualquer linguagem  

Além disso, ela está por trás
de alguns dos websites e ferramentas mais influentes de hoje, como Facebook,
Digg, Wikipedia, WordPress, Drupal etc. Aposto que um entendimento sólido
sobre o PHP pode abrir mais portas para um desenvolvedor do que qualquer outra
linguagem.

Se você não concorda com o
que eu disse acima, comente este post – eu gostaria de
ouvir porque você não concorda.

Eu não sou fã do PHP – na
verdade, eu sou bastante agnóstico no que diz respeito a linguagens. Eu
escrevo mais em PHP porque, você adivinhou, as pessoas me pagam para isso. Tudo
se resume a isto: se
você é capaz de tomar decisões inteligentes no que diz respeito a design de
softwares, o PHP é uma ótima escolha para construir sua aplicação.

Falando nisso, se eu te
convenci a escrever sua nova aplicação web em PHP, dê uma olhada no CodeIgniter.
É
um framework leve e super rápido para PHP
. No que diz respeito ao CodeIgniter, sou fã.