OT: php te daña la cabeza

Germán Poó Caamaño gpoo en ubiobio.cl
Mie Jul 26 17:41:58 CLT 2006


Respondo en línea respecto del último argumento: "Esto le produce
indigestion a los esquemas "indentacionistas" y considerando que Python
es un lenguaje "indentacionista".

On Wed, 2006-07-26 at 16:17 -0400, Horst H. von Brand wrote:
> Juan Carlos Muñoz Ilabaca <jcmunoz en dcc.uchile.cl> wrote:
> [...]
> > me dan algo más fácil de usar, que me ahorra código y me ahorra el
> > problema típico del cerrado de llaves (que muchos programadores
> > simplificaron con el abrir y cerrar al comenzar un bloque), pero me
> > quitaron las llaves... así que no me sirve...
> 
> El "me ahorro un par de lineas de codigo" es totalmente irrelevante.
> 
> Mi molestia es casos como:
> 
>    if(algo)
>        haga_caso_algo();
>    else if(otro)
>        haga_caso_otro();
>    else 
>        haga_ninguno_de_los_dos();
> 
> vs
> 
>    if(algo)
>        haga_caso_algo();
>    else
>        if(tipo_uno_caso_no_algo) 
>            haga_tipo_uno();
>        else
>            haga_tipo_dos();
> 
> Sintacticamente ambos son iguales, pero en el primer caso veo si es algo u
> otro (o ninguno); en el segundo veo si es algo o no, en caso que no lo sea
> hay una nueva (sub)discriminacion. Logicamente son diferentes.

No hay problema en Python.

> A veces es comodo escribir cosas como:
> 
>    if(ta_bueno) return 0;

En Python también es posible:

     if ta_bueno: return 0

> y no tener que poner lineas extra.
> 
> O tambien el poder decir:
> 
>    x = 0; y = 1; z = 2;
> 
> y no verme forzado "por la indentacion standard" a poner estas tres
> instrucciones que /logicamente/ son una unidad ("asignar las coordenadas
> de...") en tres lineas.

En Python también es posible hacerlo:

     (x, y, z) = (0, 1, 2)

> Tengo la costumbre ademas de separar con lineas en blanco secuencias de
> instrucciones que conforman unidades logicas, p.ej. las lineas que
> actualizan "juntos" los punteros al actualizar una estructura compleja, o
> una secuencia de operaciones que inicializan/actualizan un struct
> particular.  Esto le produce indigestion a los esquemas "indentacionistas"

Suelo hacer lo mismo y en Python es completamente válido poner líneas en
blanco entre medio.  Se entiende que el siguiente bloque continua con la
misma indentación.

IMHO, no es un problema que el lenguaje obligue o no a indentación, al
menos en el caso de Python. Tiendo a pensar que ocurre al intentar
forzarse escribir en un lenguaje X con el estilo de lenguaje Y.

Parafraseando a Peter Norvig (Director de investigación de Google),
puede ocurrir al "aprender la sintaxis" de un lenguaje, pero no a pensar
en "como en usar la sintaxis".  Siendo, no encuentro difícil encontrarse
con tales trabas.

Para los curiosos, la mención que hago de Peter Norvig corresponde a la
nota breve que escribe "Teach Yourself Programming in Ten Years"[1], el
cual no habla de los lenguajes indentados o no.  Pero la cita sigue
siendo válida.

[1] http://www.norvig.com/21-days.html

-- 
Germán Poó-Caamaño
http://www.ubiobio.cl/~gpoo/
Concepción - Chile



Más información sobre la lista de distribución Linux