¿Cómo romper el paradigma de "php es un mal lenguaje"? [cerrado]

19

PHP no es un mal lenguaje (o al menos no es tan malo como algunos pueden sugerir). Tuve maestros que ni siquiera sabían que PHP estaba orientado a objetos hasta que les dije. He tenido clientes que desconfían de nosotros de inmediato cuando decimos que somos desarrolladores de PHP y nos cuestionan por no usar lenguajes y marcos elegantes como Django o RoR, o lenguajes "empresariales y sólidos" como Java y ASP.NET.

Facebook está construido en PHP. Hay muchos proyectos sólidos que impulsan la web como Joomla y Drupal que se utilizan en la empresa y los gobiernos. Hay marcos y bibliotecas que tienen algunas de las mejores arquitecturas que he visto en todos los idiomas (Symfony 2, Doctrine). PHP tiene la mejor documentación que he visto y una gran comunidad de profesionales.

PHP tiene características avanzadas de OO como reflexión, interfaces, y mucho menos que PHP ahora admite la reutilización horizontal de forma nativa y limpia a través de rasgos .

Hay malos programadores y script kiddies que le dan a PHP una mala reputación, pero potencian a la comunidad PHP al mismo tiempo, y debido a que es tan fácil hacer las cosas PHP, a menudo puedes hacer las cosas de la manera incorrecta, pero ¿por qué culpar a ¿idioma?.

Ahora, para resumir esto en una pregunta real: ¿cuál sería un argumento bueno, sólido, breve y dulce para evitar ser mal visto y detener los prejuicios de una sola vez y defender su honor cuando dice que es un desarrollador de PHP? .

(galleta gratis con la crema batida para aquellos con evidencia empírica de convencer a alguien —cliente u otro— en el acto)

PD: usamos Symfony , y el código termina siendo hermoso y fácil de mantener

PPS: Facebook está escrito en PHP, compilado en C ++ a través de HipHop y desplegado en Hadoop. Aquí: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
fuente
99
Para empezar, marque todos los comentarios sarcásticos anti-PHP en los programadores. Hay al menos un desarrollador de PHP entre los moderadores que realmente ama a eliminar los ...
Yannis
23
Escriba un buen código PHP
Charles Sprayberry
42
Solo una nota, realmente ODIO cuando la gente de PHP trae el argumento "FB está construido en PHP". Eso es bs, está construido en sistemas distribuidos masivos como Hadoop y las partes que realmente hacen las cosas están en C. PHP se usa para crear plantillas y la interfaz de usuario, eso no es suficiente para decir "FB está construido en PHP" ...
TC1
10
@NB Sí, pero en este caso, en mi humilde opinión decir que "FB está construido en PHP" es como decir que StackOverflow está construido en CSS y JavaScript, porque tiene algunos buenos toques de interfaz de usuario aquí y allá ...
TC1
13
No te contrataría porque no quiero mantener el código PHP. PHP está ganando características como Perl y JavaScript y otros lenguajes apresurados, pero su núcleo se ha diseñado rápidamente y no se puede cambiar eso. Tal vez debería considerar aprender algo de Django y RoR y Grails y, por lo tanto, ser independiente del lenguaje.
Trabajo

Respuestas:

40

La única respuesta que tengo es esta: todo apesta.

Puede encontrar toneladas de argumentos en contra de que la OOP sea buena (una búsqueda rápida los revelará) versus la programación funcional o de procedimiento. Parece indicar que el soporte OO de PHP lo defiende.

Google en blanco apesta y encontrarás resultados para cualquier cosa. Python apesta . Ruby apesta . Los rieles apestan . PHP apesta . Java apesta .

¿Quieres saber lo que realmente apesta? Programadores. Los programadores apestan. Cualquier buen desarrollador debería ser capaz de crear una aplicación increíble, front-end y back-end, independientemente del idioma, ¡incluso si no estaban familiarizados con el idioma! (Es decir, un buen programador debería poder aprender y trabajar con cualquier idioma de manera efectiva).

También tenga en cuenta que el éxito de una aplicación no tiene nada que ver con su código. He oído que el código de Facebook es horrible, pero por Dios es efectivo. Probablemente, lo mismo ocurre con Wikimedia (Wikipedia está construida en PHP y también es un sitio web extremadamente popular). ¡Lo que realmente importa son los resultados!

