jueves, 27 de septiembre de 2007

Cosas raras en PHP

PHP es un lenguaje que si tiene algo que pueda definirlo se llama inconsistencia. Es un lenguaje puramente inconsistente y lleno de cosas un tanto extrañas.
Podemos hablar de que cada base de datos se maneja de forma diferente, las funciones para mysql son totalmente diferentes que las de oracle por ejemplo.
Cada conjunto de funciones tiene un aspecto diferente lo que lo hace algo caótico. Eso entre otras cosas.
Como ejemplo una muestra de las particularidades de PHP. Podemos parar un parámetro por referencia(E/S) aunque el autor de la función haya especificado que se tiene que pasar por valor (E). Lo cual me deja totalmente perplejo.
Para verlo podemos escribir este sencillo programa:

/**
* La funcion testA pone iguala la variable $A a 5 pero no devuelve nada
*
* @param $A Variable de entrada
*/
function testA($A)
{
$A = 5;
}

//Declaramos el valor de $A
$A = 0;

//Somos decentes y pasamos la variable por valor
testA($A);
echo $A."\n";

//Somos gamberros y la pasamos por referencia
testA(&$A);
echo $A."\n";


Y los valores de salida son:
0
5

Como podemos ver a pesar de que en la función se especifica que el parámetro es por valor hemos forzado que sea pasado por referencia. Un poco fuerte la cosa.

Software con efecto efermedad latente.

Un cliente llama y quiere una nueva caracterísitica para su software para antes de ayer. Al cliente se la ha ocurrido que estaría bien lanzar un producto determinado de forma puntual para un determinado día cercano en el tiempo.
Es una situación habitual en entornos webs, este es un medio dinámico, situaciones como estas se dan con mucha frecuencia y la forma normal de abordarlas es programando a toda prisa con técnicas de 'cut & paste'. Vamos de cortar y pegar , que consiste en tomar trozos de código que se aproximan a lo que queremos juntarlas, modificarlas hasta que parece que todo funciona y cruzar los dedos para que todo funcione ya que hay tanta prisa y cosas que hacer que la fase de comprobación del software se queda en los libros de teoría.
El efecto inmediato con un poco de suerte (que no se de la serie de eventos que hagan que el software explote) es que tenemos un cliente satisfecho con su software errático corriendo en el servidor.
Sin embargo como las peores enfermedades sus efectos quedan latentes hasta que algo hace que estalle la enfermedad y nos de el telele.
Las posibles medidas para superar este problema son pocas y dolorosas. Una de ellas es recomendar al cliente que no se haga, pero esta nunca funciona. Otra es sacar el producto a toda prisa e intentar arreglarlo después, pero esto es difícil de hacer y de cobrar.
Lo único que cabe esperar es que al final la experiencia termine por hacer que tanto el desarrollador como para el cliente puedan llegar a un punto donde la improvisación quede a un lado para hacer las cosas con un poco de cabeza.