Como quebrar o paradigma “php é uma linguagem ruim”? [fechadas]

19

PHP não é uma linguagem ruim (ou pelo menos não é tão ruim quanto alguns podem sugerir). Eu tinha professores que nem sabiam que o PHP era orientado a objetos até eu contar a eles. Eu tive clientes que nos desconfiam imediatamente quando dizemos que somos desenvolvedores de PHP e nos questionam por não usar linguagens e estruturas elegantes como Django ou RoR, ou linguagens "corporativas e sólidas" como Java e ASP.NET.

O Facebook é construído em PHP. Existem muitos projetos sólidos que impulsionam a web, como Joomla e Drupal, que são usados ​​na empresa e nos governos. Existem frameworks e bibliotecas que possuem algumas das melhores arquiteturas que eu já vi em todos os idiomas (Symfony 2, Doctrine). O PHP tem a melhor documentação que eu já vi e uma grande comunidade de profissionais.

O PHP possui recursos avançados de OO, como reflexão, interfaces, e muito menos que o PHP agora suporta reutilização horizontal de forma nativa e limpa por meio de características .

Existem programadores e crianças com scripts ruins que dão ao PHP uma má reputação, mas fortalecem a comunidade PHP ao mesmo tempo, e como é muito fácil fazer coisas com PHP, você pode fazer as coisas da maneira errada, com certeza, mas por que culpar o língua?.

Agora, para resumir isso em uma pergunta real e respondível: qual seria um argumento bom, sólido, curto e doce para evitar ser desaprovado e parar o preconceito de uma só vez e defender sua honra quando você diz que é desenvolvedor de PHP? .

(biscoito grátis com chantilly para aqueles com evidências empíricas de convencer alguém - cliente ou outro - no local)

PS: Usamos o Symfony , e o código acaba sendo bonito e sustentável

PPS: O Facebook é escrito em PHP, compilado em C ++ via HipHop e implantado no Hadoop. Aqui: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
fonte
9
Para iniciantes, sinalize todos os comentários sarcásticos do anti-PHP nos programadores. Há pelo menos um desenvolvedor PHP entre os moderadores que realmente gosta de excluí-los ...
yannis:
23
Escreva um bom código PHP
Charles Sprayberry
42
Apenas uma observação, eu realmente odeio quando as pessoas do PHP trazem o argumento "O FB é construído no PHP". Isso é bs, é construído em sistemas distribuídos em massa como o Hadoop e as partes que realmente fazem as coisas são em C. O PHP é usado para modelar ea interface do usuário, que é quase o suficiente para dizer "FB é construído em PHP" ...
TC1
10
@NB Sim, mas neste caso, IMHO dizer que "o FB é construído em PHP" é como dizer que o StackOverflow é construído em CSS e JavaScript, porque ele tem alguns toques de interface do usuário agradáveis ​​aqui e ali ...
TC1
13
Eu não o contrataria porque não quero manter o código PHP. O PHP está ganhando recursos como Perl e JavaScript e outras linguagens apressadas, mas seu núcleo foi projetado às pressas e não se pode mudar isso. Talvez você deva considerar aprender Django, RoR e Grails e, portanto, ser independente da linguagem.
Job

Respostas:

40

A única resposta que tenho é esta: tudo é uma porcaria.

Você pode encontrar muitos argumentos contra o POO ser bom (uma pesquisa rápida os revelará) versus a programação funcional ou processual. Você parece indicar que o suporte ao OO do PHP o defende.

O espaço em branco do Google é péssimo e você encontrará resultados para qualquer coisa. Python é uma merda . Ruby é uma merda . Trilhos é uma merda . PHP é péssimo . Java é uma merda .

Você quer saber o que realmente é uma merda? Programadores. Programadores são péssimos. Qualquer bom desenvolvedor deve ser capaz de criar um aplicativo incrível, front end e back end, independentemente do idioma - mesmo que não esteja familiarizado com o idioma! (Ou seja, um bom programador deve ser capaz de aprender e trabalhar com qualquer idioma de maneira eficaz).

Observe também que o sucesso de um aplicativo não tem nada a ver com seu código. Ouvi dizer que o código do Facebook é horrível, mas por Deus é eficaz. Provavelmente o mesmo acontece com a Wikimedia (a Wikipedia é construída em PHP e também é um site extremamente popular). O que realmente importa são os resultados!