PHP es el lenguaje con el que estoy más familiarizado personalmente. Lo defenderé hasta la muerte. He trabajado con frameworks PHP, código PHP directo y PHP, python y ruby (e incluso Java) para el desarrollo web. No puedo decir que uno sea particularmente mejor que el otro. Lo que más importa son los desarrolladores y los algoritmos. He visto código increíblemente bueno y completamente horrible en muchos idiomas (especialmente PHP ya que tengo mucha exposición).


Ahora para su pregunta: depende de con quién esté tratando

Empresarios

Se preocupan principalmente por los resultados y la rentabilidad. El hecho de que el exitoso Facebook, Wikipedia y Wordpress usen PHP debería ser más que suficiente para convencerlos de que es un lenguaje efectivo para construir aplicaciones exitosas.

Programadores

Deja que tu código hable por sí mismo. Si un desarrollador dice que PHP es inferior de alguna manera, muéstrele algún código PHP que considere efectivo. La prueba del budín está en comer.

Píldoras de explosión
fuente
8
"Cualquier buen desarrollador debería ser capaz de crear una aplicación increíble, front-end y back-end, independientemente del idioma". Repita eso después de haberlo probado en Malbolge.
Michael Borgwardt
55
No creo que un buen programador pueda escribir un buen código en un lenguaje que no conoce. Decente, tal vez, pero no es bueno. Esto se debe a que escribir un buen código en cualquier idioma requiere un buen conocimiento de las bibliotecas y del lenguaje en sí.
svick
44
Estoy en desacuerdo; Un buen desarrollador debe poder familiarizarse con el conocimiento necesario para escribir buenas aplicaciones. Es importante un buen conocimiento de las bibliotecas y la sintaxis, pero eso es algo que un buen desarrollador puede aprender fácilmente. Lo que es mucho más difícil son los algoritmos y conceptos (y probablemente paciencia) ... incluso si el lenguaje es Malbolge. O tal vez estoy pensando en un gran desarrollador.
Píldoras de explosión
77
success of an application has nothing to do with its code<- Cierto. Pero cuando las personas dicen que "PHP es un mal lenguaje", no quieren decir "las aplicaciones escritas en PHP son malas", sino que significan que "las aplicaciones escritas en PHP a menudo no son divertidas para trabajar debido a los espaguetis de código". Hay grandes aplicaciones escritas en PHP, para estar seguro. Pero no creo que esta respuesta aborde lo que los programadores quieren decir cuando llaman PHP "malo".
Billy ONeal
2
@BillyONeal ¿Cuál es su métrica para saber si un idioma es "bueno" o "malo"? Las aplicaciones lo son todo ... a nadie le importa el código . Linus Torvalds se quejó de lo terrible que es C ++: se puede decir que cualquier cosa es mala porque algunos programadores escriben código incorrecto en ella.
Píldoras de explosión
20

PHP tiene una historia sórdida. Es mucho mejor ahora que fue hace poco tiempo, pero hubo un tiempo, un tiempo muy largo, donde se fomentaron muchas malas prácticas y patrones y fueron difíciles de evitar. Hay toda una generación de terribles códigos PHP que todavía están dando vueltas, y en la medida en que los nuevos programadores están aprendiendo al leer códigos antiguos, están aprendiendo mal comportamiento. Puede que PHP ahora no merezca su reputación de blackend, pero de todos modos se lo ganó.

Su mejor apuesta para defender PHP es distanciar y distinguir cuidadosamente el estado actual del arte de la historia con la que todos están familiarizados. Puedes decir que PHP no es un lenguaje terrible, pero si estás hablando con alguien que ha estado en la industria durante varios años, su memoria les dice lo contrario.

Muéstreles cómo el equipo de PHP aprendió de sus errores y mejoró el lenguaje. Atrás quedaron los días de citas mágicas y registros globales. Atrás quedó el paradigma global de todo, el modo seguro y mysql_escape_string. Explíqueles que los programadores PHP reales siempre usan espacios de nombres y consultas parametrizadas, evitan funciones obsoletas y siempre colocan su código de biblioteca fuera de la raíz del documento.

PHP ha cambiado y los programadores de PHP han cambiado. Es por eso que PHP es la maravillosa plataforma que es hoy. Además, es la única plataforma que sabe que sus clientes tendrán preinstalada. Eso es enorme.

