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