PHP é a linguagem com a qual eu pessoalmente estou mais familiarizado. Vou defendê-lo até a morte. Trabalhei com estruturas PHP, código PHP direto e PHP, python e ruby (e até Java), tudo para desenvolvimento web. Não posso dizer que um seja particularmente melhor que o outro. O que importa mais são os desenvolvedores e os algoritmos. Eu já vi códigos surpreendentemente bons e completamente terríveis em muitas linguagens (especialmente PHP, pois tenho tanta exposição).


Agora, sua pergunta: depende de com quem você está lidando

Empresários

Eles se preocupam principalmente com resultados e relação custo-benefício. O fato de o bem-sucedido Facebook, Wikipedia e Wordpress usar PHP ser mais do que suficiente para convencê-los de que é uma linguagem eficaz para a criação de aplicativos bem-sucedidos.

Programadores

Deixe seu código falar por si. Se um desenvolvedor disser que o PHP é inferior de alguma forma, mostre a eles algum código PHP que você acredita que seja eficaz. A prova do pudim está no comer.

Comprimidos de explosão
fonte
8
"Qualquer bom desenvolvedor deve ser capaz de criar um aplicativo incrível, front-end e back-end, independentemente do idioma" - repita isso depois de tentar em Malbolge.
Michael Borgwardt
5
Eu não acho que um bom programador possa escrever um bom código na linguagem que ele não conhece. Decente, talvez, mas não é bom. Isso porque escrever um bom código em qualquer idioma requer um bom conhecimento das bibliotecas e do próprio idioma.
svick
4
Discordo; um bom desenvolvedor deve poder se familiarizar com o conhecimento necessário para escrever bons aplicativos. Um bom conhecimento de bibliotecas e sintaxe é importante, mas isso é algo que um bom desenvolvedor pode entender facilmente. O que é muito mais difícil são algoritmos e conceitos (e provavelmente paciência) .. mesmo que a linguagem seja Malbolge. Ou talvez esteja pensando em um ótimo desenvolvedor.
Comprimidos de explosão
7
success of an application has nothing to do with its code<- Verdade. Mas quando as pessoas estão dizendo que "PHP é uma linguagem ruim", elas não significam "aplicativos escritos em PHP são ruins", mas sim que "aplicativos escritos em PHP geralmente não são divertidos de trabalhar devido a espaguete de código". Existem ótimos aplicativos escritos em PHP, com certeza. Mas acho que essa resposta não aborda o que os programadores querem dizer quando chamam o PHP de "ruim".
Billy ONeal
2
@BillyONeal Qual é a sua métrica para saber se um idioma é "bom" ou "ruim"? As aplicações são tudo. Ninguém se importa com o código . Linus Torvalds discursou sobre o quão terrível é o C ++ - você pode dizer que qualquer coisa é ruim porque alguns programadores escrevem códigos ruins.
Comprimidos de explosão
20

PHP tem uma história sórdida. É muito melhor agora que foi há pouco tempo, mas houve um tempo, muito tempo, em que muitas práticas e padrões ruins foram incentivados e difíceis de evitar. Existe uma geração inteira de códigos PHP terríveis por aí que ainda estão por aí, e na medida em que novos programadores estão aprendendo lendo códigos antigos, estão aprendendo um mau comportamento. Agora, o PHP talvez não mereça sua reputação de blackend, mas certamente o conquistou.

Sua melhor aposta para defender o PHP é distanciar cuidadosamente e distinguir o estado da arte atual da história com a qual todos estão familiarizados. Você pode dizer que o PHP não é uma linguagem terrível, mas se você estiver conversando com alguém que está no setor há vários anos, a memória deles diz a eles o contrário.

Mostre a eles como a equipe do PHP aprendeu com seus erros e mudou o idioma para melhor. Longe vão os dias de citações mágicas e registros globais. Longe está o paradigma global de tudo, o modo de segurança e o mysql_escape_string. Explique a eles que programadores PHP reais sempre usam espaços para nome e consultas parametrizadas, evitam funções obsoletas e sempre colocam seu código de biblioteca fora da raiz do documento.

O PHP mudou e os programadores do PHP mudaram. É por isso que o PHP é a plataforma maravilhosa que é hoje. Além disso, é a única plataforma que você sabe que seus clientes terão pré-instalado. Aquilo é enorme.

