Como o PHP5 se sai com versões anteriores da linguagem

8

Gostaria de aprender PHP para desenvolvimento web, mas fui atraído por comentários como o seguinte * :

  • PHP é bom, mas gera código espaguete
  • PHP é legal, mas Python é material de casamento
  • O PHP não possui material que você obtém em outras linguagens como C # ou Java

Mas para o PHP5 eu vi alguns comentários promissores. Então, minha pergunta é: como o PHP5 se sai com versões anteriores da linguagem e agora é bom o suficiente para aprender sobre desenvolvimento web.

* Os comentários são apenas para referência, para não incitar uma guerra de chamas. Nenhuma comparação do PHP com outras linguagens é solicitada aqui. Por favor, comente apenas no PHP5 e como ele se compara às versões anteriores.

Pankaj Upadhyay
fonte
8
PHP não gerar código spaghetti - programadores PHP maus gerar código spaghetti
HorusKol
Por que você inclui comentários sobre PHP e outras linguagens e como eles suscitaram dúvidas, mas não querem nenhuma discussão sobre isso nas respostas?
Phant0m

Respostas:

17

Ao discutir idiomas, essas duas citações de Stroustrup sempre lembram :

Quem vem até você e diz que tem uma linguagem perfeita é ingênuo ou é vendedor.

e

Existem apenas dois tipos de idiomas: os que as pessoas reclamam e os que ninguém usa.

Agora para a pergunta em questão. A maior parte do ódio é principalmente dirigida ao PHP4. O PHP5 foi lançado pela primeira vez em julho de 2004 (beta um ano antes) e a última versão do PHP4 é a 4.4.9 lançada em agosto de 2008 . Não há mais razão válida para usar o PHP4, a menos que você mantenha algum aplicativo herdado. O PHP4 não é mais suportado pelo grupo PHP, e todos esperamos que desapareça em breve.

A diferença entre as duas versões é maior do que costuma ser entre duas versões principais, pois o mecanismo por trás do intérprete foi reescrito do zero e incluiu um novo modelo de objeto. O lançamento do PHP5 coincidiu aproximadamente com o lançamento do MySQL5, uma grande revisão do MySQL. O PHP geralmente é acoplado ao MySQL e a quinta versão de ambos tratou de vários problemas e os atualizou com a concorrência. O MySQL também está sujeito a comentários do FUD , mas, bem, é o banco de dados por trás do Google AdWords .

O PHP 5.3 foi uma versão importante em tudo, menos no nome. Muitos recursos destinados ao PHP6 foram encontrados na versão 5.3 e para todos os desenvolvedores da versão 5.2, recomendo fortemente que migrem para a versão 5.3+ mais cedo ou mais tarde. A versão atual, 5.4, inclui alguns recursos impressionantes (entre outros):

Agora, para seus comentários específicos:

PHP é bom, mas gera código espaguete

Isso absolutamente não é verdade. Nenhuma linguagem gera qualquer tipo de código, é sempre responsabilidade do desenvolvedor estragar, o código espaguete é possível em todas as línguas existentes. O que é verdade, porém, é que o PHP tem uma barreira de entrada muito baixa em comparação com outras linguagens populares; portanto, é muito mais fácil para desenvolvedores inexperientes escreverem código ruim (mas funcionando). Mas esse é um efeito colateral de todo idioma fácil de aprender.

Além disso, o PHP não impõe nenhum estilo ou paradigma específico, e sempre depende de você decidir o que fazer. Eu sempre pensei nisso como uma coisa boa, enquanto outros a veem como um ponto válido de crítica. Você terá que decidir por si mesmo.

PHP é legal, mas Python é material de casamento

O PHP não possui material que você obtém em outros idiomas como C # ou JAVA

