PDF de programación - PHP: anatomía del mal diseño

Imágen de pdf PHP: anatomía del mal diseño

PHP: anatomía del mal diseñográfica de visualizaciones

Publicado el 7 de Junio del 2018
724 visualizaciones desde el 7 de Junio del 2018
2,0 MB
52 paginas
Creado hace 6a (25/06/2013)
PHP: Anatomía

del mal diseño



Compilación de la web y adaptación de Jorge Amado Soria Ramírez. (05/12/2012)







El siguiente documento es una recopilación de varias fuentes de Internet, con una mezcla de
opiniones personales, juicios subjetivos y razones técnicas. Es un poco más largo de lo que sería
deseable para un artículo de divulgación científica, y entiendo que esto atente contra su mismo
propósito. (En las palabras de Winston Churchill: “Este documento, por su propio tamaño, se
defiende a sí mismo del riesgo de ser leído”). Por favor tengan tanta paciencia como sea posible
con el contenido aquí recopilado.



Versiones

Fecha

07/12/2012

Actividad

Creación y publicación del

documento

Autor

Jorge A. Soria

09/12/2012

Modificación de la sección sobre

Jorge A. Soria

allow_url_fopen

11/12/2012

Modificación de la sección sobre

Jorge A. Soria

la configuración con varios

php.ini

04/06/2013

Adicionada sección sobre

Jorge A. Soria

anotaciones



PHP: Anatomía del mal diseño


Introducción

Soy un gruñón. Me quejo de muchas cosas. Hay mucho en el mundo de la tecnología que no me
gusta, y es normal que así sea – la programación es una disciplina muy joven, y ninguno de
nosotros tiene ni la menor idea de lo que estamos haciendo. Se combina esto con la ley de
Sturgeon (el noventa por ciento de todo es basura) y tenemos material para quejarnos toda la
vida.

Pero este no es el caso. PHP no solamente es extraño de utilizar, o no es adecuado para lo que
quiero, o es subóptimo, o contra mi religión. Puedo contar muchas cosas buenas de lenguajes que
evito, y muchas cosas malas de lenguajes que me gustan. PHP es la única excepción.
Virtualmente cada funcionalidad de PHP está rota de alguna manera. El lenguaje, el marco de
trabajo, el ecosistema, todos son simplemente malos. Y no se puede aislar ninguna maldita cosa
que esté dañada, porque el daño es sistémico, por todas partes. Cada vez que trato de reunir una
lista de problemas de PHP, me quedo trabado en una búsqueda en profundidad, descubriendo
más y más pequeñas dificultades triviales.

PHP es una vergüenza, una plaga sobre mi arte. Está tan roto y es tan celebrado por tantos
aficionados que todavía no han aprendido ninguna otra cosa que resulta enloquecedor. Tiene
muy escasas cualidades que lo redimen y en general, preferiría olvidar que existe en absoluto.



Si millones de personas dicen una tontería, sigue siendo una tontería

PHP: Anatomía del mal diseño


Analogía

No puedo siquiera decir exactamente que está mal con PHP, porque… bueno, a ver. Imaginemos
que tenemos, no sé, una caja de herramientas. Un conjunto de herramientas normal, cosas
estándares.

Sacas un destornillador, y ves que es uno de esos
raros, con la cabeza triangular. Bueno, esto no es
muy útil para ti, pero a lo mejor puede servir en
algunas ocasiones.

Sacas el martillo, pero para tu desdicha, ves que
tiene uñas en los dos lados. De todas maneras
todavía es útil, quiero decir, siempre se puede
clavar con el centro de la cabeza si lo sostienes
de lado.

Sacas las pinzas, pero ves que no son serradas,
sino lisas. Eso es menos útil, pero de todas
maneras, con cierto esfuerzo, aún se pueden
apretar tuercas con ellas, así que, como sea.

Y así. Todo en la caja es un poco raro y
particular, pero no lo suficiente para que sea completamente inútil. Y no hay un problema claro
con el conjunto, todas las herramientas están ahí.


Y los carpinteros te enseñan las casas que han construido, donde cada cuarto
es un pentágono y el techo esta al revés. Y cuando tocas a la puerta esta se
cae, y los carpinteros te gritan por romperla.

Ahora imagínense que conocen a millones de carpinteros que usan esta caja, y te dicen “bueno, y
¿cuál es el problema con estas herramientas? ¡Son las únicas que he usado y funcionan
perfectamente!”. Y los carpinteros te enseñan las casas que han construido, donde cada cuarto es
un pentágono y el techo esta al revés. Y cuando tocas a la puerta esta se cae, y los carpinteros te
gritan por romperla.

Eso es lo que está mal con PHP.



Si millones de personas dicen una tontería, sigue siendo una tontería

PHP: Anatomía del mal diseño


Posición

Sostengo que las siguientes cualidades son
importantes para hacer de un lenguaje una
herramienta productiva y útil. PHP las viola
con total abandono. Si no estamos de
acuerdo en que estas cualidades son
cruciales, pues, no me imagino como vamos
a ponernos de acuerdo sobre nada en
absoluto.

 Un lenguaje debe ser predecible. Es un
