Editorial

Entrevista para o fórum do site iMasters

Juliano Niederauer
20 de novembro de 2012

Fui convidado pelos moderadores do fórum iMasters a fazer uma entrevista sobre a linguagem PHP, suas funcionalidades e o futuro da linguagem. Para quem tiver interesse em ler mais sobre o tema, reproduzo abaixo as perguntas e respostas da entrevista.

PHP X Outras linguagens

Hoje, a gama de linguagens para desenvolvimento web é muito grande. Java, ASP, C#, Ruby, PHP, entre outras. Na sua opinião, ASP e PHP são universos distintos? E conforme o dito popular: "Quem programa em ASP jamais vai programar em PHP", o que você diria sobre isso?

Não considero universos distintos duas linguagens como PHP e ASP, que oferecem os mesmos paradigmas de programação. Acredito que um programador que possui uma boa lógica de programação pode tranquilamente adaptá-la à sintaxe da linguagem que optar por utilizar.

Para quem vai iniciar hoje no desenvolvimento web, sem conhecer nenhuma linguagem, PHP seria a melhor opção para se começar a estudar? E o PHP, por ser uma linguagem de fácil aprendizado, poderia desvalorizar o profissional frente a uma linguagem "mais complexa"?

Pela simplicidade, desempenho, custo e robustez (principalmente após o lançamento da versão 5), considero o PHP a melhor opção para quem deseja aprender a desenvolver aplicações para a Web. De forma alguma diria que este profissional seria desvalorizado. Muito pelo contrário, pois é cada dia maior a procura por profissionais qualificados nesta área.

Desenvolvedores Java têm o costume de achar que Java é a linguagem mais poderosa que existe. Ela é tão superior ao PHP assim?

Ao contrário do PHP, Java não é uma linguagem de script, embora existam aplicações JSP, que são praticamente programas Java embutidos. Porém, apesar de Java ser uma linguagem muito poderosa para determinados propósitos, penso que ainda não atingiu a mesma eficiência do PHP em um ambiente extremamente dinâmico como a Web.

Existe um tamanho mínimo de projeto em que se faça necessário o uso de padrões como MVC?

Não. Por menor que seja uma aplicação, práticas de organização e planejamento são fundamentais para uma futura expansão ou aumento de complexidade da mesma. O uso de padrões, assim como técnicas de modelagem de dados, colaboram muito nesse sentido.

Com a crescente procura por padrões de projetos, como você vê esse grande número de frameworks para PHP existentes hoje no mercado? Algum merece destaque?

O propósito de um framework é facilitar o trabalho do desenvolvedor, oferecendo classes ou módulos prontos para executar determinadas tarefas. Porém, isso influi não apenas no aprendizado do programador, mas muitas vezes no próprio desempenho da aplicação, em virtude de códigos complexos e desnecessários existentes em alguns frameworks. No meu caso, quando iniciei a programar, utilizava o próprio bloco de notas do Windows e sempre preferi criar minha própria aplicação “do zero”. Portanto, tenho como opinião que os programadores devem criar seu próprio conjunto de rotinas e adaptá-lo de acordo com as necessidades de cada projeto.

Existe mercado de trabalho para desenvolvimento de grandes aplicações em PHP?

Atualmente, o PHP é usado em larga escala em websites e aplicações de pequeno e médio porte. Após o lançamento da versão 5, a linguagem ganhou competitividade e já percebemos o seu uso em aplicações maiores. Com a constante evolução do PHP, certamente o mercado caminha neste sentido.

Bancos de Dados

Você acredita que haverá alguma perda ou melhoria com a compra do MySQL pela Oracle?

A Oracle é uma gigante no setor e tem experiência suficiente para adequar seus SGBDs às demandas do mercado. Porém, a aquisição do MySQL foi feita para proteger a empresa no mercado e isso pode limitar sim a evolução do MySQL, que é um SGBD de código aberto. Irá depender muito das políticas adotadas pela Oracle.

O que você acha sobre alternativas ao MySQL como o Drizzle?

Acho ótimo. Posso citar também a biblioteca SQLite, que pode ser usada em projetos de pequeno porte, simplificando o trabalho do programador que não necessita de recursos mais avançados.

Com a venda do MySQL, você acredita que outros projetos como o PostgreSQL serão favorecidos?

Dependendo da estratégia adotada pela Oracle em relação ao MySQL, outros SGDBs de código aberto podem ganhar força sim.

SPL e Recursos nativos

Vemos hoje o PHP com uma biblioteca muito rica, porém pouco utilizada. O que falta para que desenvolvedores PHP passem a utilizar mais a SPL? Documentação, publicações?

A exploração de novos recursos e bibliotecas do PHP sempre ocorreu de maneira bastante lenta no Brasil, principalmente devido à falta de uma documentação mais didática e detalahada sobre esses assuntos.

Namespaces vieram para facilitar a vida do desenvolvedor, porém, vemos que muitos desenvolvedores que começaram com o PHP 4 e têm o PHP como sua única linguagem possuem uma certa dificuldade em compreender namespaces. Poderia comentar o porque utilizar e quais as vantagens/desvantagens do uso?

Todo recurso que facilite a organização e o gerenciamento do código de uma aplicação é de grande valia para o programador. É o caso dos namespaces, que são como “containers” nos quais o programador armazena suas variáveis, funções, classes, etc. Por exemplo, fazendo uma analogia a um sitema operacional, pode haver um arquivo chamado teste.txt nas pastas /home/joao e /home/maria, porém eles não podem existir ao mesmo tempo na mesma pasta. Você até pode acessar os dois arquivos, mas precisará fornecer o caminho completo, de acordo com a pasta corrente. Dessa forma, os namespaces ajudam muito quando há reutilização de código ou uso de bibliotecas de terceiros, evitando que ocorra erros com nomes de elementos repetidos.

Um outro recurso interessante da versão 5.3 são as Closures e com elas a possibilidade de se ter comportamentos diferentes para casos diferentes, definidas em runtime. Isso com certeza afetará os frameworks atuais, porém, em um projeto comum onde não foi feito uso de qualquer framework, existiriam casos onde se utilizar funções anônimas?

Nas versões anteriores do PHP já existia um recurso semelhante a este, que era o comando create function, porém possuia alguns problemas. Acho interessante a possibilidade de criar funções dinamicamente e, independente do uso de frameworks, se o programador aprender a utilizar bem este recurso (seja como parâmetros callback ou para declarar funções em variáveis), será de grande utilidade a ele no futuro.

Definição de tipos para variáveis foi rapidamente vetado por "não ser o estilo PHP". Será que uma tipagem forte e da obrigação da declaração das variáveis não aumentaria a segurança, tornaria uma aplicação mais robusta e aumentaria drasticamente a velocidade das aplicações devido as variáveis estarem declaradas e tipadas e o interpretador não precisar ficar decidindo se vai fazer 'cast' ou não?

O PHP é amado pelos desenvolvedores justamente por conseguir ser uma linguagem simples e poderosa ao mesmo tempo. A imposição de restrições existentes em linguagens cujo código é de mais baixo nível, entre elas a questão de "ser fortemente tipada", logicamente aumentaria a complexidade da ferramenta. Além disso, com a tecnologia extremamente avançada que temos hoje, acredito que fatores como este não causam impacto suficiente para prejudicar o desempenho e a segurança das aplicações.

Segurança

Cada dia mais, as aplicações web vêm ganhando espaço em relação a aplicações desktop. Com o volume cada vez maior de informações sensíveis trafegando via HTTP, se faz necessário um aumento de segurança. O PHP está preparado para trabalhar com dados cada vez mais sigilosos? É possível desenvolver uma aplicação realmente segura com os recursos nativos oferecidos pelo PHP?

Sim, a equipe do PHP sempre trabalhou constantemente neste sentido. Com o crescente uso da Internet no mundo inteiro, desde a versão 4 a questão da segurança ganhou foco no PHP, tanto que já foram retiradas diversas diretivas de configuração e rotinas que poderiam apresentar problemas. Certamente, a linguagem estará sempre sendo adaptada às demandas do mercado neste quesito.

Cookies e XSS: temos visto, cada vez mais, ataques de com o objetivo de se conseguir acesso a uma aplicação utilizando os cookies armazenados na máquina do cliente. É possível manter a comodidade de um "Lembre-se de mim" em áreas de login, sem comprometer a segurança do usuário ou da aplicação?

O armazenamento em cookies é um mecanismo extremamente útil aos desenvolvedores e facilita muito a navegação dos usuários. Porém, os desenvolvedores devem usá-los de forma responsável, não armazenando informações sigilosas, como senhas por exemplo. Os usuários que não se sentem seguros ou consideram sua privacidade invadida, têm a opção de desabilitar o recebimento de cookies em seu navegador, embora dessa forma não conseguirão inclusive acessar alguns sites com login, que usam cookies para autenticar os usuários.

PHP 6 e Próximas Versões

A próxima edição do PHP, a V6, inclui novos recursos e aprimoramentos de sintaxe que facilitarão o uso de um ponto de vista orientado a objetos. Outros recursos importantes, como suporte a Unicode em muitas das funções principais, significam que o PHP V6 está em posição para melhor suporte internacional e robustez. Você acredita que o PHP nas suas versões futuras será totalmente voltado a orientação a objetos? Acredita que poderá bater outras linguagens como o Java em Orientação a Objetos?

Apesar da grande reformulação dos recursos de orientação a objetos, é importante deixar claro que o PHP continuará sendo uma linguagem procedural. A razão que levou a equipe de desenvolvimento do PHP a realizar essas mudanças foi tornar a linguagem mais competitiva em relação às aplicações J2EE (como por exemplo aquelas desenvolvidas com JSP - Java Server Pages) e .NET, objetivo que vem sendo alcançado a cada nova versão.

Ja houve e existem ainda muitas discussões sobre o PHP 6, sobre compatibilidade legada. Com as características que devem ser abandonadas, muitos scripts escritos para as versões 4 e 5 podem parar de funcionar. O que você acha que ocorrerá quando lançado o PHP 6?

Todas novas versões do PHP sempre trouxeram aperfeiçoamentos visando uma profissionalização maior da linguagem, e com isso é normal que ocorram alguns problemas em scritps antigos. Essa foi a razão da lenta adoção da versão 5 do PHP, principalmente em virtude do novo modelo de objetos. O lançamento da versão 6 não deve ser diferente. Haverá um certo período para adaptação, principalmente em virtude da remoção definitiva da diretiva register_globals, que causará o fim dos scripts da era PHP 3 (versão obsoleta há bastante tempo) e prejudicará outros programadores que usavam esta opção nas versões 4 e 5. De qualquer forma, com poucos ajustes o problema pode ser solucionado. Assim, o desenvolvedor terá uma linguagem mais robusta e scripts mais seguros.

Leia outros editoriais