Como nota al margen, recomendaría no citar los marcos y motores CMS existentes como una gran victoria para PHP. Corre el riesgo de que señalen cosas como el estudio de seguridad de Websense de hace 4 días que muestra que el 94% de las infecciones recientes del sitio web fueron contra sitios web PHP que ejecutan software como Joomla y Wordpress. Ese no es el tipo de empresa con la que quieres que te vean. En cambio, señale que su código será mucho más seguro que todas esas otras cosas.

tylerl
fuente
1
+1 - pero - pero - Afirmar que su código será "mucho más seguro" que las revisiones por pares de código por parte de varios profesionales realmente no va a retener mucho agua a alguien que tenga la mitad de experiencia en seguridad. Todos escriben errores de seguridad. El truco es solo arreglarlos un paso por delante de los malos.
Billy ONeal
@BillyONeal sí. El último párrafo tiene la intención de parecer un poco ... extraño y hacerte repensar tu enfoque de seguridad. Investigué mucho sobre la seguridad de PHP contra aplicaciones web que no son PHP, y los informes están sesgados de manera inquietante y masiva contra PHP. Eso no quiere decir que PHP sea malo, pero la seguridad es una preocupación real.
tylerl
1
"Además, es la única plataforma que saben que sus clientes habrán preinstalado". Esta afirmación me parece completamente falsa. No todos los servidores implementados se implementan con una pila LAMPhp, ni ninguna de las distribuciones de servidores Linux comunes con las que he intentado enviar PHP preinstalado. Sin embargo, cada distribución de Linux que he usado se envía con Python 2.x. Sospecho que algunas utilidades comunes confían en él.
ThorSummoner
9

PHP es el COBOL de la web. Ambos idiomas no son respetados, sin embargo, muchas personas se ganan la vida construyendo y manteniendo sistemas escritos en ellos, y están presentes en volumen en casi todos los principales sistemas informáticos de su mundo nativo ( es decir , la web y los negocios comerciales, respectivamente). Ambos lenguajes son menospreciados por los profesionales de otros lenguajes más populares, basados ​​en gran medida en hábitos antiguos y obsoletos practicados por programadores que desde entonces han aprendido mejor y mejorado sus herramientas.

PHP debería ser tan afortunado que viva la vida de COBOL. COBOL ha existido por más tiempo que cualquier otra cosa que no sea FORTRAN, y no desaparecerá en el corto plazo. Existen muchos programas COBOL de uso diario que son más antiguos que las personas que los mantienen. Puede que no sea "el nuevo calor", pero siempre habrá dinero para ganar trabajando en y con él.

Ross Patterson
fuente
4

Creo que también puede ser útil comprender la otra cara de la moneda y reconocer la escasez de PHP. Si bien PHP ha avanzado mucho de ser un lenguaje de plantillas, todavía hay muchas cosas que podrían mejorarse. Hay algunos puntos en los que todavía falta PHP: Unicode, características funcionales, la organización de la biblioteca estándar, arrayetc.

Lo que sugiero es que, para hacer una discusión constructiva sobre las fortalezas y debilidades de PHP, podría ser bueno reconocer todo esto. "Sí, sé que la biblioteca estándar de PHP no está muy organizada. Pero si se escribió hoy, podría hacer uso de espacios de nombres y API orientadas a objetos". "Sí, sé que la matriz predeterminada hace un poco de desorden al mezclar las estructuras del diccionario y la matriz. Pero si uno quiere algunas mejores colecciones, puede utilizar el SPL".

Su punto de vista resultará más fuerte si demuestra que sabe que los argumentos de los demás tienen alguna razón.

Andrea
fuente
2

¿Por qué?

Cualquiera que te haga sentir que tienes que defenderte (ya sea carrera, cónyuge, hábitos de gasto, etc.) está perdiendo su propio tiempo. Tomar el tiempo para defenderse es simplemente burlarse del tipo equivocado de personas: ahora está perdiendo su propio tiempo y el de ellos.

Elimina a estas personas de tu vida: estarás mejor sin ellas.

JK
fuente
44
Entonces, la respuesta es tomarlo como algo personal e ignorarlo. Este es un problema cultural, prefiero abordarlo y tratar de hacer que mis argumentos sean mejores y más concisos para derribar la ignorancia.
dukeofgaming
3
En el vacío, estoy de acuerdo con su consejo aquí, pero PHP es indefendible. Siempre me maravillo de cómo Mark Zuckerberg tuvo éxito a pesar de lo horrible de PHP: codinghorror.com/blog/2008/05/…
Jim G.
1