Sim. E a linguagem de uso geral X não possui muitas coisas que você obtém no PHP. Como ser portátil em sistemas operacionais E servidores http e suporte para todas as bibliotecas imagináveis ​​de terceiros que seriam úteis em um ambiente de desenvolvimento da web. Você precisa entender que o PHP não falta nada importante , se isso acontecesse, teria morrido há muito tempo. A comparação entre a linguagem de uso geral X e outras linguagens de uso múltiplo com PHP é uma falácia, maçãs e laranjas. Embora o PHP ofereça algumas facilidades para apoiar a ideia de que é de uso geral, não é, é uma linguagem da web.

Você deve ter em mente que o caminho evolutivo do PHP é bem diferente da linguagem de uso geral X : o PHP cresceu e evoluiu, ele não foi projetado. Toda vez que um recurso é adicionado ao idioma está fora da necessidade real, não de acordo com algum ideal imaginário do que um idioma deveria ser. Os idiomas são a primeira e principal ferramenta, e o PHP é perfeito como tal.

Não tenho nada contra a linguagem de uso geral X , sou a favor de escolher a ferramenta certa para o trabalho. Sempre misturei e combinei, e também estou codificando em Java e Python, às vezes em paralelo com PHP. Mas o PHP é o único com quem eu consideraria me casar. :)

Se você está pensando em começar com o PHP, é claro que deve começar com a versão estável mais recente, como faria em qualquer outro idioma.

yannis
fonte
Eu adicionaria algumas incompatibilidades entre o PHP4 e o 5. Você esqueceu a coleta de lixo do PHP 5.3.
Deadalnix #
1
@deadalnix Não adicionei incompatibilidades entre o PHP4 e o PHP5, porque acho que essa lista só é útil se você estiver pensando em usar o PHP4. Meu argumento é que não use o PHP4 por qualquer motivo, apenas porque é muito antigo (o PHP5 existe há mais de 3 anos). Também não esqueci a Garbage Collection, não era minha intenção criar uma lista definitiva do que há de novo no PHP5.3 (essa lista pode ser encontrada no manual), apenas para destacar alguns desses recursos no contexto de a questão.
yannis
6

O PHP é "bom o suficiente" para o desenvolvimento da web há muito tempo . Como em qualquer linguagem de programação, a qualidade do código depende das habilidades do desenvolvedor para escrevê-lo.

Uma crítica comum ao PHP é que sua flexibilidade facilita para desenvolvedores inexperientes escreverem códigos ruins ou "espaguete". Isso ocorre principalmente porque tenta abraçar simultaneamente vários paradigmas que ocasionalmente entram em conflito, são mal implementados ou não combinam bem.

  • O script do lado do servidor (PHP) justaposto ao código do lado do cliente (HTML + Javascript) sem modularidade é comum, quase incentivado, em detrimento da clareza e legibilidade.

  • É comumente escrito em um estilo imperativo, mas fornece mecanismos para orientação a objetos. Isso resulta facilmente em estilos mistos e geralmente pode levar a um design ruim.

  • O design orientado a objetos foi (na minha opinião) pouco suportado no PHP4. Esta é uma área em que o PHP5 melhorou significativamente (por exemplo, com modificadores de acesso, classes abstratas, resolução de escopo aprimorada ).

  • A digitação dinâmica do PHP permite erros de tempo de execução que podem ser eliminados com a verificação de tipo estática. Isso é inerente ao design de todas as versões do PHP e não será alterado tão cedo; o ônus de validar tipos de objetos é deixado para o programador.

As mudanças no modelo OOP do PHP5 contribuem muito para incentivar o bom design, mas não adicionam nenhum desincentivo para desencorajar as más práticas mencionadas acima.

Roubar
fonte
2

O PHP tem alguns problemas significativos em si, mas esses são principalmente da variedade irritante: Sua biblioteca é inconsistente e um tanto esquizofrênica, não possui strings como objetos de primeira classe, coisas assim. Não obriga a escrever código ruim e funciona bastante bem para o que faz - escrever páginas da web. Seu PHP será tão bom quanto você se esforça para que seja; é bem possível escrever PHP que seja extremamente processual e parecido com o código C, e também é possível escrever PHP excessivamente orientado a objetos e parecido com Java. Como alguém que desenvolve PHP diariamente, eu gosto de algumas coisas e odeio algumas e não posso esperar por algumas funções 5.4 (como Traits e desatenção de retorno de função sã), mas encorajaria sinceramente alguém que está pensando em escolher pronto para fazê-lo.

EricBoersma
fonte
0

O php5 é uma versão muito melhorada do php4.

A maioria, mas nem todo o código php4 funciona no php5.

O que realmente mudou foi o muito aprimorado Modelo de Objetos, que corrigiu muitas limitações e peculiaridades inerentes à implementação OO anterior, mas que é amplamente incompatível com as versões anteriores.

Documentos aqui

Os outros comentários têm validade, mas não são proibidos.

"PHP é bom, mas gera código espaguete" - você pode gerar todos os tipos de massas em qualquer idioma, mas o php não faz nada para desencorajar o codificador inexperiente que escreve um ninho de código não estruturado. Por outro lado, você pode escrever um bom código em qualquer idioma, programadores qualificados não têm problemas para escrever php limpo e bem estruturado.

"PHP é legal, mas Python é material para casamento" - é uma linguagem legal, mas existem diversas estruturas da Web, todas com pontos extremamente bons, mas nenhuma delas realmente decolou, o que é bom, mas qualquer Python / A estrutura de sua combinação de escolha sempre será uma habilidade de nicho.

"PHP atrasa coisas que você obtém em outras linguagens como C # ou JAVA" - o php possui o suporte à biblioteca mais diversificado e bem implementado de qualquer linguagem, exceto o perl. Existem alguns pontos em branco como análise estatística e processamento de vetores. Mas, geralmente, se você quiser fazer algo, uma pesquisa rápida do PEAR localizará uma biblioteca que faz isso. A linguagem em si é mais simples que C # ou Java - mas a simplicidade da sintaxe básica mais "Duck Typing" significa que você pode fazer qualquer coisa em php que possa fazer em Java de uma maneira mais legível e elegante.

James Anderson
fonte
A declaração "PHP tem a biblioteca mais diversificada e bem implementada ..." é discutível. Eu diria que é muito inchado e mal organizado.
Rob
@robjb - não fique com a parte "inchada", você não usa o que não precisa e, certamente, quanto mais bibliotecas disponíveis, melhor, pois para mal organizadas, PEAR e PECL são bastante lisas - não há equivalentes reais em os mundos C # e Java. As bibliotecas não são "ortogonais", mas isso é inevitável com muitos projetos contribuindo ao longo de vários anos.
James Anderson
1
Não estou negando que o PHP tenha extensões / bibliotecas muito úteis, mas não sei mais nada para chamar milhares de funções com escopo global, mas "inchadas". Além disso, várias funções têm propósitos semelhantes. Nomenclatura inconsistente obfuscates ainda mais as bibliotecas do núcleo, por exemplo, strip_tagsvs stripslashes. Eu diria que C não exibe esses problemas, mas já existe há um tempo. ;)
Rob
Todo o "bloatware" - isto é, uma instalação pronta para trabalhar, php, utilizável para criar um site útil - chega aos 70MB. Isso é menor que alguns dos arquivos JAR que acompanham o JE. A maioria dos desenvolvedores consideraria o escopo global das funções integradas bastante útil, comparado com a verbosidade do Java, na qual você precisa "importar" um arquivo jar antes de fazer coisas esotéricas, como escrever uma linha para o sysout. O PHP está longe de ser perfeito, mas para aplicativos Web pequenos e médios é melhor do que qualquer outra coisa.
James Anderson
@robjb - Não recebo o comentário "C", C exibe as APIs inconsistentes, funcionalidade duplicada em espadas. Só porque as bibliotecas são difíceis de encontrar e você só usa algumas quantas bibliotecas de "strings inteligentes" existem por aí?
James Anderson