Hola, Agustín no concuerdo contigo en ciertos puntos( o todos).
1 - Es un lenguaje dinámico
Es esto una desventaja ? Acaso es un pecado trabajar con lenguajes dinámicos ?
Entiendo que esto muchas veces sea tomado como lo peor del mundo, sobre todo cuando como programador siempre se ha trabajado con lenguajes de tipado estático y de seguro se ha leído o escuchado las ventajas de estos, que por cierto tampoco son la panacea de cualquier desarrollo(existen desventajas también).
Algunas ventajas tal vez sean:
* Mayor productividad al evitar la compilación
* Te dan una flexibilidad fascinante para desarrollar(en manos equivocadas suele ser una desventaja)
* Son interactivos, esto quiere decir que puedo hacer un par de lineas y probarlo directamente en su REPL y listo.
* Nada de 'verbosismos', al no declarar ni crear nuevos tipos las líneas de código se reducen.
......
Las desventajas creo que las conocemos todos, en fin, si aun así tienes problemas con esto debes saber que PHP incorpora también la posibilidad de estableces que tipo de variables puede recibir una función.
http://php.net/manual/es/functions.arguments.php#functions.arguments.type-declaration
Ademas de declaraciones de tipos de retornos
http://php.net/manual/es/functions.returning-values.php#functions.returning-values.type-declaration.
Crees que al desarrollar algo muy grande el dinamismo te dará problemas?
Esto es porque no conoces TDD(Test-driven Development), realizar un TDD es mas productivo y te dará un mayor control sobre el código.
https://www.paradigmadigital.com/dev/tdd-como-metodologia-de-diseno-de-software/
2 - Tiene un type system "atado con alambre" que tiene problemas terribles de conversiones implicitas.
Supongo que con "atado con alambre" te refieres a algo como esto:
Eso no podría decir que es una desventaja, son los riesgos que se llevan al estar trabajando con un lenguaje dinámico, pero hay solución(igual en Javascript), usar el operador === para comparaciones estrictas, intval() tal vez para extraer el valor entero de la cadena.... etc etc
Siempre es recomendable hacer un TDD y mantener una estructura de tu código correcta.
3 - Tiene una stdlib terriblemente inconsistente, donde el manejo de errores es pésimo, las funciones, sus parámetros y valores de retorno son inconsistentes e impredecibles.
No entiendo de donde sacas eso, es verdad que en sus inicios ha tenido muchos problemas, pero ha evolucionado un montón ademas es de los pocos lenguajes donde la comunidad lo mantiene, esto quiere decir que si encuentras un bug y quizas tienes la solucion puedes reportarlo y créeme que sera tomado en cuenta
http://php.net/get-involved.php.
Es gracias a esto que ha mejorado mucho, muchos no lo saben y es por eso que aun creen que PHP esta obsoleto.
Por cierto PHP es el único lenguaje que incorpora una librería de criptografia moderna
https://www.bleepingcomputer.com/news/security/php-becomes-first-programming-language-to-add-modern-cryptography-library-in-its-core/
4 - Tiene un rendimiento por lo menos 20 veces más lento que otras plataformas como la JVM o .NET
Te repetiré que no estamos en el pasado, PHP ha mejorado, el benchmark/performance de PHP7 es ampliamente aceptable en cuanto a rendimiento:
https://community.centminmod.com/threads/php-5-7-phpng-support-testing-for-centmin-mod-betas.892/page-3
Ademas de que depende de que configuración manejes en tu servidor, puedes usar PHP-FPM, PM PHP, HHMV(HipHop Virtual Machine creada por Facebook), PM HHVM, OP CACHE + PHP-FPM....
No estoy diciendo que es superior a lo que mencionas, pero no se puede decir tampoco que PHP es una total basura en performance sobre todo teniendo muchas alternativas para mejorar esto:
http://php.net/manual/es/install.fpm.php
https://github.com/php-pm/php-pm
https://github.com/facebook/hhvm
5 - El código PHP no es reutilizable fuera de la plataforma PHP. Por ejemplo, no existe una forma de reutilizar código PHP en una aplicación de Android o Windows nativa.
En esto tienes cierta razón, pero por que ? Puesto que PHP no esta destinado ni fue creado para ello, estamos hablando de un lenguaje dominante en lo que respecta al mundo web:
Dije cierta porque también puedes llevar PHP mas allá para lo que fue creado con ayuda de ciertas herramientas interesantes:
Apps desktop:
https://wxphp.org/
http://gtk.php.net/
https://github.com/gabrielrcouto/php-gui
https://github.com/kjellberg/nightrain
6 - Los programadores PHP tienen una enorme tendencia a no tener una formación adecuada ni conocimientos sólidos de fundamentos, buenas prácticas ni arquitectura.
Y es esto una desventaja para desarrollar ? Creo que no ! Esto es aplicable a cualquier lenguaje, de seguro existen programadores de Java, C#, Javascript... etc que ni siquiera saben en donde aplicar el patrón Singleton o siquiera que es este. Esto no tiene nada que ver con PHP, ademas PHP te da la ventaja aplicar cualquier patrón OOP
http://designpatternsphp.readthedocs.io/en/latest/.
Debes tener en cuenta que en PHP puedes usar tanto el paradigma OOP
http://php.net/manual/es/language.oop5.php como el 'nuevo' programación funcional
http://www.phptherightway.com/pages/Functional-Programming.html, lo digo porque hay que saber que OOP no lo es todo en el desarrollo de software y quizás algún otro paradigma puede ayudarte a resolver un problema de manera mas eficiente.
Quizás lo que considero en este punto es que al ser un lenguaje tan popular muchos se aventuran a tomar este como primer lenguaje y bueno, cuando se inicia el 'código espagueti' es un peso que se lleva hasta aprender las buenas practicas.
7 - Los frameworks PHP están pensados para hacer sitios web comerciales sin mucha funcionalidad y de ninguna forma suplen las necesidades de un proyecto serio de un sistema de negocios. Por ejemplo, hasta donde yo conozco, los programadores PHP siguen escribiendo el SQL manualmente ("SELECT * FROM ....") como si estuvieramos en 1999, en lugar de usar un ORM como Dios manda. Esto en 2017 es ridículo y propenso a vulnerabilidades y muy poco reutilizable.
No coincido para nada en esto, te puedo nombrar frameworks muy potentes como Symfony o Laravel los cuales tienen una gran comunidad detrás y es porque estos proveen una estructura sólida para empezar a desarrollar cosas muy 'serias'(esto es algo relativo, se puede desarrollar de todo...) desde una APIRest hasta un CRM. Ademas con los conocimientos adecuados es posible que ni siquiera necesites un framework !
Es verdad que se puede realizar consultas crudamentes, pero existen ORMs para eliminar esta parte 'detestable', por ejemplo Symfony usa Doctrine
http://www.doctrine-project.org/, Laravel usa uno propio Eloquent
https://laravel.com/docs/5.4/eloquent, pero existen mas que es posible usarlos también independientemente:
* Doctrine(es posible usarlo de forma independiente)
http://www.doctrine-project.org/
* Propel
http://propelorm.org/
* Adodb
http://adodb.org/dokuwiki/doku.php
* PHPActiverecord
http://www.phpactiverecord.org/
Ademas no es una regla general desarrollar con un ORM, si temes por la seguridad PHP te da la opcion de usar una extension propia para la abstracción de datos llamada PDO
http://php.net/manual/es/intro.pdo.php.
Y claro que estamos en 2017, hay muchas herramientas, proyectos, librerías, extensiones para PHP !