No todos están ‘en contra’ de php. Cada lenguaje de programación tiene sus fortalezas y debilidades, tiene su contexto y tiene un lugar en una especie de ‘jerarquía de lenguaje’. No estoy en contra de php, pero ya nunca sería mi idioma de elección (!), Ni para mí, ni para recomendar a nadie, ni preferiría tenerlo como idioma en mi empresa.
Puedes escribir cosas geniales en cualquier idioma. Los genios pueden escribir aplicaciones muy complejas en brainfuck. Pero hay una jerarquía: surgen nuevos idiomas por una razón. Existe una jerarquía en el lenguaje, desde niveles muy bajos hasta niveles superiores. Está bien ilustrado por Paul Graham: Batiendo los promedios. Dicho esto, todos son libres de elegir su idioma, pero los idiomas superiores tienden (!) A mejorar la codificación y el diseño. Pero, de nuevo, cualquier lenguaje es bueno para cualquier trabajo, siempre que el diseñador y desarrollador del sistema sea lo suficientemente inteligente como para hacerlo. Sin embargo, algunos idiomas son mejores para ciertos trabajos. Y algunos idiomas son más altos en la jerarquía, php intenta mantenerse al día.
php sufre de lo que sufre cada lenguaje popular:
En primer lugar, demasiadas personas, no digo desarrolladores, codifican muy mal y estas personas tienden a usar lenguajes populares por razones obvias y correctas. php es fácil de aprender, fácil no siempre es algo bueno. PHP es difícil de dominar para sistemas grandes. ‘popular’ no dice nada sobre la calidad, pero en muchos casos, popular significa que también hay mucha basura, porque ‘todos’ 🙂 la usan.
En segundo lugar, los llamados desarrolladores creen que pueden programar o aprenden 1 idioma rápidamente. Aprenden un lenguaje popular y quieren construir una carrera en él. Esto fue cierto hace medio siglo, o unas pocas décadas. Mi opinión personal es que esto ya no es cierto: aprender nuevos idiomas y paradigmas enriquece su conocimiento sobre cómo diseñar y codificar, incluso si se queda con un idioma principal. Significado: los idiomas populares tienden a tener muchas personas que lo usan y que solo conocen una forma muy específica de hacer las cosas según el idioma. No son los mejores desarrolladores.
Lo mismo es cierto en gran medida para, por ejemplo, JavaScript. Hay una razón por la cual hay cosas como mecanografiado, ES6, clojurescript, … Es la misma razón por la que php se renueva: trata de mantenerse al día con nuevas ideas y prácticas de programación, lo cual es una tarea difícil.
También veo el mismo problema con Java: una gran cantidad de código escrito es que Java es bastante pobre, sigue prácticas comunes, pero no prácticas ‘buenas’ (que es algo muy diferente). Solo porque hay mucho código Java bastante pobre, algunas personas, no todos :), piensan que la tecnología Java es mala, la JVM no está funcionando bien … La tecnología JVM es mucho más que aplicaciones Java (mal escritas), o peor, aplicaciones Java EE mal escritas.
Dicho esto: sé por mí mismo que no puedo diseñar sistemas de software grandes correctamente en php. Carece de demasiadas cosas, está demasiado acoplado por defecto (!), O más bien, mi cerebro está demasiado limitado para hacerlo en php. Pero no me importaría en absoluto hacer un pequeño componente en php, o preferiblemente, dejar que alguien más lo haga, siempre que cumpla con el rendimiento, la escalabilidad, la capacidad de prueba (generativa), las buenas prácticas de codificación, etc.
Para concluir: ciertamente no ‘todos están en contra de php’. Hay personas, como yo, que están en contra de cómo se escribe mucho código en php (o Java, o javascript, o ruby, o python, o …). En el caso de php, pensé que era un lenguaje bastante impresionante hace una década (o dos), pero los tiempos cambian, las expectativas (tanto para los desarrolladores como para los usuarios de aplicaciones) cambian y la ciencia de TI progresa. Para mí, php no puede mantenerse al día con los idiomas más nuevos, pero eso no lo convierte en un mal idioma; lo convierte en un idioma inferior en 2017.
Una especie de descargo de responsabilidad: ya no codifico php, pero lo hice hace más de una década y lo disfruté mucho. Ya no codifico Java tampoco, aunque sigo pensando que la tecnología JVM es bastante impresionante, así que uso la tecnología JVM (no, no Scala, Kotlin o Ceylon, estuve allí, no me gustaron). Y más recientemente, comencé a alejarme de la JVM para algunos módulos en sistemas más grandes.