medio para expresar ideas humanas y
para hacer que una computadora las
ejecute, así que es crítico que la
comprensión humana de un programa
sea correcta.

 Un lenguaje debe ser consistente. Las
cosas similares deben verse similares,
las diferentes deben verse diferentes.
Conocer una parte del lenguaje debería ayudar a conocer el resto.

Un lenguaje debe ser predecible. Es un medio para expresar ideas
humanas y para hacer que una computadora las ejecute, así que es crítico
que la comprensión humana de un programa sea correcta.



 Un lenguaje debe ser conciso. Los nuevos lenguajes surgen para reducir el boilerplate de viejos
lenguajes (después de todo, cualquiera puede escribir código máquina). Un lenguaje debe por
tanto tratar de evitar la introducción de código boilerplate propio.

 Un lenguaje debe ser confiable. Los lenguajes son herramientas para resolver problemas,

deberían minimizar los problemas que introducen. Cualquier pequeña idiosincrasia del mismo
constituye una distracción inútil y enorme.

 Un lenguaje debe ser depurable. Cuando algo sale mal, el programador debe arreglarlo, y

necesita toda la ayuda posible para hacerlo.

Mi posición es la siguiente:

 PHP está lleno de sorpresas: mysql_real_escape_string, E_ALL
 PHP es inconsistente: strpos, str_rot13
 PHP requiere boilerplate: manejo de errores para el API C, ===
 PHP es poco confiable: ==, foreach ($foo as &$bar)
 PHP es opaco: no tiene stack traces por defecto ni para errores fatales, reporte de errores

complejo

Muy importante, no argumento que PHP no sea una herramienta que pueda usarse para hacer grandes
cosas. Eso sería fanatismo y además es una posición refutada por la realidad. Lo que se argumentará con
ejemplos en este documento, es la incapacidad de PHP para fungir como una herramienta de desarrollo
válida para aplicaciones robustas; la poca seriedad y madurez de su entorno y sus desarrolladores
promedio; la dificultad del mantenimiento y extensión de las aplicaciones desarrolladas con PHP y
finalmente, la falsedad de los argumentos que mantienen que PHP es una tecnología viable y eficiente
para desarrollos empresariales o académicos sin una base anterior ya existente.


Si millones de personas dicen una tontería, sigue siendo una tontería

PHP: Anatomía del mal diseño


En otras palabras, no digo que no haya condiciones en las cuales PHP no sea la opción más adecuada. Sí
digo que las situaciones en que estén justificadas estas decisiones nunca tienen una base tecnológica,
sino que están condicionadas a razones económicas, personales, o administrativas que no pueden ser
defendidas desde una posición técnica responsable.



Si millones de personas dicen una tontería, sigue siendo una tontería

PHP: Anatomía del mal diseño


Problema

Tengo que decir esto aquí, porque vale la pena repetirlo: PHP
es una comunidad de aficionados. Muy pocas personas que lo
diseñan, que trabajan en él, o que escriben código usándolo
parecen saber lo que están haciendo. Aquellos que sí saben lo
que están haciendo tienden a moverse hacia otras
plataformas, reduciendo la competencia promedio total del
conjunto. Es un caso de ciegos conduciendo ciegos.

Esto es, claramente, una generalización. Por supuesto que
existen buenos desarrolladores que trabajan sobre PHP,
algunos incluso puede que por su propia voluntad. Pero como
los carpinteros de la analogía, las probabilidades de que los
desarrolladores que trabajan con PHP sean principiantes que
no conocen otra herramienta son abrumadoras. Y es lógico,
además. Veamos por qué.

Una persona que quiere hacer un sitio web y tiene
conocimientos suficientes de programación para hacerlo,
puede ver en PHP una panacea. O sea, tenemos un lenguaje
fácil de usar, fácil de aprender, con muchas funciones para todas las tareas más básicas
necesarias para hacer una aplicación web. Es la opción lógica… para construir la aplicación.

PHP es la herramienta adecuada para algunos
trabajos. El problema es que es una herramienta
fea, tosca y torpe que me hace llorar y tener
pesadillas.



Pero, en el software, codificar es una parte necesaria, pero insuficiente, del desarrollo. Más aún a
medida que el producto crece en clientes y código. El desarrollo de software es una actividad
multifacética, compleja, que requiere del esfuerzo de muchas personas o en su defecto, de una
persona con muchas habilidades. Y a medida que aumenta el tamaño (y la importancia) de las
aplicaciones, la importancia de codificar disminuye dramáticamente en favor de otras actividades
que también realizan los desarrolladores: depuración, pruebas, atención al cliente,
documentación. En otras palabras, mientras mayor y más crítico el proyecto, menos importante
es la capacidad del lenguaje de ser sencillo de codificar, y más importante es su capacidad de ser
predecible, robusto y tener un buen soporte para pruebas y despliegue (se podría decir que PHP
es fácil de desplegar, pero más adelante veremos que esto es una opinión subjetiva).


Si millones de personas dicen una tontería, sigue siendo una tontería

PHP: Anatomía del mal diseño


Aquí es donde se ve el problema con
PHP. Es tan sencillo de aprender que
codificar está al alcance de muchas
personas. Personas
  • Links de descarga
http://lwp-l.com/pdf11663

Comentarios de: PHP: anatomía del mal diseño (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad