¿Parece que últimamente programar en PHP no es algo "cool" alguien se anima a dar sus razones de que este pasando esto?
Según he leído en foros alguno de los motivos son:
- PHP es un lenguaje inconsistente, por ejemplo normalmente las funciones que devuelven algún resultado lo hacen por return en cambio la función preg_match devuelve el resultado dado un parametro preg_match($patron, $sujeto, $coincidencias), cosa que te obliga a estar leyendo constantemente la documentación.
- Te permite programar muy rápidamente pero también de forma sucia, mezclando lógica y vista.
PHP fue producto de una necesidad específica que no existía en su momento y fue mutando a lo largo del tiempo hasta convertirse en lo que es hoy día. Muchos desarrolladores hicieron aportes a su código fuente, que no tenía un líder claro ni el nivel de organización que tienen los proyectos open source actuales.
PHP evolucionó a la par que quienes lo desarrollaban, mientras aprendían. Se cometieron errores de diseño que siguen y seguirán ahí. El lenguaje desde su inicio, más que un lenguaje ha sido un "template engine", yendo en contra del principio de "separation of concerns" que es el gran causante en parte de la falta de elegancia que pueden tener otros lenguajes creados en momentos cuando la web estaba más madura y las necesidades eran un poco más claras y más específicas. PHP es una "solución" generalista.
Tristemente los developers somos muy religiosos y emitimos duras críticas contra herramientas sin olvidarnos de lo fundamentales que estas hayan podido ser en la evolución de lo que hoy conocemos como Web. PHP debe ser algo del pasado, no recomendaría a ninguna persona que quiera aprender a programa que se meta con PHP, pero en su momento colaboró con el avance de Internet. Hoy por hoy, PHP es el motor que potencia dos de los sitios con más tráfico en Internet: Yahoo y Facebook, y lo hará por muchos años más.
Algo similar pasa con Flash: es odiado por muchos (me incluyo), pero no nos ponemos a pensar que sin Flash no hubiese existido YouTube en el 2005 y la revolución del vídeo digital que creo que ya pasó y no progresa por culpa de los estudios cinematográficos (pero eso ya es otra historia), apenas estaría comenzando. Ocho años tarde.
PHP fue una excelente herramienta en su momento. Está en nosotros mismos evolucionar, descubrir y aprovechar nuevas y mejores alternativas, y si es posible, evitar desgastarnos en acusaciones religiosas en contra de tecnologías que no son de nuestro agrado.
La gente habla mal de PHP porque no lo conoce, sobre todo su evolución, desconocimiento que llega incluso a los propios desarrolladores PHP. Éste es uno de los lenguajes más vivos, y por tanto, que más están evolucionando constantemente, aportando novedades o importando sin complejo alguno aquellas características que se estiman como positivas de otros lenguajes.
En 2009, por ejemplo, se introdujeron las Closures, y a día de hoy la gente casi ni las usaría si no llega a ser por Symfony. En PHP tienes interfaces, clases, reflections, proxys, magic methods, etc, lo único que te impide utilizarlos si quieres tener un código correctamente estructurado es tu capacidad y conocimiento.
Si queréis tener un set de herramientas ya prefabricadas que te faciliten y guíen a la hora de crear ese código ordenado y separado por capas reduciendo la posibilidad de liarlo todo, no tienes más que recurrir a alguno de los frameworks que para ello se han creado en PHP (como Zend o Symfony). Porque a nadie se le ocurre ya salirse de Rails o programar en JSP mezclando vista y lógica, verdad?. Si quieres desarrollar bajo MVC, no tienes más que utilizar Doctrine como ORM para el modelo, Symfony para el controlador y Twig para la vista.
Qué se puede hacer basura? Sí. Qué se puede hacer basura con más facilidad que otros lenguajes? Probablemente. Pero es el precio a pagar, como sucede en JavaScript, por dar al desarrollador libertad casi total en el manejo del lenguaje, sus estructuras y objetos. Es tu responsabilidad, no del lenguaje, realizar un buen código no lo olvides.
Por último, que tal si juzgáramos Java por la mierda que hacen aquellos que programan, o lo hicieron en el pasado jejeje, en JSP a pelo? A todos nos parece más justo hacerlo en base a los excelentes frameworks con los que nos alegran la vida, no? Pues con PHP debería pasar lo mismo.
Como comentan por ahí, PHP Sadness (http://phpsadness.com/) es un recurso interesante para responder a la pregunta.
Pero, sin lugar a dudas, la respuesta definitiva es el alucinantemente detallado post de @eevee, PHP: a fractal of bad design (http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/). En él define lo que entiende por un lenguaje bien diseñado, y luego detalla todas las razones (muchas, muchas, muchas) por las que PHP no lo es.
En cualquier caso, y aunque sobre el papel me parece incontestable lo malo que es PHP como lenguaje, creo que sólo la experiencia con otros lenguajes puede abrirle los ojos a un programador que sólo haya usado PHP. En desarrollo web PHP no ofrece nada frente a la expresividad de Python o Ruby, o la velocidad de Java o Go. Su éxito se debe a la barrera de entrada baja que en su día supuso el soporte MySQL por defecto, el fácil despliegue con Apache y mod_php y la oferta de hosting barato. A día de hoy, todo eso está disponible para cualquier lenguaje de los citados.
Cada cual ha de escoger sus herramientas en base a varios factores (habilidades propias, tipo de proyectos, capacidades del equipo, etc), pero mi sensación es que a día de hoy la elección de PHP se explica sólo por el desconocimiento de las herramientas mucho mejores al alcance de todos.
Edit: había dicho mod_python en vez de mod_php. Evidentemente mod_python no hizo mucho (al menos directamente) para potenciar la adopción de PHP ;)
Sin entrar a valorar todo lo que dice phpsadness, que es totalmente cierto y cualquiera que desarrolle en PHP estará de acuerdo con ello...
La mala fama de PHP viene sobretodo pq es un lenguaje muy maltratable, no es fuertemente tipado y empezó siendo "solo" un lenguaje de scripting... gracias a eso tenemos autenticas castañas a nivel de código como Wordpress, Magento y php4 en general.
Además tenemos que pensar que PHP no lleva un "framework" incorporado como .NET o java y que durante muchos años (hasta hace un par), los frameworks existentes para PHP eran de una calidad muy dudosa (symfony1, zf...) comparados con otros fw de otros lenguajes...
A nivel de performance tampoco es nada del otro mundo...
En resumen creo que el gran punto a favor que tiene PHP, su flexibilidad, en malas manos tb es su punto en contra. De todas formas PHP ha cambiado mucho (y sigue cambiando gracias a Dios). Esperemos que con el tiempo se dejen de tanta retrocompatibilidad y solucionen todas las inconsistencias que tiene...
Creo que el análisis de esta reflexión no debería superar, ni de broma, las dos lineas. Es fácil.
PHP permite un desarrollo rápido, sencillo, documentado y con una linea de aprendizaje bastante buena. Llegado a este punto, y dado el momento social en el que estamos, creo que no hay demasiado más donde mirar, no creéis?
Un PHP5.4 bien configurado, vuela.
Basta con leer "php, fractal de un mal diseño" para saber que la comunidad de este lenguaje es una comunidad de programadores amateur, cuando cualquiera de estos programadores aprender un poco de buenas practicas y arquitectura se migra a otra plataforma mas robusta, sea .net, java, python, scala, etc. (ruby no cuenta, apesta igual que php.)
En mi opinión:
Con PHP se han creado auténticos monstruos spaghetti, que a quien les haya tocado sufrirlos se le han quitado las ganas de volver a tocarlo.
Ahora con los frameworks se está olvidando para bien.
Php es inconsistente y es obvio, pero por otro lado esta muy extendido y permite crear un aplicación Web de manera muy rápida. Si encima utilizas un buen framework pues seguramente tengas un código más limpio y estructurado.
No dudo que tengan inconsistencias, pero en mi opinión es debido a que le falta implementar con más rigidez el paradigma de orientación a objetos: Herencia, Interfaces, Tipado, Namespaces y un recolector de basura mucho más eficaz.
Al final es un lenguaje diseñado para que se ejecute en menos de un segundo (entorno web), todo lo que esceda de ahí, o un script de administración en entorno servidor hace evidente sus carencias.
Sin embargo en mi opinión es versátil, fácil de leer, si se escribe con una minima formalidad y fácil de mantener.
Hola, mi experiencia con php fue gracias a la comunidad, y he visto la evolución del 4 al 5, y espero que en le 6 de un salto cualitativo a un lenguaje mas solido.
Mi opinión es q le queda mucho por contar, y como ejemplo Symfony en donde se convierte en algo serio trabajar con PHP, y con las herramientas de rápidez como APC, o Memcache sobre linux, o el trabajo de consola, o el MVC tan sencillo, Twig....
Aunque he de decir que ahora estoy aprendiendo ruby y nodejs, cuando empeze fue el unico lenguaje que comprendi rápidamente como autodidacta no solo de programacion sino de conceptos de backend, bases de datos y servidor.
No te restringe la forma de diseñar la aplicación. Pero tampoco se puede ver como una limitación. Que sea versátil se puede considerar también como la capacidad para representar tu solución de la forma que resulte más práctica o cómoda a tus necesidades. Está claro que la responsabilidad de la coheréncia del códidgo recae entonces sobre el programador.
Según he leído en foros alguno de los motivos son:
- PHP es un lenguaje inconsistente, por ejemplo normalmente las funciones que devuelven algún resultado lo hacen por return en cambio la función preg_match devuelve el resultado dado un parametro preg_match($patron, $sujeto, $coincidencias), cosa que te obliga a estar leyendo constantemente la documentación.
- Te permite programar muy rápidamente pero también de forma sucia, mezclando lógica y vista.
Comenta en el foro ;)
01/06/2013 15:19
PHP evolucionó a la par que quienes lo desarrollaban, mientras aprendían. Se cometieron errores de diseño que siguen y seguirán ahí. El lenguaje desde su inicio, más que un lenguaje ha sido un "template engine", yendo en contra del principio de "separation of concerns" que es el gran causante en parte de la falta de elegancia que pueden tener otros lenguajes creados en momentos cuando la web estaba más madura y las necesidades eran un poco más claras y más específicas. PHP es una "solución" generalista.
Tristemente los developers somos muy religiosos y emitimos duras críticas contra herramientas sin olvidarnos de lo fundamentales que estas hayan podido ser en la evolución de lo que hoy conocemos como Web. PHP debe ser algo del pasado, no recomendaría a ninguna persona que quiera aprender a programa que se meta con PHP, pero en su momento colaboró con el avance de Internet. Hoy por hoy, PHP es el motor que potencia dos de los sitios con más tráfico en Internet: Yahoo y Facebook, y lo hará por muchos años más.
Algo similar pasa con Flash: es odiado por muchos (me incluyo), pero no nos ponemos a pensar que sin Flash no hubiese existido YouTube en el 2005 y la revolución del vídeo digital que creo que ya pasó y no progresa por culpa de los estudios cinematográficos (pero eso ya es otra historia), apenas estaría comenzando. Ocho años tarde.
PHP fue una excelente herramienta en su momento. Está en nosotros mismos evolucionar, descubrir y aprovechar nuevas y mejores alternativas, y si es posible, evitar desgastarnos en acusaciones religiosas en contra de tecnologías que no son de nuestro agrado.
03/06/2013 10:57
En 2009, por ejemplo, se introdujeron las Closures, y a día de hoy la gente casi ni las usaría si no llega a ser por Symfony. En PHP tienes interfaces, clases, reflections, proxys, magic methods, etc, lo único que te impide utilizarlos si quieres tener un código correctamente estructurado es tu capacidad y conocimiento.
Si queréis tener un set de herramientas ya prefabricadas que te faciliten y guíen a la hora de crear ese código ordenado y separado por capas reduciendo la posibilidad de liarlo todo, no tienes más que recurrir a alguno de los frameworks que para ello se han creado en PHP (como Zend o Symfony). Porque a nadie se le ocurre ya salirse de Rails o programar en JSP mezclando vista y lógica, verdad?. Si quieres desarrollar bajo MVC, no tienes más que utilizar Doctrine como ORM para el modelo, Symfony para el controlador y Twig para la vista.
Qué se puede hacer basura? Sí. Qué se puede hacer basura con más facilidad que otros lenguajes? Probablemente. Pero es el precio a pagar, como sucede en JavaScript, por dar al desarrollador libertad casi total en el manejo del lenguaje, sus estructuras y objetos. Es tu responsabilidad, no del lenguaje, realizar un buen código no lo olvides.
Por último, que tal si juzgáramos Java por la mierda que hacen aquellos que programan, o lo hicieron en el pasado jejeje, en JSP a pelo? A todos nos parece más justo hacerlo en base a los excelentes frameworks con los que nos alegran la vida, no? Pues con PHP debería pasar lo mismo.
01/06/2013 16:33
Pero, sin lugar a dudas, la respuesta definitiva es el alucinantemente detallado post de @eevee, PHP: a fractal of bad design (http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/). En él define lo que entiende por un lenguaje bien diseñado, y luego detalla todas las razones (muchas, muchas, muchas) por las que PHP no lo es.
En cualquier caso, y aunque sobre el papel me parece incontestable lo malo que es PHP como lenguaje, creo que sólo la experiencia con otros lenguajes puede abrirle los ojos a un programador que sólo haya usado PHP. En desarrollo web PHP no ofrece nada frente a la expresividad de Python o Ruby, o la velocidad de Java o Go. Su éxito se debe a la barrera de entrada baja que en su día supuso el soporte MySQL por defecto, el fácil despliegue con Apache y mod_php y la oferta de hosting barato. A día de hoy, todo eso está disponible para cualquier lenguaje de los citados.
Cada cual ha de escoger sus herramientas en base a varios factores (habilidades propias, tipo de proyectos, capacidades del equipo, etc), pero mi sensación es que a día de hoy la elección de PHP se explica sólo por el desconocimiento de las herramientas mucho mejores al alcance de todos.
Edit: había dicho mod_python en vez de mod_php. Evidentemente mod_python no hizo mucho (al menos directamente) para potenciar la adopción de PHP ;)
03/06/2013 09:17
La mala fama de PHP viene sobretodo pq es un lenguaje muy maltratable, no es fuertemente tipado y empezó siendo "solo" un lenguaje de scripting... gracias a eso tenemos autenticas castañas a nivel de código como Wordpress, Magento y php4 en general.
Además tenemos que pensar que PHP no lleva un "framework" incorporado como .NET o java y que durante muchos años (hasta hace un par), los frameworks existentes para PHP eran de una calidad muy dudosa (symfony1, zf...) comparados con otros fw de otros lenguajes...
A nivel de performance tampoco es nada del otro mundo...
En resumen creo que el gran punto a favor que tiene PHP, su flexibilidad, en malas manos tb es su punto en contra. De todas formas PHP ha cambiado mucho (y sigue cambiando gracias a Dios). Esperemos que con el tiempo se dejen de tanta retrocompatibilidad y solucionen todas las inconsistencias que tiene...
03/06/2013 11:33
PHP permite un desarrollo rápido, sencillo, documentado y con una linea de aprendizaje bastante buena. Llegado a este punto, y dado el momento social en el que estamos, creo que no hay demasiado más donde mirar, no creéis?
Un PHP5.4 bien configurado, vuela.
24/11/2014 21:08
01/06/2013 14:56
Con PHP se han creado auténticos monstruos spaghetti, que a quien les haya tocado sufrirlos se le han quitado las ganas de volver a tocarlo.
Ahora con los frameworks se está olvidando para bien.
01/06/2013 15:56
01/06/2013 16:29
12/06/2013 20:17
Al final es un lenguaje diseñado para que se ejecute en menos de un segundo (entorno web), todo lo que esceda de ahí, o un script de administración en entorno servidor hace evidente sus carencias.
Sin embargo en mi opinión es versátil, fácil de leer, si se escribe con una minima formalidad y fácil de mantener.
27/06/2013 19:13
Mi opinión es q le queda mucho por contar, y como ejemplo Symfony en donde se convierte en algo serio trabajar con PHP, y con las herramientas de rápidez como APC, o Memcache sobre linux, o el trabajo de consola, o el MVC tan sencillo, Twig....
Aunque he de decir que ahora estoy aprendiendo ruby y nodejs, cuando empeze fue el unico lenguaje que comprendi rápidamente como autodidacta no solo de programacion sino de conceptos de backend, bases de datos y servidor.
05/08/2013 11:23
16/09/2019 20:35
01/12/2014 20:20