Rodrigo Fuentealba wrote:

[...]

> Puedes dejar la crema en cualquier lenguaje, incluyendo Java... Ni
> siquiera las bases de datos Oracle, que son comerciales y carísimas se
> escapan de esto, entonces, ¿cuál es el objeto de criticar a un lenguaje?

se que Alvaro tiene un sentimiento especial de "odio" con PHP porque le
ha tocado relacionarse con PHP (su interprete) de cerca:

http://projects.commandprompt.com/public/plphp

por eso, aprovecha cada oportunidad que tiene para desahogarse... ;)

-- 
Ricardo Mun~oz A.
Usuario Linux #182825 (counter.li.org)
From [EMAIL PROTECTED]  Fri Oct 20 15:13:23 2006
From: [EMAIL PROTECTED] (Franco Catrin)
Date: Fri Oct 20 15:12:42 2006
Subject: Programar en Linux
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]              ptop13.inf.utfsm.cl>
        <[EMAIL PROTECTED]      i       l.com>
        <[EMAIL PROTECTED]>
        <7d5a202f0610191909w52142947    q2      [EMAIL PROTECTED]>
        <3cd5f0920610192000k2c57d340rcc6fc0a4fbb7       a74     [EMAIL 
PROTECTED]>
        <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>  <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

El vie, 20-10-2006 a las 13:00 -0300, Ricardo Mun~oz A. escribió:
> Franco Catrin wrote:

> > Las pruebas son radicalmente distintas.  En el caso de un lenguaje
> > decente, las pruebas son enfocadas en cosas funcionales, ver si la
> > aplicación hace lo que tiene que hacer.
> >
> > .... en PHP _además_ hay que probar si el _lenguaje_ hace lo que tu
> > necesitas que haga ....
> >   
> 
> tienes algun ejemplo concreto?? (para entender a que te refieres)

Puede ser algo tan simple como esto:

    $variable = 400;
    echo $varable + 1;

y no, no hay que ser newbie para cometer un error asi, es muy facil que
ocurra.  Entonces el foco no está en resolver el problema, sino en
además evitar que se te pasen errores como ese.

La unica forma de asegurarse de que no tengas errores de ese tipo es
haciendo pruebas de cosas que no son funcionales!!

Otro ejemplo menos trivial, donde tampoco te ayuda el lenguaje

class Object {
    var $title;
    function setTitle($title) {
        $this->title = $title;
    }

    function display(){
        echo $this->title;
    }
}

function createInstance() {
    global $global;
    $local = new Object();
    $local->setTitle("uno");
    $global = &$local;
}
$global = new Object();
$global->setTitle("cero");
$global->display();
createInstance();
$global->display();

En este caso $global no tendrá acceso al objeto creado dentro de la
funcion, curiosamente queda apuntando al objeto inicial, el que dice
cero.  Si cambio $global = "aaa" y despues hago echo $global desde
fuera, si toma el objeto que estaba dentro de la funcion (seguramente lo
copia).  Pero lo que yo necesito es la referencia al objeto.  Por
ejemplo para que punteros a ese objeto sigan siendo validos, entonces no
sirve la copia.

Otro accidente que puede ocurrir aca y que el lenguaje no va a hacer
nada por mi, es que dentro del metodo display omita $this->, ya que
estoy dentro del scope de la clase, pero para php es $title se convierte
en una variable nueva

Tampoco tienes un manejo seguro de excepciones, obligar al programador
que se haga cargo de ejecutar código en donde puede ocurrir una
excepcion, y darle oportunidad de hacer una limpieza posterior (como lo
bloques try/catch/finally de C# y Java)

... y estos problemas son la punta del iceberg

-- 
Franco Catrin L.       TUXPAN
http://www.tuxpan.com/fcatrin

Responder a