Como uma observação lateral, eu recomendaria não citar os mecanismos e estruturas CMS existentes como uma grande vitória para o PHP. Você corre o risco de apontar coisas como o estudo de segurança Websense de 4 dias atrás, mostrando que 94% das infecções recentes em sites eram contra sites PHP executando software como Joomla e Wordpress. Esse não é o tipo de empresa que você deseja que seja vista. Em vez disso, aponte que seu código será muito mais seguro do que todas essas outras coisas.

tylerl
fonte
1
Marcar com +1 - mas - mas - Alegar que seu código será "muito mais seguro" do que as revisões por pares feitas por vários profissionais não vai realmente dar muita água a ninguém com experiência na área de segurança. Todo mundo escreve bugs de segurança. O truque é apenas colocá-los um passo à frente dos bandidos.
Billy ONeal
@BillyONeal yep. O último parágrafo deve parecer um pouco ... estranho e fazer você realmente repensar sua abordagem à segurança. Pesquisei bastante sobre segurança de aplicativos da Web PHP e não PHP, e os relatórios são perturbadores e massivamente inclinados contra o PHP. Isso não quer dizer que o PHP seja ruim, mas a segurança é uma preocupação real.
tylerl
1
"Além disso, é a única plataforma que você sabe que seus clientes terão pré-instalados" Esta declaração parece totalmente falsa para mim: nem todos os servidores implantados são implantados com uma pilha LAMPhp, nem as distribuições comuns de servidores linux que tentei enviar. PHP pré-instalado. No entanto, toda distribuição Linux que eu já usei é fornecida com o Python 2.x. Eu suspeito que alguns utilitários comuns confiam nele.
ThorSummoner
9

PHP é o COBOL da web. Os dois idiomas não têm respeito, mas muitas pessoas ganham a vida construindo e mantendo sistemas escritos neles, e estão presentes em volume em quase todos os principais sistemas de computadores do mundo nativo ( ou seja , na web e nos negócios comerciais, respectivamente). Ambas as línguas são menosprezadas por profissionais de outras línguas mais populares, baseadas principalmente em hábitos antigos e obsoletos praticados por programadores que, desde então, aprenderam melhor e melhoraram suas ferramentas.

O PHP deve ter tanta sorte que vive a vida de COBOL. COBOL existe há mais tempo do que qualquer coisa, menos FORTRAN, e não vai desaparecer tão cedo. Existem muitos programas COBOL em uso diário mais antigos do que as pessoas que os mantêm. Pode não ser "o novo tesouro", mas sempre haverá dinheiro a ser ganho trabalhando nele e com ele.

Ross Patterson
fonte
4

Eu acho que também pode ser útil entender o outro lado da moeda e reconhecer a escassez de PHP. Embora o PHP tenha avançado muito de ser uma linguagem de modelo, ainda há muitas coisas que podem ser melhoradas. Há alguns pontos em que o PHP ainda está ausente: Unicode, recursos funcionais, organização da biblioteca padrão arraye assim por diante.

O que eu sugiro é que - para fazer uma discussão construtiva sobre os pontos fortes e fracos do PHP - seria bom reconhecer tudo isso. "Sim, eu sei que a biblioteca padrão do PHP não é muito organizada. Mas se fosse escrita hoje, poderia fazer uso de namespaces e APIs orientadas a objetos". "Sim, eu sei que a matriz padrão faz uma bagunça misturando estruturas de dicionário e matriz. Mas se alguém quer coleções melhores, pode usar o SPL".

Seu ponto de vista será mais forte se você demonstrar que sabe que os argumentos das outras pessoas têm algum motivo.

Andrea
fonte
2

Por quê?

Quem faz você sentir que precisa se defender (seja na carreira, no cônjuge, nos hábitos de consumo etc.) está perdendo seu tempo. Você dedicar um tempo para se defender é simplesmente humilhar o tipo errado de pessoas - agora você está desperdiçando seu tempo, assim como o deles.

Afaste essas pessoas da sua vida - você estará melhor sem elas.

JK
fonte
4
Então, a resposta é levar para o lado pessoal e ignorá-lo? Esse é um problema cultural, prefiro abordá-lo e tentar tornar meus argumentos melhores e mais concisos para abater a ignorância.
Dukeofgaming 17/03/12
3
No vácuo, concordo com o seu conselho aqui, mas o PHP é indefensável. Eu sempre fico maravilhado com a forma como Mark Zuckerberg conseguiu , apesar da horribilidade
Jim G.
1