No hay una frase breve y dulce que puedas revelar para convencer a la gente de la valía de PHP y sus desarrolladores, pero escribiste un argumento muy convincente justo antes de hacer la pregunta.

CFL_Jeff
fuente
1

Para abordar el tema "PHP es un lenguaje incorrecto", debe averiguar por qué la persona en cuestión piensa que es un lenguaje incorrecto. Quizás trabajó en un mal proyecto escrito en PHP. Tal vez no le gusta prefijar sus variables $. Tal vez ellos mismos han intentado usar el lenguaje y han escrito un desorden insostenible. Muchos programadores que provienen de otros lenguajes de programación ven PHP y ven un desorden, porque lo que tiene sentido en PHP no tiene sentido en otro lenguaje o en otras plataformas. Por ejemplo, en PHP, las matrices son la "cinta adhesiva del universo" y se utilizan para lograr prácticamente cualquier cosa, mientras que en otros lenguajes de programación tal cosa sería absurda.

Sugeriría una combinación de las respuestas aquí.

  1. Como dijo tylerl , debe demostrar que el PHP moderno es significativamente mejor que sus primos más antiguos. Atrás quedó la maldad de create_function. Se fue la jungla de llamar includemanualmente a todas partes.
  2. Reconozca que hay fallas en PHP. Hay fallas en cada lenguaje de programación. Decir lo contrario hará que muchos programadores serios ignoren por completo su respuesta como un "fanboi".
  3. Mostrar a las personas cosas que son fáciles en PHP que son difíciles en otros lenguajes de programación. Los lenguajes de programación están diseñados para facilitar algunas tareas, lo que necesariamente dificulta otras tareas. ¿C? La manipulación de la memoria y los hacks de bits son realmente fáciles, y el lenguaje es realmente simple, pero mantener grandes aplicaciones es difícil. ¿Java? No tiene free, y todo es "OO-ish", pero el tiempo de ejecución es grande y OO puede ser limitante. C ++? Le permite crear tipos que se comportan exactamente como los tipos primitivos (por ejemplo, int) en el lenguaje, pero eso conlleva una gran cantidad de complejidad. PHP? Hace que sea muy fácil comenzar sin muchos conocimientos de programación, pero como resultado tiene muchísimo código basura publicado en Internet.
  4. Reconocer las ventajas no relacionadas con el lenguaje de PHP. Todavía hay muchas cosas en PHP, como lenguaje con el que puede ser ... molesto trabajar. Pero es fácil de configurar, fácil de implementar y viene con un gran conjunto de excelentes bibliotecas a las que puede "conectarse" sin mucho trabajo adicional.

Hay un lugar para cada idioma. Elija el idioma que se adapte al problema en cuestión, no intente calzar un idioma preferido en lugares donde no pertenece.

Billy ONeal
fuente
1
-1: ¿Por qué estás tratando de defender PHP? Es una mierda: codinghorror.com/blog/2008/05/…
Jim G.
1
@ JimG .: Porque eso es lo que el OP me pidió que hiciera. Estoy jugando al abogado del diablo aquí; Realmente desprecio trabajar con PHP yo mismo. Pero el hecho de que sea molesto trabajar con un sistema no significa que no haya cosas buenas sobre ese sistema. Uno puede aprender incluso de los mayores jodidos. :)
Billy ONeal
@BillyONeal ¿Por qué odias trabajar con él? Decidir sobre las cosas yo mismo.
Johnny
@Johnny: Principalmente, solo es un lenguaje de script que no es adecuado para construir sistemas grandes. Los lenguajes de secuencias de comandos son excelentes para la creación rápida de prototipos, la facilidad de implementación y vienen con grandes bibliotecas estándar en la caja. Pero construir sistemas grandes con ellos a menudo resulta en un desorden imposible de mantener debido a la incapacidad de aplicar controles y restricciones en tiempo de compilación. Las mismas cosas que hacen que PHP sea flexible y bueno para escenarios de secuencias de comandos (por ejemplo, las variables no están tipificadas) dificultan la creación de sistemas con más de unas pocas personas que usan un componente.
Billy ONeal
@Johnny: Para aclarar, no estoy diciendo que construir sistemas grandes con PHP sea imposible, Facebook y compañía son una prueba positiva de que es muy posible. Solo que termina siendo más difícil que con lenguajes que proporcionan una mejor sintaxis de tiempo de compilación y verificaciones semánticas.
Billy ONeal