TL; DR: Sí y sí.
Para conocer todas las cosas que están mal con PHP (y hay muchas), debe comenzar aquí:
PHP: un fractal de mal diseño
Dicho esto, es tan popular como lo es porque hay muchas cosas buenas al respecto. Sería mucho más fácil descartar PHP si no fuera tan bueno para resolver problemas del mundo real. PHP no se atascó en la garganta de todos porque era la única opción disponible (vea el otro lenguaje popular pero problemático: Javascript). Fue gradualmente * elegido * por los desarrolladores como la mejor manera de resolver sus problemas durante los últimos 20 años.
- ¿Cuáles son las aplicaciones web más impresionantes creadas por los estudiantes mientras asisten a escuelas de codificación como Flatiron School, Fullstack Academy, DigitalCrafts, MakerSquare, Hack Reactor, Dev Bootcamp, etc.?
- ¿Se pueden usar los marcos Javascript (API Angular + NodeJs + REST) para estas situaciones?
- ¿Se puede construir una aplicación web en Python?
- ¿En qué marco web está construida la nueva interfaz web de WhatsApp?
- ¿Cuáles son algunas herramientas (aplicaciones, software, web) que siempre pueden motivarnos?
PHP comenzó como una herramienta para facilitar la creación de plantillas. Pero cada vez que alguien necesitaba un poco más, se aplicaba otra función para resolver ese problema. Por lo tanto, es una mezcolanza, de herramientas altamente específicas para resolver problemas comunes. (No estoy de acuerdo con la analogía en el artículo de que las herramientas son destornilladores triangulares y alicates sin dientes) Pero PHP carece de una filosofía central coherente para hacer que esas herramientas se unan de una manera coherente y lógica. De ninguna manera es bonita.
Al igual que Javascript, las imperfecciones de PHP se eliminan gradualmente del lenguaje y se suavizan mediante marcos (Laravel, Symfony, Yii) que tienen como objetivo agregar consistencia en la parte superior del caos.
PHP no va a desaparecer y sus problemas no parecen irresolubles (el próximo PHP 7 es un gran paso en la dirección correcta, aunque introducirá algunos problemas de compatibilidad con versiones anteriores), por lo que probablemente le servirá para poder tener una buena comprensión. de cómo hacer las cosas en PHP. Dicho esto, también podría resolver sus problemas con Python, Node o Ruby si hay algo en esos lenguajes particularmente adecuado para el problema que está tratando de resolver o la forma en que piensa acerca de la programación.
No hay un “mejor idioma” para aprender en todas las situaciones.