Não existe uma única linha curta e agradável que possa ser usada para convencer as pessoas do valor do PHP e de seus desenvolvedores, mas você escreveu um argumento muito convincente antes de fazer a pergunta.

CFL_Jeff
fonte
1

Para abordar o "PHP é uma linguagem ruim", você precisa descobrir por que o indivíduo em questão pensa que é uma linguagem ruim. Talvez ele tenha trabalhado em um projeto ruim escrito em PHP. Talvez ele não goste de prefixar suas variáveis $. Talvez eles mesmos tenham tentado usar o idioma e escrito uma bagunça inatingível. Muitos programadores vindos de outras linguagens de programação veem o PHP e vêem uma bagunça, porque o que faz sentido no PHP realmente não faz sentido em outra linguagem ou em outras plataformas. Por exemplo, no PHP, matrizes são a "fita adesiva do universo" e são usadas para realizar praticamente qualquer coisa, enquanto em outras linguagens de programação tal coisa seria absurda.

Eu sugeriria uma combinação das respostas aqui.

  1. Como disse Tylerl , você precisa mostrar que o PHP moderno é significativamente melhor do que primos mais velhos. Longe está a maldade de create_function. Foi-se a selva de ligar includemanualmente em qualquer lugar.
  2. Reconheça que há falhas no PHP. Há falhas em todas as linguagens de programação. Dizer o contrário fará com que muitos programadores sérios ignorem completamente sua resposta como sendo um "fanboi".
  3. Mostre às pessoas coisas fáceis em PHP e difíceis em outras linguagens de programação. As linguagens de programação são projetadas para facilitar algumas tarefas, o que necessariamente dificulta outras tarefas. C? A manipulação da memória e os hacks de bits são realmente fáceis e a linguagem é realmente simples, mas a manutenção de aplicativos grandes é difícil. Java? Não temfree , e tudo é "OO-ish", mas o tempo de execução é grande e o OO pode ser limitador. C ++? Permite criar tipos que se comportam exatamente como tipos primitivos (por exemplo, int) no idioma, mas com grande quantidade de complexidade. PHP? Torna realmente fácil começar sem muito conhecimento de programação, mas, como resultado, há muitos e muitos códigos de lixo publicados na Internet.
  4. Reconheça as vantagens que não são da linguagem do PHP. Ainda há muitas coisas no PHP, como uma linguagem que pode ser ... chata de se trabalhar. Mas é fácil de configurar, fácil de implantar e vem com um grande conjunto de ótimas bibliotecas às quais você pode "conectar" sem muito trabalho adicional.

Há um lugar para todos os idiomas. Escolha o idioma adequado ao problema em questão, não tente calçar um idioma preferido em lugares onde ele não pertence.

Billy ONeal
fonte
1
-1: Por que você está tentando defender o PHP? É uma porcaria: codinghorror.com/blog/2008/05/…
Jim G.
1
@ JimG .: Porque é isso que o OP me pediu para fazer. Estou bancando o advogado do diabo aqui; Eu realmente odeio trabalhar com PHP. Mas apenas porque um sistema é chato de trabalhar, não significa que não haja coisas boas sobre esse sistema. Pode-se aprender mesmo com grandes f *** ups. :)
Billy ONeal
@BillyONeal Por que você odeia trabalhar com isso? Decidir sobre as coisas sozinho.
johnny
@ Johnny: Principalmente, apenas sendo uma linguagem de script inadequada para a construção de grandes sistemas. As linguagens de script são ótimas para prototipagem rápida, facilidade de implantação e são fornecidas com grandes bibliotecas padrão. Mas a construção de grandes sistemas com eles geralmente resulta em uma bagunça não-sustentável, devido à incapacidade de impor verificações e restrições em tempo de compilação. As próprias coisas que tornam o PHP flexível e bom para cenários de script (por exemplo, variáveis ​​não são tipadas) dificultam a construção de sistemas com mais de algumas pessoas usando um componente.
Billy ONeal
@ Johnny: Para esclarecer - não estou dizendo que construir grandes sistemas com PHP é impossível - o Facebook e a Co. são a prova positiva de que é muito possível. Só que isso acaba sendo mais difícil do que com idiomas que fornecem melhor sintaxe do tempo de compilação e verificações semânticas.
Billy ONeal